تبدیل نوع تصویر به یکدیگر با استفاده از thresholding-بخش سوم
موسسه پایا پروژه به عنوان متصدی انجام پروژه های پردازش تصویر با متلب وظیفه ی خود می داند که در راستای آموزش نرم افزار متلب گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی متلب مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
روش thresholding و یا آستانه گذاری یکی از ابزارهای متلب برای تبدیل انواع تصاویر به یکدیگر است که در آن شدت رنگ تصویر و مقدار هر پیکسل با مقدار یک آستانه مقایسه میشود و در صورتی که از مقدار آستانه کمتر و یا بیشتر باشد با یک مقدار جدید جایگزین میشود. در ادامه تابع adaptthresh و شیوه کار آن با مثال توضیح داده خواهد شد.
در بخش اول و دوم از آموزش پردازش تصویر با متلب، تابع imbinarize و تابع adaptthresh یا تابع محاسبه آستانه پویا، هر کدام با ارائه مثال توضیح داده شدند. در ادامه تبدیل انواع تصاویر به یکدیگر با روش thresholding یا آستانه گذاری و استفاده از otsuthresh توضیح داده خواهد شد. با پایا پروژه همراه باشید.
تبدیل انواع تصاویر به یکدیگر با استفاده از otsuthresh
کاری که تابع otsuthresh انجام میدهد این است که Global histogram threshold، یا آستانه Global هیستوگرام را با استفاده از متد Otsu محاسبه میکند. روش Otsu، به روش تعیین آستانه خودکار نیز معروف است.
اما به طور کلی Global thresholding و یا تعیین آستانه Global، به این معنی است که همه پیکسل هایی که مقدار آنها کمتر از آستانه است، برابر صفر میشود و مقدار پیکسل های بزرگتر از آستانه برای یک پیکسل 8 بیتی، با مقدار 255 جایگزین میشود. در زیر شیوه استفاده از این تابع آمده است.
اما قبل از پرداختن به ادامه مطلب، روش Otsu، آستانه را به گونه ای انتخاب میکند که واریانس پیکسل های سیاه و سفید آستانه را به حداقل برساند.
T در تابع otsuthresh آستانه ای است که محاسبه خواهد شد و counts، نیز هیستوگرامی است که به تابع وارد میشود و مقدار آن نیز بردار اعداد غیر منفی است.
EM نیز effectiveness metric یا معیار اثربخشی است که نشان دهنده اثربخشی آستانه است. که عددی بین صفر و یک است.
شیوه استفاده از تابع adaptthresh
مرحله اول: وارد کردن تصویر
I = imread(‘coins.png’);
imshow(I)
تصویر اولیه
مرحله دوم: محاسبه 16-bin histogram برای تصویر
[counts,x] = imhist(I,16);
stem(x,counts)
محاسبه آستانه برای ارسال به تابع
در متلب، شاخص های Bin به عنوان آرایه ای با همان اندازه X برگردانده میشوند و هر عنصر، نشان دهنده مقدار خاص X است.
مرحله سوم: استفاده از تابع
T = otsuthresh(counts);
مرحله چهارم: استفاده از تابع imbinarize
BW = imbinarize(I,T);
figure
imshow(BW)
نمایش تاثیر استفاده از تابع otsuthresh
برای دریافت آموزش متلب به صورت حرفه ای با ما همراه باشید
منابع: