رسم هیستوگرام تصویر در متلب – راهنمای کاربردی


در این مطلب، روش رسم هیستوگرام تصویر در متلب مورد بررسی قرار میگیرد. این کار کاربردهای زیادی در حوزههای مختلف و به ویژه «پردازش تصویر» (Image Processing) دارد. برای مطالعه بیشتر پیرامون هیستوگرام، مطالعه مطلب «هیستوگرام (Histogram) و نمودارهای چگالی — راهنمای بصری سازی دادههای تک بُعدی در پایتون» توصیه میشود. نمودار هیستوگرام یک تصویر، نموداری است که توزیع شدت را در یک «تصویر شاخصگذاری شده» (Indexed Image) و یا سیاه و سفید نشان میدهد. این نمودار نشان میدهد که هر مقدار شدت چند بار در تصویر به وقوع پیوسته است. با استفاده از قطعه کدی که در ادامه آمده است، نمودار هیستوگرام یک تصویر با استفاده از توابع کتابخانهای متلب (MATLAB) ترسیم میشود.
1% Read an Image in MATLAB Environment
2img=imread('apple.jpg');
3
4% Convert image to grayscale image
5# if read image is an RGB image
6img=rgb2gray(img);
7
8% Show histogram of image
9# using imhist() function
10imhist(img);
میتوان نمودار هیستوگرام یک تصویر را بدون بهرهگیری از توابع کتابخانهای متلب نیز ترسیم کرد. قطعه کدی که در ادامه آمده است، این کار را انجام میدهد. رویکرد مورد استفاده در این روش در ادامه بیان شده است. همچنین، به عنوان مثال یک تصویر ورودی به برنامه داده شده و خروجی آن به صورت هیستوگرام دریافت شده است.
این تصاویر ورودی و خروجی نیز در ادامه آمدهاند.
- فایل تصویر منبع را در یک ماتریس تصویر بخوان.
- اگر تصویر RGB است، آن را به سیاه و سفید تبدیل کن.
- در ماتریس تصویر تکرار کن و تعداد تکرار هر مقدار ممکن برای شدت را محاسبه کن.
- نمودار تعداد تکرارهای محاسبه شده را ترسیم کن.
رسم هیستوگرام تصویر در متلب
1% Read source image file
2img = imread('apple.jpg');
3
4% Convert image to grayscale image
5img=rgb2gray(img);
6
7% get the dimension of the image
8[x, y] = size(img);
9
10
11% Create a frequency array of size 256
12frequency = 1 : 256;
13
14count = 0;
15
16% Iterate over grayscale image matrix
17% for every possible intensity value
18% and count them
19
20for i = 1 : 256
21 for j = 1 : x
22 for k = 1 : y
23
24 % if image pixel value at location (j, k) is i-1
25 % then increment count
26 if img(j, k) == i-1
27 count = count + 1;
28 end
29 end
30 end
31 % update ith position of frequency array with count
32 frequency(i) = count;
33
34 % reset count
35 count = 0;
36
37end
38
39
40n = 0 : 255;
41
42% Display Histogram
43stem(n, frequency);
44
45grid on;
46ylabel('Number of pixels with such intensity levels -->');
47xlabel('Intensity Levels -->');
48title('HISTOGRAM OF THE IMAGE');
ورودی:
خروجی:
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای متلب MATLAB
- آموزش پردازش تصویر در متلب
- مجموعه آموزشهای پردازش تصویر و ویدئو
- رنگآمیزی گراف به روش حریصانه — به زبان ساده
- الگوریتم دایجسترا (Dijkstra) — از صفر تا صد
- الگوریتم پریم — به زبان ساده
^^
سلام من این دستور رو وارد مطلب کردم اما ازم ایراد گرفت ممنون میشم راهنمایی کنین .