در این مقاله به مفهوم پردازش تصویر رقمی (Digital Image Processing) یا DIP میپردازیم. همچنین ماژول دوربین Pixy CMUcam5 که بسیار مناسب پروژه های پردازش تصویر هست رو بصورت کامل معرفی و راه اندازی میکنیم.
در انتهای این مقاله شما یاد خواهید گرفت :
- پردازش تصویر چیست و چطور انجام میشود
- آشنایی با ابزار های مناسب پردازش تصویر
- ماژول دوربین PIXY چیست و چه امکاناتی دارد
- طریقه راه اندازی ماژول دوربین PIXY
همراه من باشید
پردازش تصویر به چه معناست؟
عکسها، فیلمها و به طور کلی تصاویر، علاوه بر ثبت لحظه ای خاطرات ما، کاربردهای دیگهای هم دارند. شاید دوربینهای امنیتی رو در مکانهای عمومی دیده باشید یا رباتهایی که یک خط، شی یا موارد پیشرفتهتر رو ردیابی و شناسایی میکنند، ناخالصیها رو از محصولات در خط تولید جدا میکنند و خیلی از برنامههای مشابه یا حتی غیرمشابه با یسری از محاسبات رو روی تصاویر انجام میدهند. تمام مواردی که الان نام بردیم و بقیه موارد مشابه “پردازش تصویر” نامیده میشوند.
برای اینکه بهتر متوجه بشین، باید درک درستی از ساختار تصاویر داشته باشید. هر تصویر از یک سیگنال با مقادیر پیکسل در هر نقطه از آن تشکیل شده. (پیکسل واحد اصلی یک تصویر که میتونه مقادیر متفاوتی برای روشنایی و یا حتی رنگ داشته باشه، این مقادیر رو “شدت” مینامیم) این سیگنال توسط ولتاژ پیوسته ای که از حسگر بصری منتقل میشه و با برخی فرآیندها مانند “نمونه سازی” رقمی تبدیل میشه. شکل رقمی این داده ها مانند یک آرایه یا ماتریس دو بعدی بصورت مکان و مقدار(X,Y)F هست که یک تصویر رو تشکیل میده. فراموش نکنین که هر ویدیو شامل مجموعهای از تصاویره که با نرخِ مشخصی در یک ثانیه پشت سرهم پخش میشوند.
پس از تشکیل یک تصویر، فرآیند شروع میشه. برای چه هدفی به یک فرآیند نیاز داریم؟ درصورتی که به اطلاعات یک تصویر نیاز داشته باشیم، از بینایی ماشین استفاده میکنیم. بینایی ماشین راهی برای تقلید بینایی انسانه با این تفاوت که بینایی انسان توانایی “یادگیری” و ارائه داده از ورودی های بصری رو داره. بینایی ماشین اساساً در یک محدوده هست که به رایانه این امکان رو میده تا درک سطح بالایی از تصاویر یا فیلمها، حتی برای استفاده در لحظه(real-time)، به دست بیاره. پردازش تصویر هم بخشی از این فرایند هست.
چطور پردازش تصویر انجام بدیم؟
اگر به یک برنامه روباتیک برای پردازش تصویر فکر کنیم، دو راه بوجود میاد:
- انتخاب یک ماژول معمولی دوربین (ارائه تصویر بدون پردازش روی آن) و سپس استفاده از برنامه نویسی و محاسبات توسط کاربر.
- استفاده از سخت افزارهایی که این فرآیند را برای استفاده سریعتر و آسانتر انجام می دهند. مانند دوربین PIXY و …
راه حل اول: نرم افزارهای مختلفی مانند MATLAB یا کتابخانه هایی مانند OpenCV برای کدنویسی وجود داره که قبل تر هم به آنها پرداخته ایم.
راه حل دوم: استفاده از یک سخت افزار خاص! مانند دوربین هایی با قابلیت پردازش تصویر که معمولا یک رابط کاربری دارند و نیازی به کدنویسی هم ندارند. به نظر آسونتر میاد، اما به نوعی محدودیتهایی هم ایجاد میکنه چون میتونن دقیقا کاری رو که برای آن مشخص شدهاند انجام بدن. به عنوان مثال، معمولا یک دوربین تشخیص چهره نمیتونه رنگ رو تشخیص بده (شاید با برخی تغییرات در سیستم عامل بتونیم الگوریتم تشخیص رو یک مقداری تغییر بدیم، اما این روش استانداردی نیست!)
معرفی دوربین پردازش تصویر Pixy CMUcam5
PIXY هم جزو ماژول های دوربینی هست که برای پردازش تصویر ساخته شده، الگوریتم تشخیص هم مبتنی بر فیلتر رنگ عمل میکنه. هدف اصلی این دوربین تشخیص رنگها و نامگذاری آنها به عنوان یک شی شناخته شده هست. این دوربین توانایی یادگیری رنگ هایی از ابتدا بهش معرفی کردید رو داره.
بیایید باهم مهم ترین ویژگی های ماژول دوربین PIXY رو بررسی کنیم:
- با استفاده از الگوریتم شناسایی مبتنی بر فیلتر رنگ میتونه رنگ هارو تشخیص بده.
- به راحتی میتونه با میکروکنترلر هایی نظیر Arduino یا Raspberry Pi و کتابخانه ها استفاده بشه.
- دارای پروتکل های ارتباطی مختلف شامل USB, SPI, I2C, UART, AD output.
- تمام قسمت های این دوربین (نرم افزار، سخت افزار و سفت افزار) بصورت متن باز و رایگان قابل دسترس هست.
- نرم افزار های PIXY شامل PIXY Mon و PIXY LEGO میشه.
- این دوربین 7 الگو رو که بهشون Signature هم گفته میشه در کنار هزاران کد رنگی شناسایی میکنه که برای تشخیص مکان ها و اشیا استفاده میشه.
- توانایی ثبت 50 تصویر در ثانیه یعنی بروز رسانی تصویر در هر 20 میلی ثانیه.
این دوربین 6 پایه با کاربرد های متفاوت داره که در جدول زیر میتونید مشاهده کنید:
همچنین برای شناختن طرح پایه های این ماژول میتونید از تصویر زیر کمک بگیرید:
حالا که در مورد PIXY به اندازه کافی میدونید بهتره که ببنیم چطور میتونیم ازش استفاده کنیم.
شروع راه اندازی ماژول دوربین PIXY
تا انتهای مقاله همراه من باشید تا قدم به قدم به راه اندازی ماژول دوربین Pixy بپردازیم:
مرحله اول:
در قدم اول باید یک ماژول PIXY تهیه کنید. PIXY معمولی و PIXY2 دو نسخه از دوربین های PIXY هستند که میتونید یکی از اونها رو تهیه کنید.
مرحله دوم:
آنرا روشن کنید. این بورد برای تغذیه دارای یک درگاه USB هست. میتونیم با اتصال به درگاه USB رایانه یا از طریق دو پایه پشت بورد با باتری (6-10 ولت) این بورد رو تغذیه کنیم.
مرحله سوم:
بورد رو با استفاده از کابل USB به رایانه متصل میکنیم. یک سر کابل به رایانه و سر دیگر به درگاه micro USB بورد PIXY متصل میشه.
مرحله چهارم:
نرم افزار دوربین رو از آدرس زیر دانلود کنید. PIXY Mon برنامه کاربردی PIXY برای لینوکس، مک و ویندوز هست. علاوه بر پیکربندی بورد، این برنامه چیزیو که PIXY میبینه و تشخیص میده رو به ما نشون میده.
مرحله پنجم:
تا اینجای کار، اگر صرفا میخواهید دوربین ببینه و تشخیص بده، لزومی نداره که به میکروکنترلر هایی نظیر آردوینو یا رزبری پای متصل بشه. به عبارت دیگه تشخیص دادن اشیا نیازی به هیچ بورد جداگانه ای نداره. به هر حال، برای آموزش، یک شی با یک رنگ مشخص انتخاب کنید. به دلیل الگوریتم تشخیص فیلتر مبتنی بر رنگ، رنگ و نور محیط میتونه روی نتیجه تأثیر بزاره. در نتیجه، اشیاء سفید، سیاه یا خاکستری رو انتخاب نکنید.
مرحله ششم:
برای شروع آموزش تشخیص، دکمه بالای PIXY رو فشار بدین. ابتدا LED چشمک میزنه و پس از آن یک LED RGB رنگ قسمت مرکزی روشن میشه. یک شی رنگی جلوی دوربین نگه دارید، اگر رنگ LED متناسب با رنگ شی تغییر کرد، یعنی قفل درست عمل میکنه. فاصله بین لنز و جسم باید 6-20 اینچ باشد. راه دوم استفاده از نرم افزار PIXY MON هست. در PIXY MON یک ناحیه از شی رو که انتخاب کنید، بورد شی رو تشخیص میده و انتخاب میکنه.
مرحله هفتم:
حاشیه شی در PIXY mon نشون داده میشه. ببینید که آیا حاشیه بر اساس شی درست تشخیص داده شده یا خیر. یکسری از تنظیمات در configuration میتونه برای تشخیص بهتر بهتون کمک کنه.
مرحله هشتم:
اکنون برای هر “رنگ”، دوربین یک عدد تعیین میکنه. 7 امضا به معنای تشخیص 7 رنگ هست. با استفاده از رنگهای نزدیک به هم، مثلاً برچسبی با رنگهای قرمز-صورتی-آبی میتونید یک شی یا یک مکان رو, برای دوربین تعریف کنید، مثلاً یک برچسب محل درب ورودی رو نشون بده. این میتونه به تشخیص هزاران شی با این دوربین کمک کنه! به این مجموعه رنگ ها “color code” یا CC می گویند. برای تنظیم CC و همچنین امضا ها باید حتما از نرم افزار PIXY mon استفاده کنید.
مرحله آخر:
پس از یک آموزش موفق، اگر یک میکروکنترلر یا بورد به دوربین متصل بشه، میتونه شی شناسایی شده توسط PIXY رو ارائه بده. اگر از آردوینو استفاده میکنید، از این پایه برای اتصال استفاده کنید. (برای اطلاعات بیشتر اینجا رو کلیک کنید)، سپس کتابخانه PIXY رو از اینجا دانلود کنید، در مسیر Sketch>Include library>Add ZIP library به کتابخانه های آردوینو اضافه کنید. حالا فایل فشرده کتابخانه رو انتخاب کنید. انجام شد! اکنون با طرح پیشفرض PIXY بهتون X (موقعیت) و Y (عرض و طول (اندازه)) شی رو نشون میده. از طرح های دیگه ای هم میتونیم استفاده کنیم مانند زاویه شیب. برای اتصال سایر بوردها میتونید اینجا رو ببینید.
توجه:
قبل تر هم اشاره کردیم که به دو روش میشه به PIXY آموزش داد:
روش اول: استفاده از PIXY بدون نرم افزار PIXY MON، مانند کاری که روبات ها انجام میدهند و به رایانه یا بورد خاصی هم متصل نیستند. اما در این روش چطوری شماره امضا رو تنظیم کنیم؟ PIXY در اولین لحظات آموزش، رنگ LED رو تغییر میده، با کلیک دکمه روی هر رنگ، عدد تعیین میشه. از قرمز به معنی 1 شروع میشه تا انتها که رنگ بنفش و به معنی 7 هست.
روش دوم: تنظیم اعداد فقط با برنامه PIXY MON انجام میشه.
جمع بندی
ما توضیح دادیم که پردازش تصویر چیست و چگونه میتونیم ازش استفاده کنیم. چه راه هایی داریم و از بین سخت افزارهایی که در حال حاضر میتونند به ما کمک کنند، PIXY رو برای توضیح انتخاب کردیم. همچنین در ادامه توضیح دادیم که چطور کار میکنه و برای راه اندازی و استفاده از این دوربین چه کارهایی باید انجام بدین!
حالا میتونین پردازش تصویر رو برای ربات یا پروژه خودتون شروع کنید و از داشتن چشم سوم با رایانه خودتون لذت ببرید.