پردازش تصویر در متلب
::: در حال بارگیری لطفا صبر کنید :::
پردازش تصویر در متلب
www.rozex.rozblog.com
نام کاربری : پسورد : یا عضویت | رمز عبور را فراموش کردم

صفحه اصلیبررسی و آموزش نرم افزار متلب MATLABپردازش تصویر در متلب

تعداد بازدید : 7746
نویسنده پیام
smyt آفلاین
مدیر انجمن

ارسال‌ها : 20
عضويت : 25 /12 /1392
سن : 24
پردازش تصویر در متلب
پردازش تصویر در متلب :باز کردن عکس های درون ویندوز با متلب :فایل های عکس درون ویندوز را به دو روش می توانیم باز کنیم. روش اول این است که فایل در درون خود نرم افزار متلب باز شود که برای مواردی مفید است که بخواهیم با دستوراتی، تغییرات مورد نظر خود را بر عکس اعمال کنیم. روش دوم این است که عکس توسط برنامه ای باز شود که خود ویندوز برای آن نوع فایل تعیین کرده است که این مورد نیز می تواند در ساخت برنامه های کاربردی توسط متلب، مفید واقع شود.در ادامه، دستورات مربوط به این دو روش را شرح خواهیم داد.باز کردن عکس به وسیله خود نرم افزار متلب :چنانچه بخواهیم که عکس به وسیله خود نرم افزار متلب باز شود، باید از دستور open استفاده کنیم. به مثال زیر توجه کنید :مثال : open(\'c:\\1.jpg\')نتیجه :متلب پنجره ای را باز کرده و عکس مورد نظر را نمایش می دهد.باز کردن عکس به وسیله نرم افزارهای ویندوز :چنانچه بخواهیم عکس یا هر فایل دیگر در برنامه ای باز شود که ویندوز برای آن مشخص کرده است (نه در نرم افزار متلب)، باید از دستور winopen استفاده کنیم. به مثال زیر توجه کنید :مثال : winopen(\'c:\\1.jpg\')نتیجه :عکس 1.jpg در برنامه ای که ویندوز برای باز کردن عکس ها مشخص کرده است، باز می شود. دقت کنید که آدرس محل عکس را بین دو علامت \' گذاشته ایم.
وارد کردن عکس های ویندوز به درون متلب :فرض کنید در یکی از درایوهای ویندوز خود، عکسی دارید که می خواهید به وسیله نرم افزار متلب، بر روی آن عکس، تغییراتی را اعمال کنید. مسلما قبل از هر چیز، نیاز دارید که آن عکس را در نرم افزار متلب وارد کنید. برای این منظور می توانید از هر یک از روش های زیر اقدام کنید :روش اول :در پنجره اصلی متلب، بر روی گزینه Open file (به شکل ) کلیک کنید. در پنجره ای که باز می شود، گزینه Files of type برابر All MATLAB files قرار داده شده است، باید این گزینه را به All Files تغییر دهید تا بتوانید هر نوع فایلی را انتخاب کنید (مثلا عکسی با فرمت jpeg). سپس فایل خود را یافته و بر روی گزینه Open کلیک کنید. پنجره ای به شکل زیر باز می شود :در این مرحله، متلب می خواهد اطلاعات عکس شما را در متغیری ذخیره کند. اگر نام عکس شما یک نام مجاز برای متلب باشد، متلب همان نام را برای متغیر انتخاب می کند و اگر نام، غیر مجاز باشد، متلب آن را تغییر می دهد. مثلا اگر عکسی با نام 1.jpeg را انتخاب کرده باشید، متلب نام x1 را برای متغیر انتخاب می کند.شما می توانید بر روی نام انتخاب شده، دو بار کلیک کنید و نامی دیگر را انتخاب نمایید. پس از انتخاب نام مورد نظر خود، بر روی گزینه Finish کلیک کنید تا پنجره بسته شود.برای آن که عکس خود را در متلب مشاهده کنیم، دستور زیر را اجرا می کنیم (برای متغیر با نام x1) : image(x1)
title \'x1\'
axis off
axis imageنتیجه :نرم افزار متلب، پنجره ای را باز کرده و عکس مورد نظرمان را نمایش می دهد.روش دوم : استفاده از دستور imreadدر این روش نیز اطلاعات عکس در متغیری ذخیره خواهد شد و تنها تفاوت با روش قبل این است که باید آدرس عکس مورد نظر را به طور دقیق در دستور imread بنویسید. به مثال زیر توجه کنید :مثال : A = imread(\'c:\\1.jpg\');نتیجه :متلب متغیری با نام A ایجاد می کند که حاوی اطلاعات عکس می باشد. برای مشاهده عکس در متلب، کدهای زیر را اجرا می کنیم : image(A)
title \'A\'
axis off
axis imageنتیجه :متلب پنجره ای را باز کرده و عکس را نمایش می دهد.

تغییر اندازه یک تصویر با دستور imresize در متلب :با استفاده از دستور imresize در متلب، می توانیم اندازه یک تصویر را تغییر بدهیم. با دستور imresize ، می توانیم تعیین کنیم که اندازه تصویر تا چه اندازه بزرگتر یا کوچکتر شود. دستور imresize را می توانیم به چندین روش مختلف به کار ببریم. این روش ها را در ادامه توضیح می دهیم.تغییر اندازه بر اساس ضریبی از اندازه تصویر اولیه :با فرض اینکه اطلاعات تصویر، در متغیر image ذخیره شده باشد، آنگاه چنانچه دستور imresize را به صورت imresize(image,A) به کار ببریم، که در آن A یک ضریب عددی است، آنگاه دستور imresize ، تصویر image را به اندازه ضریب A ، بزرگتر یا کوچکتر می کند. اگر ضریب A بین 0 تا 1 باشد، آنگاه تصویر حاصل، از تصویر image ، کوچکتر خواهد بود و چنانچه ضریب A ، بزرگتر از 1 باشد، آنگاه تصویر حاصل، از تصویر image ، بزرگتر می شود. به مثال زیر توجه کنید :مثال :کدهای زیر را می نویسیم : clear all
close all
clc

image=imread(\'friend.jpg\');
imshow(image)

image_new=imresize(image,0.5)
figure
imshow(image_new)ابتدا تصویری با نام friend.jpg را با دستور imread ، در نرم افزار متلب وارد می کنیم و آن را با دستور imshow ، نمایش می دهیم. سپس با دستور imresize ، اندازه تصویر را به نصف کاهش می دهیم (ضریب برابر با 0.5 انتخاب شده است). در پایان، تصویر حاصل شده (با نام image_new) را با دستور imshow نمایش داده ایم. دستور figure ، برای باز شدن یک پنجره مخصوص شکل جدید است تا در انتها، هر دو تصویر را داشته باشیم.نتیجه :تصویر اولیه به صورت زیر می باشد :و تصویر کوچک شده، به صورت زیر :تغییر اندازه بر اساس تعداد ردیف ها و ستون های ماتریس اطلاعات تصویر ثانویه :می توانیم اندازه تصویر ثانویه را بر اساس تعداد ردیف ها و تعداد ستون های ماتریس مربوط به آن، تعیین کنیم. برای این منظور، باید از دستور imresize ، به صورت imresize(image, [numrows numcols]) استفاده کنیم که در آن، پارامتر numrows برابر تعداد ردیف ها و پارامتر numcols برابر تعداد ستون های مورد نظر ما برای ماتریس مربوط به تصویر ثانویه می باشد. همان مثال قبل را این بار با این روش می نویسیم :مثال :کدهای زیر را می نویسیم : clear all
close all
clc

image=imread(\'friend.jpg\');
imshow(image)

image_new=imresize(image,[200,80])
figure
imshow(image_new)تعداد ستون ها را عمدا، کمتر از تعداد ردیف ها، انتخاب کرده ایم تا تصویر در جهت افقی، فشرده تر شود.نتیجه :تصویر اولیه به صورت زیر می باشد :و تصویر کوچک شده، به صورت زیر :به دست آوردن جمع دو تصویر با دستور imadd در متلب :با استفاده از دستور imadd در متلب، می توانیم دو تصویر را با هم جمع کنیم. منظور از جمع کردن دو تصویر این است که رنگ هر پیکسل تصویر نهایی، از جمع شدن مقدار مربوط به رنگ پیکسل متناظر در دو تصویر اولیه به دست می آید. در واقع چون رنگ هر پیکسل تصویر با یک عدد در متلب ذخیره می شود، با جمع زدن اعداد مربوط به دو تصویر، می توانیم یک تصویر به صورت مجموع آن دو تصویر اولیه بسازیم. باید دقت داشته باشید که اندازه دو تصویر یکسان باشد تا بتوانید از دستور imadd ، برای جمع زدن آن دو، استفاده کنید. به مثال زیر توجه کنید :مثال : clear all
close all
clc

img_1=imread(\'image_1.jpg\');
imshow(img_1);

img_2=imread(\'image_2.jpg\');
figure
imshow(img_2);

img_3=imadd(img_1,img_2);
figure
imshow(img_3);نتیجه :تصویر اول :تصویر دوم :تصویر حاصل از جمع دو تصویر :به دست آوردن تفریق دو تصویر با دستور imsubtract در متلب :با استفاده از دستور imsubtract در متلب، می توانیم یک تصویر را از تصویر دیگر تفریق کنیم. منظور از تفریق دو تصویر این است که رنگ هر پیکسل تصویر نهایی، از تفریق مقدار مربوط به رنگ پیکسل متناظر در دو تصویر اولیه به دست می آید. در واقع چون رنگ هر پیکسل تصویر، با یک عدد در متلب ذخیره می شود، با تفریق اعداد مربوط به دو تصویر، می توانیم یک تصویر به صورت تفریق آن دو تصویر اولیه بسازیم. باید دقت داشته باشید که اندازه دو تصویر یکسان باشد تا بتوانید از دستور imsubtract ، برای محاسبه تفریق آن دو، استفاده کنید. به مثال زیر توجه کنید :مثال : clear all
close all
clc

img_1=imread(\'image_1.jpg\');
imshow(img_1);

img_2=imread(\'image_2.jpg\');
figure
imshow(img_2);

img_3=imsubtract(img_1,img_2);
figure
imshow(img_3);نتیجه :تصویر اول :تصویر دوم :تصویر حاصل از تفریق دو تصویر :به دست آوردن مکمل یک تصویر با دستور 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
clc

img_1=imread(\'image.jpg\');
imshow(img_1);

img_2=imcomplement(img_1);
figure
imshow(img_2);نتیجه :تصویر اصلی :تصویر مکمل :مشاهده میزان به کار رفته از هر رنگ در یک تصویر با دستور imhist در متلب :با استفاده از دستور imhist در متلب، می توانیم برای هر تصویر دلخواه، یک هیستوگرام رسم کنیم که در این هیستوگرام، میزان به کار رفتن رنگ های مختلف در تصویر، نمایش داده می شود. به مثال زیر توجه کنید :مثال : clear all
close all
clc

img=imread(\'image.jpg\');
img=rgb2gray(img);
imshow(img);

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

img=imread(\'image.jpg\');
img=rgb2gray(img);
imshow(img);

figure
histeq(img);نتیجه :تصویر اصلی :تصویر پس از افزایش کنتراست :مشاهده اطلاعات مربوط به یک تصویر با دستور imfinfo در متلب :با استفاده از دستور imfinfo در متلب، می توانیم اطلاعات و مشخصات مربوط به یک تصویر را مشاهده کنیم. این اطلاعات عبارتند از : نام فایل تصویر، زمان ساخت فایل تصویر، نوع فایل تصویر، عرض تصویر، طول تصویر و ... . به مثال زیر توجه کنید :مثال : clear all
close all
clc

imfinfo(\'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: {}

یکشنبه 25 خرداد 1393 - 19:32
ارسال پیام نقل قول تشکر گزارش



برای ارسال پاسخ ابتدا باید لوگین یا ثبت نام کنید.



تمامي حقوق محفوظ است . طراح قالبــــ : روزیکســــ