آشنایی با متلب ( پردازش تصویر- بخش پنجم)یکشنبه 07, ژوئن 2020
آشنایی با محیط Matlab
در ادامه آموزش های سایت همیارپروژه برنامه نویسی متلب ارائه خواهد شد .آموزشها از مقدماتی تا پیشرفته ادامه دارد و ما به شما کدنویسی در نرم افزار متلب را یاد خواهیم داد. با ما همراه باشید.
پردازش تصویر در متلب:
رنگی نمودن تصاویر باینری در متلب:
عملیاتی وجود دارد که برای رنگی کردن تصاویر باینری استفاده می شود. مثلا دستور زیر پیکسل های با مقدار صفر را به رنگ قرمز و پیکسل های ۱ را به رنگ آبی تبدیل می کند.
نکته: برای تصاویر intensity می توان تا ۲۵۵ رنگ برای آن تعریف کرد.
حذف ناحیه دلخواه از تصاویر:
تابع roifill
از جمله توابع پرکاربرد و مهم در علم پردازش تصویر است, که از آن جهت حذف ناحیه زائد از تصویر به صورت دلخواه استفاده می شود که برای تصاویر gray scale کاربرد دارد.
دو روش استفاده :
- به صورت دستی و به کمک ماوس
- انتخاب محدوده دلخواه توسط مقادیر سطر و ستون مناسب
در روش اول پس از فراخوانی تصویر اصلی با اجزای این تابع و انتخاب محدوده دلخواه توسط رسم یک چند ضلعی به کمک ماوس , محدوده مورد نظر را تعیین کرده و تصویر نهایی که قسمت انتخاب شده از آن ناحیه حذف شده , مشاهده می شود.
تذکر:
- تصویری که قصد داریم این تابع را بر روی آن اعمال نماییم حتما باید به فرمت gray scale باشد
- در صورتی که از روش اول استفاده نمایید اگر محدوده انتخاب شده مناسب نباشد برای انتخاب محدوده delete و یا دیگر از Back space استفاده می شود.
روش دوم, به این ترتیب عمل می کند که تصویر مورد نظر را فراخوانی می نماید و سپس شماره ردیف و ستون های محدوده ای باید از تصویر اصلی محو شود به صورت بردار داده می شود. که نقاط بردار همان نقاط رئوس چند ضلعی انتخابی خواهد شد.
این تابع در واقع یک تابع درونیابی درون مرزهای چند ضلعی انتخابی ما انجام میدهد تا بتواند ناحیه ای که مورد نظر می باشد را انتخاب نماید و سپس آن را محو کند.
نحوه دیگر این تابع در متلب به صورت زیر می باشد:
در این دستور , BW یک تصویر باینری به همان سایز تصویر I می باشد که به عنوان ماسک استفاده می شود. به این صورت که , نواحی از تصویر I که متناظر با پیکسل های ۱ در تصویر BW می باشند, fill خواهند شد یا به عبارتی دیگر محو می شوند.
اگر چندین ناحیه وجود داشته باشد, roifill یک درونیابی روی هر ناحیه به طور مستقل انجام خواهد داد.
این دستور, باینری ماسک را برای پیکسل هایی که محو می شوند بر می گرداند. در واقع BW برای پیکسل هایی که در نواحی درونیابی شده هستند, مقدار عددی ۱ و برای دیگر نقاط مقدار ۰ را جایگزین می نماید. نحوه دیگر استفاده از این تابع به صورت زیر می باشد.
در این دستور از دو عدد x,y برای ایجاد نمودن یک سیستم مکانی جدید برای محو شدن استفاده خواهد شد.
به این صورت که محتوای دو بردار xi و yi که رئوس چند ضاعی تعیین شده را انتخاب می نمایند, را از این دو عدد کم می نمایند و در مختصات جدید درونیابی را انجام خواهد داد.
تابع roipoly در متلب:
تابع دیگری در این زمینه , تابع roipoly می باشد . که این تابع نیز همانند همان دو روش گفته شده مورد استفاده قرار می گیرد.
نحوه عملکرد تا حدودی شبیه تابع roifill می باشد , تنها تفاوت میان این دو تابع در این می باشد که در تابع roifill محدوده انتخاب شده از تصویر محو می باشد بدون اینکه تغییری در سایر قسمت های تصویر اصلی ایجاد شود ,اما تابع roipoly در واقع محدوده انتخاب شده را به صورت ۱ ( رنگ سفید) کنار می گذارد و مابقی محدوده تصویر را به صورت رنگ سیاه نمایش خواهد داد. در اصل می توان گفت این تابع همان ماسک سیاه – سفید , تابع roifill می باشد.
پر کردن ناحیه دلخواه از تصویر در متلب:
در برخی وارد به جهت پردازش تصویر بهتر بر روی تصاویر و افزایش دقت عملیات پردازش لازم می باشد که ناحیه ها و حفره های موجود در تصویر را پر نموده و هم سطح محدوده اصلی تصویر کرد, به کمک تابع bwfill می توان ناحیه
Background تصاویر به فرمت binary را پر می نماید.
شروع عملکرد تابع bwfill از پیکسل (r,c) می باشد و در صورتی که r و c بردارهایی با طول مساوی باشند , عمل پرکردن به صورت موازی انجام خواهد گرفت, از موقعیت C(k) و R(K) .
مقدار عددی n می تواند به صورت ۴ یا ۸ باشد که مشخص کننده connectivity می باشد. هنگامی که عدد ۴ را استفاده نماییم , ۴ اتصال در تصویر foreground وجود دارد ودر صورتی که عدد ۸ استفاده شود, ۸ اتصال در تصویر foreground وجود دارد.
این دستور, تصویر را در صفحه نمایش نشان می دهد و اجازه می دهد که نقطه دلخواه به کمک mouse تعیین شود.
این دستور مشخصات خطی تمام پیکسل های پر شده توسط این تابع را بر می گرداند.
تابع bwfill در واقع تعیین می نماید که کدام پیکسل ها جز حفره ها باشند و آنگاه ارزش عددی پیکسل های حفره را از صفر به یک تغییر می دهد. پیش فرض مقدار n , 8 می باشد. تصویر ورودی حتما باید به فرمت عددی یا منطقی باشد و تصویر خروجی به فرمت منطقی خواهد بود.
در اینجا آشنایی با محیط متلب بخش چهل و سوم به پایان رسیده است و در آموزش های بعدی به مباحث دیگر آموزش متلب می پردازیم. همچنین از شما مخاطبین عزیز سایت همیارپروژه دعوت می کنم که برای انجام پروژه متلب خود آموزش های ما را دنبال نمایید.
نویسنده: زهرا رستمی
دیدگاهتان را بنویسید