مشاريع رؤية الحاسوب
حول
يعرض هذا المستودع جميع مشاريع البرمجة (المختبرات) التي عمل عليها محمّد وجان أثناء تسجيلهما في مقرر CSCI437 خلال فصل خريف 2020 في كلية كولورادو للمناجم، ويغطي الفترة من 28 أغسطس 2020 إلى 14 ديسمبر 2020. وفرت هذه المختبرات منصة شاملة لتعلّم Python وOpenCV ومفاهيم رؤية الحاسوب الأساسية.
عن المقرر
حضرت مقدمة في رؤية الحاسوب (CSCI437) خلال فصل خريف 2020. خلال هذا الوقت، قام بالتدريس الدكتور ويليام هوف والدكتور توم ويليامز. CSCI437. إليك الوصف الرسمي للمقرر CSCI437:
(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).
الاعتمادات
هناك سكربتات Python و/أو مقاطع شفرة تم توفيرها من قبل مقرر CSCI437 خلال المحاضرات، في الشرائح، أو عبر Canvas. يُدرّس مقرر CSCI437 في كلية كولورادو للمناجم. تم تنفيذ هذه المختبرات مع الشركاء التاليين:
- جان دوونغ
- محمّد يلماز
وصف المختبرات
المختبر 1
يركز المختبر 1 على أساسيات استخدام OpenCV مع Python. من المتوقع من المشاركين كتابة برنامج Python يقرأ ملف فيديو، ويسقط أربع نقاط تشكّل مربعًا على كل إطار من الفيديو، ويُحاكي تراجع المربع إلى المسافة عن طريق تعديل إحداثي Z لكل نقطة تدريجيًا. بالإضافة إلى ذلك، يجب عرض رقم الإطار على كل إطار، ورفع الفيديو النهائي مع التراكبات الرسومية للتقييم.
المختبر 2
يتعامل المختبر 2 مع تحويلات الصور، مع التركيز بشكل خاص على الدورانات حول المحاور X وY وZ باستخدام اصطلاح “زوايا XYZ الثابتة”. يُكلف الطلاب بحساب مصفوفات الدوران، وحساب مصفوفات التحويل المتجانسة لأوضاع الكاميرا، وإنشاء مصفوفة المعايرة، وإسقاط نقاط على صورة لتشكيل جسم مألوف باستخدام دالة line في OpenCV. يؤكد المختبر على فهم هندسة الكاميرا ومصفوفات التحويل في رؤية الحاسوب.
المختبر 3
المختبر 3 يدور حول مطابقة القالب، حيث يُكلّف الطلاب بتتبع قالب فرعي من الصورة عبر كل إطار من ملف الفيلم باستخدام الارتباط المتقاطع المعياري. تتضمن المهمة السماح للمستخدم باختيار قالب من الصورة الأولى للفيلم، وتتبع هذا القالب عبر الصور التالية، ورسم مستطيلات للإشارة إلى موقع القالب في كل صورة، وإنشاء ملف فيلم إخراج لإظهار هذه المواقع. يُشجّع الطلاب على تجربة قوالب مختلفة لفهم أيها يسمح بأفضل تتبع ولماذا، ومناقشة درجات الارتباط الملحوظة عندما تُحدد التطابقات بشكل صحيح.
المختبر 4
يركز المختبر 4 على تجزئة الألوان باستخدام فضاء ألوان HSV، وهي تقنية نوقشت في المحاضرات لفعاليتها في معالجة الصور الملونة. يُكلّف الطلاب بتطبيق عمليات العتبة لتجزئة بكسلات علامات التوقف من الصور المقدمة، باستخدام برنامج Python/OpenCV. تتطلب المهمة العثور على قيم عتبة تكشف أفضل عن بكسلات علامة التوقف، وإجراء عمليات مورفولوجية لتنظيف النتيجة، وتقديم الصور المجزأة مع برنامج Python والمعلمات المستخدمة للعتبة والعمليات المورفولوجية.
المختبر 5
يتضمن المختبر 5 مهمة إدراج نسيج صورة جديد في منطقة محددة من صورة موجودة بطريقة تجعل الإسقاط يبدو صحيحًا. تُعرف هذه العملية باستبدال السطح المستوٍ، وتطلب من الطلاب استخدام تحويل إسقاطي (homography) لرسم صورة جديدة على منطقة مستوية من صورة موجودة. يؤكد المختبر على التطبيق العملي للـ homography لتعديل محتوى الصورة مع الحفاظ على صحة المنظور. من المتوقع أن يقدّم الطلاب الصورة الأصلية، والصورة بعد استبدال النسيج، والصورة المدمجة، وبرنامج Python الخاص بهم كجزء من تسليم المختبر.
المختبر 6
يُرشد المختبر 6 الطلاب لاكتشاف وحساب الوضع (pose) لهدف مكوّن من خمس دوائر متحدة المركز ذات تباين (CCCs) في الصورة. تتضمن المهمة استخدام OpenCV لاكتشاف أهداف CCC، وترتيبها بشكل صحيح، وحساب الوضع باستخدام دالة solvePnP() في OpenCV، ورسم محاور الإحداثيات والوضع على الصورة. يؤكد المختبر على تطبيق مفاهيم مثل اكتشاف الهدف، وتقدير الوضع، وتنسيق المخرجات البصرية في رؤية الحاسوب.
المختبر 7
يركز المختبر 7 على اكتشاف ومطابقة ميزات SIFT بين الصور. الهدف هو تحديد التطابقات الصحيحة لميزات SIFT من صورة إلى أخرى وتحليل دقة هذه التطابقات. يتضمن المختبر استخدام كود Python والصور المعطاة من مجموعة بيانات، وضبط معلمات الخوارزمية لتحسين اكتشاف التطابقات، وحساب مقاييس الدقة والاسترجاع لتقييم أداء عملية مطابقة الميزات. يُطلب من الطلاب تقديم برنامج Python والقيم المحسوبة للدقة والاسترجاع لإعدادات معلمات مختلفة.
المختبر 8
يركز المختبر 8 على اكتشاف الأشياء باستخدام مطابقة الميزات وتلائم التحويل الأفيني لاكتشاف وتراكب الأشياء من صورة تدريب onto صورة استعلام. يتضمن المختبر اكتشاف الكائن في سيناريوهات مختلفة، وضبط عتبة عدد التطابقات inlier لتقليل الإيجابيات الكاذبة، وحساب مقاييس الدقة والاسترجاع والدقة الكلية لتقييم أداء نظام كشف الكائنات. من المتوقع أن يقوم الطلاب بتعديل وتشغيل كود Python المقدم، وتحليل أداء النظام تحت ظروف مختلفة، وتقديم نتائجهم والكود المعدّل.
المختبر 9
يتضمن المختبر 9 وضع نقاط تعليق توضيحية على كائن داخل صورة تدريب وعرض تلك النقاط تلقائيًا بشكل صحيح على الكائن في صور الاستعلام اللاحقة. يؤكد هذا المختبر على استخراج الميزات، والمطابقة باستخدام اختبار النسبة للتخلص من التطابقات المبهمة، وتركيب تحويل أفيني ثنائي الأبعاد باستخدام RANSAC للتخلص من النقاط الشاذة، وتطبيق التحويل لرسم نقاط التعليق من صور التدريب إلى صور الاستعلام. المهمة الحرجة هي ضبط العتبة لعدد التطابقات inlier لتحقيق توازن بين الإيجابيات والسلبية الكاذبة، مع السعي للوصول إلى أعلى دقة في تصنيف الصور بشكل صحيح.
المختبر 10
المختبر 10 مخصص لاستخدام تحويل هاف لإيجاد مقاطع خطوط وتحديد مجموعات الخطوط المتوازية داخل الصورة. يستخدم التحويل الاحتمالي لهاف عبر دالة cv2.HoughLinesP() في OpenCV لاكتشاف مقاطع الخط الممثلة بنقاط نهايتها. يتضمن المختبر أيضًا تحديد نقاط الاندثار (vanishing points) عن طريق تحليل متجهات الاتجاه لهذه المقاطع الخطية، بهدف فهم اتجاه الخطوط المتوازية في الفضاء ثلاثي الأبعاد كما تظهر في مستوى الصورة ثنائي الأبعاد. يُكلف الطلاب بمعالجة صور الاختبار لإيجاد مقاطع خطوط متوازية، والتجريب بمعلمات لتحسين الاكتشاف، وتقديم نتائجهم مع برنامج Python.
ملاحظات
- ستحتاج إلى حزم Python الخارجية التالية لتشغيل هذه السكربتات/المختبرات: cv2 & numpy.
- قد تتطلب بعض هذه المختبرات استخدام إصدار محدد من cv2. للأسف، لم يتم توثيق المتطلبات، لذا سيتعيّن عليك اكتشاف ذلك بنفسك. إذا اكتشفت ذلك أو واجهت مشكلة، يرجى الإبلاغ عنها عبر نموذج المشاكل.