در پست قبلی، مبحث پردازش تصویر در متلب را آغاز کردیم و با چند تا از توابع کار با تصاویر در آنجا آشنا شدیم . در ادامه در این پست می خواهیم با توابع کاربردی دیگری در این حوزه آشنا شویم .
در گذشته آموختیم که با دستور imread می توانیم یک تصویر را به صورت یک آرایه سه بعدی در متلب ذخیره سازی نماییم . اندازه بعد های اول و دوم از آرایه، به تعداد پیکسل های طول و عرض تصویر است در واقع پیکسل های تصویر ، درایه های آرایه ما هستند و پارامتر RGB هر پیکسل ، درایه بعد سوم آرایه را تشکیل می دهد. از این نکته برای پیمایش پیکسل به پیکسل تصاویر در بسیاری از کاربردها می توانیم استفاده نمایید .
در ادامه به معرفی توابع جدید می پردازیم :
این تابع اطلاعاتی از عکس را در اختیار ما قرار می دهد :
>> imfinfo('a_nature_photography-3.jpg') ans = struct with fields: Filename: 'C:\Users\ehsan_pc\Desktop\a_nature_photography-3.jpg' FileModDate: '03-Jul-2018 22:05:06' FileSize: 92800 Format: 'jpg' FormatVersion: '' Width: 500 Height: 500 BitDepth: 24 ColorType: 'truecolor' FormatSignature: '' NumberOfSamples: 3 CodingMethod: 'Huffman' CodingProcess: 'Sequential' Comment: {}
همانطور که در کدهای بالا می بینید، اطلاعات مختلفی از قبیل طول و عرض و اندازه و آدرس و تاریخ نوع کدگذاری و … از تصویر مورد نظر در اختیار ما قرار می گیرد .
نکته : منظور از دقت عمقی یا BitDepth تعداد بیتهایی است که از حافظه کامپیوتر به هر نقطه(پیکسل) از تصویر اختصاص داده می شود
نکته : منظور از true color که در ویژگی ColorType آورده شده است، یعنی به هر پیکسل یک ارامتر RGB اختصاص یافته است . انواع دیگر تصویر عبارت هستند از : تصویر شدت یا (Intensity Image، (Indexed ، تصاویر باینری .
این تابع یک نمودار هیستوگرام از نحوه روشنایی و شدت رنگ تصویر را در اختیار ما قرار می دهد . برای روشن شدن مطلب ، به مثال زیر در این رابطه توجه کنید :
>> a=imread('a_nature_photography-3.jpg'); b=rgb2gray(a); imshow(b); figure imhist(b);
و نتیجه :
در واقع تصویر بالا ، کنتراست تصویر را نمایش می دهد . هرچه نمودار هیستوگرام پخش شوندگی بیشتری داشته باشد یعنی تصویر کنتراست بالاتری دارد . برای افزایش کنتراست تصویر ، متلب تابع دیگری را ارائه کرده است :
طرز استفاده از این تابع را با توجه به توضیحات بالا با یکدیگر می بینیم :
>> c= histeq(b); >> figure, imshow(c)
شکل سمت راست متغیر c را بعد از افزایش کنتراست نشان داده است .
اما نمودار هیستوگرام به چه شکلی در آمده است؟
همانطور که طبق توضیحات بالا انتظار داشتیم، نمودار در کل بازه پخش شده است .
در مبحث پردازش تصویر در متلب ، توابع دیگری مثل imadjust و adapthisteq در متلب وجود دارند که بر روی کنتراست عکس کار می کنند (امتحان کنید!)
نحوه نگارش کد چرخش تصویر به شکل زیر است :
r=imrotate(image , degree , [‘Option’] , [‘crop’])
پارامتر اول متغیری که تصویر در آن ذخیره شده است را می گیرد . پارامتر دوم میزان چرخش بر حسب درجه است . پارامتر چهارم که اختیاری هم هست ، فقط می تواند مقدار crop را بگیرد و اگر این مقدار را بپذیرد، ابعاد تصویر بعد از چرخش ثابت می ماند اما بخشی تصویر برش میخورد .
در این قسمت از مبحث پردازش تصویر در متلب ، با چند تابع دیگر در این حوزه آشنا شدیم .