پروژه‌های بینایی رایانه‌ای

مخزن گیت‌هاب پروژه

درباره

این مخزن همهٔ پروژه‌های کدنویسی (آزمایشگاه‌ها) را که Mehmet و Jean هنگام ثبت‌نام در CSCI437 در طول ترم پاییز 2020 در Colorado School of Mines روی آن‌ها کار کردند، به نمایش می‌گذارد؛ این دوره از 28 اوت 2020 تا 14 دسامبر 2020 را در بر می‌گیرد. این آزمایشگاه‌ها بستری جامع برای یادگیری پایتون، OpenCV، و مفاهیم پایهٔ بینایی رایانه‌ای فراهم کردند.

دربارهٔ کلاس

من مقدمه‌ای بر بینایی رایانه‌ای (CSCI437) را در طول ترم پاییز 2020 گذراندم. در این زمان، دکتر William Hoff و دکتر Tom Williams این کلاس را تدریس کردند. CSCI437. در اینجا توصیف رسمی کلاس برای CSCI437 آمده است:

(I) بینایی رایانه‌ای فرایند استفاده از رایانه‌ها برای به‌دست آوردن تصاویر، تبدیل تصاویر، و استخراج توصیف‌های نمادین از تصاویر است. این درس مقدمه‌ای بر این حوزه ارائه می‌دهد و موضوعاتی مانند تشکیل تصویر، استخراج ویژگی، تخمین مکان، و بازشناسی شیء را پوشش می‌دهد. توانایی طراحی و پروژه‌های عملی مورد تأکید قرار خواهند گرفت و از ابزارهای نرم‌افزاری رایج استفاده خواهد شد. این درس هم برای کسانی که می‌خواهند دربارهٔ این موضوع بیشتر یاد بگیرند و هم برای کسانی که فقط می‌خواهند از تکنیک‌های تصویربرداری رایانه‌ای استفاده کنند، جالب خواهد بود. باید در سطح سال آخر تحصیل باشید. 3 ساعت درس؛ 3 ساعت واحد در هر ترم. پیش‌نیاز: (MATH201 یا MATH334 یا EENG311)،و،MATH332،و،(CSCI200 یا CSCI261).

اعتبارها

اسکریپت‌های پایتون و/یا بخش‌هایی از کد که توسط کلاس CSCI437 در طول درس، در اسلایدها، یا از طریق Canvas ارائه شده بودند وجود دارند. کلاس CSCI437 در Colorado School of Mines ارائه می‌شود. این آزمایشگاه‌ها با شریک‌های زیر انجام شدند:

  • Jean Duong
  • Mehmet Yilmaz

توضیحات آزمایشگاه‌ها

آزمایشگاه 1

آزمایشگاه 1 بر مبانی استفاده از OpenCV با پایتون تمرکز دارد. از شرکت‌کنندگان انتظار می‌رود برنامه‌ای پایتون بنویسند که یک فایل ویدئویی را بخواند، چهار نقطهٔ تشکیل‌دهندهٔ یک مربع را روی هر فریم ویدئو ترسیم کند، و با تنظیم تدریجی مختصات Z هر نقطه، دور شدن مربع به سمت دوردست را شبیه‌سازی کند. علاوه بر این، شمارهٔ فریم باید روی هر فریم نمایش داده شود، و ویدئوی نهایی همراه با پوشش‌های گرافیکی برای ارزیابی بارگذاری شود.

آزمایشگاه 2

آزمایشگاه 2 به تبدیل‌های تصویری می‌پردازد و به‌طور خاص بر چرخش‌ها حول محورهای X، Y، و Z با استفاده از قرارداد «زاویه‌های ثابت XYZ» تمرکز دارد. از دانشجویان خواسته می‌شود ماتریس‌های چرخش را محاسبه کنند، ماتریس‌های تبدیل همگن برای وضعیت‌های دوربین را محاسبه کنند، یک ماتریس کالیبراسیون ایجاد کنند، و نقاط را روی یک تصویر تصویرسازی کنند تا با استفاده از تابع line در OpenCV یک شیء آشنا تشکیل دهند. این آزمایشگاه بر درک هندسهٔ دوربین و ماتریس‌های تبدیل در بینایی رایانه‌ای تأکید دارد.

آزمایشگاه 3

آزمایشگاه 3 دربارهٔ تطبیق الگو است، جایی که از دانشجویان خواسته می‌شود با استفاده از هم‌بستگی متقاطع نرمال‌شده، یک زیرتصویر الگو را در هر فریم از یک فایل فیلم ردیابی کنند. این تکلیف شامل این است که کاربر یک الگو را از اولین تصویر فیلم انتخاب کند، این الگو را در تصاویر بعدی ردیابی کند، مستطیل‌هایی رسم کند تا مکان الگو را روی هر تصویر نشان دهد، و یک فایل فیلم خروجی ایجاد کند تا این مکان‌ها را نمایش دهد. دانشجویان تشویق می‌شوند با الگوهای مختلف آزمایش کنند تا بفهمند کدام‌یک بهترین ردیابی را ممکن می‌کند و چرا، و دربارهٔ امتیازهای هم‌بستگی مشاهده‌شده هنگامی که تطبیق‌ها به‌درستی شناسایی می‌شوند بحث کنند.

آزمایشگاه 4

آزمایشگاه 4 بر بخش‌بندی رنگ با استفاده از فضای رنگی HSV تمرکز دارد؛ روشی که در کلاس‌ها به دلیل اثربخشی آن در کار با تصاویر رنگی مورد بحث قرار گرفت. از دانشجویان خواسته می‌شود با استفاده از یک برنامهٔ پایتون/OpenCV، عملیات آستانه‌گذاری را برای بخش‌بندی پیکسل‌های تابلو ایست از تصاویر ارائه‌شده اعمال کنند. این تکلیف مستلزم یافتن مقادیر آستانه‌ای است که بهترین تشخیص را برای پیکسل‌های تابلو ایست فراهم می‌کنند، انجام عملیات مورفولوژیک برای پاک‌سازی نتیجه، و ارسال تصاویر بخش‌بندی‌شده همراه با برنامهٔ پایتون و پارامترهای آستانه و عملیات مورفولوژیکِ استفاده‌شده است.

آزمایشگاه 5

آزمایشگاه 5 شامل وظیفهٔ درج یک بافت تصویری جدید در یک ناحیهٔ مشخص از یک تصویر موجود به‌گونه‌ای است که برون‌نمایی درست به نظر برسد. این فرایند که جایگزینی صفحه نام دارد، از دانشجویان می‌خواهد از تکنیک‌های تبدیل تصویری (هموگرافی) برای نگاشت یک تصویر جدید روی یک ناحیهٔ صفحه‌ای از یک تصویر موجود استفاده کنند. این آزمایشگاه بر کاربرد عملی هموگرافی برای تغییر محتوای تصویر در حالی که درستی پرسپکتیو حفظ می‌شود تأکید دارد. انتظار می‌رود دانشجویان تصویر اصلی، تصویر با بافت جایگزین‌شده، تصویر ترکیبی، و برنامهٔ پایتون خود را به‌عنوان بخشی از ارسال آزمایشگاه تحویل دهند.

آزمایشگاه 6

آزمایشگاه 6 به دانشجویان دستور می‌دهد تا هدفی را که از پنج دایرهٔ متحدالمرکزِ متضاد (CCC) در یک تصویر تشکیل شده است، شناسایی کرده و وضعیت آن را محاسبه کنند. این وظیفه شامل استفاده از OpenCV برای تشخیص اهداف CCC، مرتب‌سازی صحیح آن‌ها، محاسبهٔ وضعیت با تابع solvePnP() در OpenCV، و ترسیم محورهای مختصات و وضعیت روی تصویر است. این آزمایشگاه بر کاربرد مفاهیمی مانند تشخیص هدف، تخمین وضعیت، و قالب‌بندی خروجی بصری در بینایی رایانه‌ای تأکید دارد.

آزمایشگاه 7

آزمایشگاه 7 بر تشخیص و تطبیق ویژگی‌های SIFT بین تصاویر متمرکز است. هدف این است که تطبیق‌های درست ویژگی‌های SIFT از یک تصویر به تصویر دیگر شناسایی شوند و دقت این تطبیق‌ها تحلیل شود. این آزمایشگاه شامل استفاده از کد پایتون و تصاویر داده‌شده از یک مجموعه‌داده، تنظیم پارامترهای الگوریتم برای بهینه‌سازی تشخیص تطبیق، و محاسبهٔ معیارهای دقت و یادآوری برای ارزیابی عملکرد فرایند تطبیق ویژگی‌ها است. از دانشجویان خواسته می‌شود برنامهٔ پایتون و مقادیر محاسبه‌شدهٔ دقت و یادآوری را برای تنظیمات پارامترهای مختلف تحویل دهند.

آزمایشگاه 8

آزمایشگاه 8 بر تشخیص شیء با استفاده از تطبیق ویژگی و برازش تبدیل آفین برای شناسایی و هم‌پوشانی اشیاء از یک تصویر آموزشی روی یک تصویر پرس‌وجو تمرکز دارد. این آزمایشگاه شامل تشخیص شیء در سناریوهای مختلف، تنظیم آستانهٔ تعداد تطبیق‌های درون‌گر برای کاهش مثبت‌های کاذب، و محاسبهٔ معیارهای دقت، یادآوری، و صحت برای ارزیابی عملکرد سامانهٔ تشخیص شیء است. انتظار می‌رود دانشجویان کد پایتون ارائه‌شده را تغییر داده و اجرا کنند، عملکرد سامانه را تحت شرایط مختلف تحلیل کنند، و یافته‌ها و کد تغییر‌یافتهٔ خود را تحویل دهند.

آزمایشگاه 9

آزمایشگاه 9 شامل قرار دادن نقاط حاشیه‌نویسی روی یک شیء درون یک تصویر آموزشی و نمایش خودکارِ درست آن نقاط روی شیء در تصاویر پرس‌وجوی بعدی است. این آزمایشگاه بر استخراج ویژگی، تطبیق با استفاده از آزمون نسبت برای حذف تطبیق‌های مبهم، برازش یک تبدیل آفین دوبعدی با استفاده از RANSAC برای حذف نقاط دورافتاده، و اعمال تبدیل برای نگاشت نقاط حاشیه‌نویسی از تصاویر آموزشی به تصاویر پرس‌وجو تأکید دارد. وظیفهٔ مهم این است که تعداد آستانهٔ تطبیق‌های درون‌گر را طوری تنظیم کنید که بین مثبت‌های کاذب و منفی‌ها توازن برقرار شود، با هدف دستیابی به بالاترین دقت در طبقه‌بندی درست تصاویر.

آزمایشگاه 10

آزمایشگاه 10 به استفاده از تبدیل هاف برای یافتن قطعات خط و شناسایی مجموعه‌هایی از خطوط موازی درون یک تصویر اختصاص دارد. این آزمایشگاه از تبدیل هاف احتمالاتی از طریق تابع cv2.HoughLinesP() در OpenCV برای تشخیص قطعات خط که توسط نقاط انتهایی‌شان نمایش داده می‌شوند استفاده می‌کند. این آزمایشگاه همچنین شامل شناسایی نقاط گریز با تحلیل بردارهای جهت این قطعات خط است، با هدف درک جهت‌گیری خطوط موازی در فضای سه‌بعدی همان‌طور که در صفحهٔ تصویر دوبعدی ظاهر می‌شوند. از دانشجویان خواسته می‌شود تصاویر آزمون را برای یافتن قطعات خط موازی پردازش کنند، با پارامترها برای بهینه‌سازی تشخیص آزمایش کنند، و نتایج خود را همراه با یک برنامهٔ پایتون تحویل دهند.

یادداشت‌ها

  • برای اجرای این اسکریپت‌ها/آزمایشگاه‌ها به بسته‌های پایتون شخص ثالث زیر نیاز خواهید داشت: cv2 و numpy.
  • برخی از این آزمایشگاه‌ها ممکن است نیاز داشته باشند از نسخهٔ خاصی از cv2 استفاده کنید. متأسفانه، نیازمندی‌ها مستند نشده بودند، بنابراین باید خودتان این را پیدا کنید. اگر آن را پیدا کردید یا گیر کردید، لطفاً آن را در فرم اشکالات گزارش کنید.