آموزش ابتدایی پردازش تصویر قسمت اول
همه با نرم افزار متلب آشنا هستیم و حداقل میدانیم که چیز بدردخوری میباشد. پس از صحبت دربارة این میگذریم. اما Image Processing Toolbox از امکانات جنبی این برنامه میباشد. برای اینکه مطمئن شوید که این Toolbox روی نرم افزار متلب شما نصب شده میباشد؛ فرمان ver را اجرا کنید.
این فرمان لیست هرچه که از نرم افزار متلب روی رایانه شما نصب شده میباشد را ارائه میدهد. بین نرم افزار متلب 5.x و نرم افزار متلب 6 برای کار پردازش تصویر تفاوت چندانی وجود ندارد اما مثل همیشه نسخة جدیدتر امکانات بیشتری دارد که البته فعلاً با آنها کاری نداریم.
فرمانهای معرفی شده: ver
چگونه یک فایل تصویر را در نرم افزار متلب باز کنیم
نرم افزار متلب میتواند فایلهای گرافیکی با فرمتهای JPEG, TIFF, GIF, BMP, PNG, HDF, PCX, XWD, ICO, CUR را به عنوان فایل گرافیکی بخواند. مثلاً برای وارد کردن تصویری به نام cameraman.tif به فضای نرم افزار متلب کافی میباشد از فرمان imread استفاده کنیم:
MyImage=imread(‘cameraman.tif’,’tif’);
توجه داشته باشید که فایلی که فرمان خواندنش را میدهید باید برای برنامه قابل دسترس باشد. یعنی یا باید در مسیر (Path) نرم افزار متلب باشد یا اینکه در پروندهای (folder) قرار داشته باشد که در حال حاضر برنامه به آن دسترسی دارد. برای اینکه بدانید که نرم افزار متلب برای پیدا کردن فایلی که فرمانش را دادید کجا را خواهد گشت اینکارها را بکنید: از فرمان path برای اینکه بدانید کدام پروندهها جزء مسیر پیشفرض نرم افزار متلب میباشد و از فرمان dir برای اینکه بدانید که Current Directory چیست؛ استفاده کنید.
خب تا اینجا یک فایل تصویر را در محیط نرم افزار متلب وارد کردهایم. همانطور که میدانیم یک تصویر دیجیتال بر روی کامپیوتر در قالب یک ماتریس ذخیره میشود. پس MyImage مثل همه متغیرهای نرم افزار متلب یک ماتریس میباشد. برای اینکه بدانیم فایل خوانده شده از چه فرمتی میباشد (سیاه سفید، یا Gray Scale یا رنگی) مینویسیم:
imfinfo(‘cameraman.tif’)
این فرمان را اجرا کنید و ببینید چه مینویسد… اما اگر بخواهید بدانید که ماتریس ذخیره شدة MyImage از چه نوعی میباشد کافی میباشد بنویسد: whos و لیست متغییرهای مقیم شده در حافظه و نوع و اندازه آنها را ببینید.
چطور تصویر را ببینیم؟
خب حالا میخواهیم تصویر را که در یک ماتریس ذخیره شده میباشد را ببنیم. بنویسید:
imshow(MyImage)
جالب میباشد نه؟ فکر میکنید اگر بخواهیم دوتا تصویر را با هم ببنیم باید چکار کنیم؟ این را امتحان کنید:
YourImage=imread(‘tire.tif’,’tif’);
figure
subplot(1,2,1), imshow(MyImage), title(‘MyImage’)
subplot(1,2,2), imshow(YourImage), title(‘YourImage’)
با اجرای این فرمانات به آن چیزی که اتفاق افتاد توجه کنید؛ حتماً متوجه میشود که هرکدام از این فرمانات چه کاری میکنند.
فرمانهای معرفی شده: imshow, subplot, title, figure
حالا چکار کنیم؟
کمی نویز به تصویر اضافه میکنیم که بعداً راهی پیدا کنیم حذفش کنیم:
imagen=imnoise(MyImage,’salt & pepper’);
imshow(imagen)
فرمان imnoise نویزهای مختلفی را در اختیار ما میگذارد که به تصویر اضافه کنیم. افزودن نویز برای شبیه سازی اشکالاتی میباشد که ممکن میباشد به هر سیستم پردازش تصویر وارد شود. اینجا فرض کردهایم که نویز «نمک و فلفل» به تصویر اضافه شده میباشد! اسمش عجیب غریب میباشد؟
این نویز را روی تصویر تلویزیونتان اگر آنتن درست تنظیم نباشد حتماً دیدهاید. میدانیم که وقتی نویز داریم با یک فیلتر حذفش میکنیم. فیلتری که انتخاب میکنیم باید مناسب نویزی باشید که روی تصویر سوار شده میباشد. بهترین فیلتر برای نویز «نمک و فلفل» فیلتر میانه میباشد که در Matlab با فرمان Medfilt2 قابل استفاده میباشد:
figure
imagefilt=medfilt2(imagen);
imshow(imagefilt)
برای دستگرمی هم که شده سعی کنید تصویر نویز و تصویر فیلتر شده را در یک صفحة واحد نمایش دهید.
دوباره به تصویر MyImage نگاه کنید. فرض کنید میخواهیم مارک دوربین داخل عکس را از روی شکل آن تشخیص دهیم. بازهم فرض کنید به روشی که بعداً بیشتر راجع بهش صحبت میکنیم فهمیدیم که دوربین داخل این مختصات از تصویر قرار دارد. بین سطر 59 تا 84 و ستون 131 تا 170. پس از همین مختصات تصویر را با فرمان imcrop میبریم.
imagecrop=Imcrop(MyImage, [131 59 39 25]);
در این فرمان مختصات برش را اینطور مینویسم ] ارتفاع, پهنا, حداقل y, حداقل x [. این قسمت بریده شده را نمایش بدهید و ببینید. در مرحله بعد سیستم تشخیصدهندة نوع دوربین احتیاج دارد که اندازه تصویر مقدار خاصی مثلاً 120×100 باشد. پس باید اندازه تصویر برش داده شده را تغییر دهیم:
imagesz=imresize(imagecrop, [120 100]);
تصویر جدید را نگاه کنید. میبینید که به اندازه جدید در آمده میباشد.
فرمانهای معرفی شده: imnoise, medfilt2, imcrop, imresize