رد کردن این محتوا

ساخت برنامه ی تشخیص لبه با OpenCV

با توجه به قولی که در مقالات قبل داده بودم امروز سعی می کنم پروژه ای عملی در زمینه پردازش تصویر با OpenCV برای تشخیص لبه های تصویر ارائه دهم.

مقدمه

یکی از مباحثی که در پردازش تصویر بسیار مورد استفاده قرار میگیرد الگوریتم های تشخیص لبه های تصویر می باشد که الگوریتم های متفاوت و پیچیده ای دارد. کتابخانه ی OpenCV با امکاناتی که در اختیار برنامه نویس قرار می دهد این فرایند را بسیار سریع و ساده کرده است.

در این مقاله با کمک OpenCV قصد داریم برنامه ای بنویسیم که لبه ها را در تصویر شناسایی کند.

پیش نیاز

در این مقاله برای برنامه نویسی از CLion IDE استفاده کرده ایم که برای سیستم عامل های مختلف موجود می باشد و از CMake برای کامپایل استفاده می نماید.

در این مقاله از ورژن ۲.۴ OpenCV استفاده شده است.

اضافه کردن پکیج OpenCV به پروژه با CMake

برای این منظور در پروژه ساخته شده در CLion کافیست به فایل CMakeLists.txt رفته و کدهای پروژه‌ی ساخته شده را به صورت زیر تغییر دهید.

با افزودن کد های بالا و نصب بودن OpenCV سازنده‌ی CMake آن را پیدا کرده و به پروژه اضافه می کند.

الگوریتم تشخیص لبه

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

سورس کد پروژه ی تشخیص لبه

فایل های هدر OpenCV

OpenCV هدر های مختلفی دارد در زیر سه هدری که در این برنامه از آنها استفاده می کنیم را معرفی می کنیم.

  • imgproc : شامل توابع کار با تصاویر می باشد.
  • highgui : شامل توابعی برای ساخت رابط کاربری می باشد.

توضیحات کد تشخیص لبه

۱- تعریف چند متغیر

در OpenCV برای ذخیره ی اطلاعات تصاویر از ماتریس استفاده می شود به همین دلیل چهار متغیر Mat برای نگهداری بخش‌های مختلف برنامه در نظر گرفتیم.

۲- بارگزاری تصویر

برای بارگزاری تصویر از کدهای زیر استفاده می کنیم.

۳- ساخت ماتریس خروجی

برای ذخیره خروجی باید ماتریسی با مشخصات تصویر مبدا بسازیم.

۴- ساخت تصویر سایه سفید از تصویر ورودی

۵- ساخت پنجره

۶- اضافه کردن TrackBar

اضافه کردن Trackbar برای تعیین میزان Threshold رنگ.

۷- بلور کردن تصویر

برای اینکه رنگ‌های نزدیک به هم بیشتر شبیه شوند ابتدا تصویر را بلور می کنیم.

۸- استفاده از تابع Canny

الگوریتم تابع Canny در OpenCV نوشته شده است که می توانیم به روش زیر استفاده کنیم و لبه ها را در ماتریس لبه ذخیره کنیم.

۹- مقدار دهی اولیه تصویر خروجی

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

۱۰- ساخت تصویر خروجی بر اساس تصویر ورودی

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

۱۱- نمایش تصویر خروجی

در آخر برای نمایش تصویر خروجی از کد زیر استفاده می کنیم.

نمونه تصاویر تشخیص لبه

تصویر اصلی

Canny orginal image

تصویر لبه

canny result

منتشر شده آموزش

اولین نظر دهنده باشید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *