ariaieboy / matlab-prac

Repository from Github https://github.comariaieboy/matlab-pracRepository from Github https://github.comariaieboy/matlab-prac

پروژه کارگاه برنامه نویسی مطلب

برنامه اصلی

برنامه اصلی در فایل main.m قرار دارد.

ورودی برنامه یک تصویر ترجیحا برش خورده و بدون اطلاعات اضافی می باشد. که در متغیر image قرار میگیرید.

پس از آن ماسک های مختلفی که برای هر رنگ ایجاد شده است برروی تصویر اعمال میشود و ماسک باینری رنگ مد نظر به همراه ارتفاع میانگین ماسک که جهت محاسبه ترتیب اورینگ ها استفاده خواهد شد برگردانده می شود.

پس از آن با استفاده از ماسک ها زاویه رینگ ها و سپس وجود و یا عدم وجود رینگ ها بررسی می شود و به عنوان تایتل و یا لیبل عکس نتایج نمایش داده خواهند شد.

روش محاسبه ارتفاع میانگین رینگ ها با استفاده از ماسک

ابتدا برروی ماسک یک جمع به صورت ردیفی اعمال میشود تا طول هریک از ردیف های رینگ مشخص شود سپس با استفاده از تابع find ایندکس خانه هایی که مجموع آنها بالاتر از ۰ باشد را محاسبه میکنیم. و میانگین ایندکس این خانه ها برابر میانگین ارتفاع رینگ بر اساس اندازه تصویر میباشد. از این روش در تمامی ماسک ها استفاده شده است.

روش محاسبه ماسک های رنگی سفید و آبی و زرد

ابتدا با استفاده از ابزار colorThresholder برای رنگ های مختلف یک حد مشخص ایجاد شده است و سپس بر اساس شرایط تصاویر هریک از ماسک ها شخصی سازی شده است تا بهترین نتیجه حاصل شود.

شخصی سازی های مشترک

برروی تمامی ماسک ها یک تابع imopen با پنجره مربعی ۵ در ۵ اعمال شده است تا نویز های اضافی ماسک حذف شود و نتیجه نهایی با دقت بالا نمایش داده شود.

شخصی سازی های ماسک سفید

به دلیل فلاش دوربین و نزدیکی رنگ رینگ زرد و پایه به رنگ سفید در ماسک سفید با استفاده از مشخصه های محلی در کنار ماسک رنگی رینگ سفید از دیگر رینگ ها متمایز شده است. ابتدا ریجن های سفید رنگ بر اساس MajorAxisLength که طول بزرگترین محور را در اختیار میگذارند محدود شده اند تا در صورتیکه رینگ سفید وجود نداشت نواحی کوچک رنگ سفید به عنوان رینگ شناسایی نشوند. سپس با استفاده از مقدار Area بزرگترین ناحیه سفید رنگ به عنوان رینگ انتخاب میشود.

معمولا با محدود کردن MajorAxisLength رینگ سفید به درستی تشخیص داده میشود ولی به دلیل افزایش دقت و به دلیل اینکه ماسک سفید رنگ رینگ را به بزرگترین حالت ممکن انتخاب میکند شرط دوم نیز اعمال شده است.

شیوه محاسبه ماسک سیاه

در ماسک سیاه برخلاف دیگر ماسک ها به جای colorThresholder از ابزار imageSegmenter استفاده شده و بر اساس اندازه و شکل مستطیلی طور رینگ مشکی یک سگمنت بر اساس گراف برروی تصویر اعمال شده که با دقت نسبتا بالایی رینگ سیاه را میتواند تشخیص دهد.

تشخیص جهت رینگ سیاه

با استفاده از ماسک رنگ سیاه که با دقت نسبتا بالایی لبه های رینگ سیاه را تشخیص میدهد. طول رینگ محاسبه میشود. بعد از محاسبه طول رینگ با حذف طول های صفر تنها ناحیه شامل رینگ سیاه انتخاب میشود. بیشترین طول در این بازه محاسبه میشود و در صورتیکه این نقطه در نیمه پایین رینگ باشد یعنی رینگ درست قرار گرفته در غیر اینصورت رینگ در جای درست قرار ندارد.

تشخیص زاویه رینگ ها

در بخش تشخیص زاویه ما سه عدد ماسک که متعلق به رینگ های آبی و زرد و سفید می باشد دریافت میکنیم. سپس در هر یک از ماسک ها بزرگترین ناحیه انتخاب میشود و زاویه این ناحیه با استفاده از متغیر Orientation محاسبه می شود. در صورتیکه زاویه یکی از رینگ ها بیشتر از ۱ واحد باشد برنامه خطا اعلام میکند.

تشخیص نبود رینگ

برای این بخش نیز مجددا ماسک مربوط به رنگ رینگ به فانکشن به عنوان متغیر ورودی داده میشود و نتیجه عدم وجود رینگ برگشت داده می شود.

برای تشخیص نبود رینگ ابتدا با استفاده از متغیر های Area و MajorAxisLength مناطق داخل ماسک را محدود میکنیم و سپس بزرگترین ناحیه را میگیریم اگر ناحیه ای برگردانده شده باشد یعنی رینگ وجود دارد و در صورتیکه ناحیه ای در نتیجه محدود سازی برگشت داده نشود یعنی رینگ وجود ندارد.

About


Languages

Language:MATLAB 100.0%