به دست آوردن مکمل یک تصویر با دستور imcomplement در متلب :

با استفاده از دستور imcomplement در متلب، می توانیم مکمل یک تصویر را به دست بیاوریم. برای درک مفهوم تصویر مکمل، برایتان یک مثال می زنم. فرض کنید که پیکسل های یک تصویر، با دو عدد 0 و 1 تعریف شده باشند، مثلا عدد 1 ، برای رنگ سفید و عدد 0 ، برای رنگ سیاه. برای به دست آوردن مکمل این تصویر، هر عدد 1 ، به عدد 0 و هر عدد 0 ، به عدد 1 ، تبدیل می شود و در واقع جای دو رنگ سیاه و سفید با هم عوض می شود. در این مثال، تنها دو رنگ سیاه و سفید را داشتیم و بنابراین در تعریف ماتریس مربوط به تصویر، تنها از دو عدد 0 و 1 استفاده می شود.

برای تصاویر با تعداد رنگ بیشتر، تعداد N رنگ خواهیم داشت که باعث می شود در ماتریس مربوط به تصویر، از تعداد N عدد برای تعریف رنگ ها استفاده کنیم. در این حالت، برای محاسبه عدد مربوط به هر پیکسل تصویر مکمل، از فرمول زیر استفاده می کنیم (مقدار عدد مربوط به آن پیکسل را با pixel_number نمایش داده ایم) :

pixel_number= N-pixel_number

به مثال زیر توجه کنید :

مثال :

 

clear all
close all
clcimg_1=imread(‘image.jpg’);
imshow(img_1);img_2=imcomplement(img_1);
figure
imshow(img_2);

نتیجه :

تصویر اصلی :

(matlab) آموزش متلب

تصویر مکمل :

(matlab) آموزش متلب

مشاهده میزان به کار رفته از هر رنگ در یک تصویر با دستور imhist در متلب :

با استفاده از دستور imhist در متلب، می توانیم برای هر تصویر دلخواه، یک هیستوگرام رسم کنیم که در این هیستوگرام، میزان به کار رفتن رنگ های مختلف در تصویر، نمایش داده می شود. به مثال زیر توجه کنید :

مثال :

clear all
close all
clcimg=imread(‘image.jpg’);
img=rgb2gray(img);
imshow(img);figure
imhist(img);

نتیجه :

تصویر :

(matlab) آموزش متلب

هیستوگرام میزان رنگ های به کار رفته در تصویر :

(matlab) آموزش متلب

افزایش کنتراست یک تصویر با دستور histeq در متلب :

دستور histeq در متلب، برای افزایش کنتراست یک تصویر به کار می رود. چنانچه مقادیر مربوط به رنگ های به کار رفته در یک تصویر را مشاهده کنیم (این کار با دستور imhist در متلب، امکان پذیر می باشد)، آنگاه ممکن است که بخشی از رنگ ها، به مقدار زیاد، در تصویر به کار رفته باشند و بخشی دیگر، کمتر در تصویر باشند. افزایش کنتراست، باعث می شود که میزان به کار رفتن رنگ های مختلف، به هم نزدیکتر شود و دیگر تفاوت زیادی که ذکر شد، وجود نداشته باشد. به مثال زیر توجه کنید :

مثال :

clear all
close all
clcimg=imread(‘image.jpg’);
img=rgb2gray(img);
imshow(img);figure
histeq(img);

نتیجه :

تصویر اصلی :

(matlab) آموزش متلب

تصویر پس از افزایش کنتراست :

(matlab) آموزش متلب

مشاهده اطلاعات مربوط به یک تصویر با دستور imfinfo در متلب :

با استفاده از دستور imfinfo در متلب، می توانیم اطلاعات و مشخصات مربوط به یک تصویر را مشاهده کنیم. این اطلاعات عبارتند از : نام فایل تصویر، زمان ساخت فایل تصویر، نوع فایل تصویر، عرض تصویر، طول تصویر و … . به مثال زیر توجه کنید :

مثال :

clear all
close all
clcimfinfo(‘image.jpg’)

نتیجه :

ans =Filename: ‘C:\Users\ali\Desktop\image.jpg’
FileModDate: ’05-Apr-2013 22:49:51′
FileSize: 62837
Format: ‘jpg’
FormatVersion: ”
Width: 482
Height: 599
BitDepth: 24
ColorType: ‘truecolor’
FormatSignature: ”
NumberOfSamples: 3
CodingMethod: ‘Huffman’
CodingProcess: ‘Sequential’
Comment: {}

پردازش عکس های با پسوند bmp در متلب :

فرض کنید که یک عکس با نام myImage.bmp (با پسوند bmp) داریم. ابتدا بد نیست اندازه عکس مورد نظرمان را بررسی کنیم، بنابراین در محیط ویندوز، بر روی عکس، با موس، کلیک سمت راست نموده و گزینه Properties را انتخاب می کنیم. سپس در بخش Details ، می توانیم اندازه عکس را مشاهده کنیم :

پردازش عکس های با پسوند bmp در متلب

همان طور که می دانیم، کوچکترین بخش سازنده عکس را پیکسل می نامیم (که در آن، رنگ، ثابت می باشد)،. عکس فوق دارای اندازه 213 در 161 پیکسل می باشد (یعنی 213 پیکس در جهت افقی داریم و تعداد 161 پیکسل هم در جهت عمودی داریم و بنابراین تعداد کل پیکسل ها برابر 213 ضرب در 161 می باشد). خوب حالا به سراغ نرم افزار متلب می رویم.

برای وارد کردن اطلاعات عکس مورد نظر به درون نرم افزار متلب، دستورات زیر را می نویسیم :

clear all
close all
clcA = imread(‘myImage.bmp’);
A_size = size(A)

با دستورات فوق، اطلاعات مربوط به عکس را در ماتریسی با نام A ذخیره می کنیم. همچنین با دستور size ، اندازه ماتریس A را به دست می آوریم. نتیجه اجرای کد متلب بالا، به صورت زیر می باشد :

A_size =161   213     3

بنابراین ماتریس A ، یک ماتریس سه بعدی است که در بعد اول، دارای اندازه 161، در بعد دوم، دارای اندازه 213 و در بعد سوم، دارای اندازه 3 می باشد. عدد 161 برابر همان تعداد پیکسل در جهت عمودی است و عدد 213 برابر تعداد پیکسل در جهت افقی می باشد، بنابراین دو بعد اول ماتریس A ، برای ارجاع به پیکسل های عکس به کار می روند. اما یک بعد سوم هم داریم که دارای اندازه 3 می باشد، بنابراین ما در ماتریس A ، برای هر پیکسل، 3 مقدار داریم. در واقع، این سه مقدار هستند که رنگ آن پیکسل را مشخص می کنند، پس با تغییر دادن آنها، می توانیم رنگ آن پیکسل را تغییر بدهیم.

چنانچه بخواهیم عکس ذخیره شده در ماتریس A را با نرم افزار متلب نمایش بدهیم، از دستور ؟ استفاده می کنیم :

clear all
close all
clcA = imread(‘myImage.bmp’);
A_size = size(A)imshow(A)

نتیجه :

پردازش عکس های با پسوند bmp در متلب

اکنون کدها را به گونه ای می نویسیم که در ماتریسی با نام B ، بخشی از عکس را داشته باشیم :

clear all
close all
clcA = imread(‘myImage.bmp’);
A_size = size(A)horizontal_start_pixel = 50;
horizontal_end_pixel = 160;
vertical_start_pixel = 10;
vertical_end_pixel = 100;B = zeros(vertical_end_pixel-vertical_start_pixel+1, horizontal_end_pixel-horizontal_start_pixel+1, 3);

for ii = vertical_start_pixel:vertical_end_pixel
for jj = horizontal_start_pixel:horizontal_end_pixel
B(ii-vertical_start_pixel+1,jj-horizontal_start_pixel+1,:) = A(ii,jj,:);
end
end

B=mat2gray(B); % important
imshow(B)

استفاده از دستور mat2gray بسیار مهم است و چنانچه آن را به کار نبرید، عکس با رنگ های متفاوتی نمایش داده می شود که مطلوب نیست.

نتیجه :

پردازش عکس های با پسوند bmp در متلب

مشاهده می کنید که تنها اطلاعات مربوط به بخشی از عکس اصلی در ماتریس B ذخیره شده است.

 جلسات قبلی:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *