كيف كتبت أطروحة الماجستير في الرؤية الحاسوبية

في هذه المقالة ، سأواصل موضوع رؤية الكمبيوتر.



انظر مقالات سابقة: بسيطة اعتراف الحركة خوارزمية و خوارزمية للعثور على النزوح من الكائنات في الصورة . اسمحوا لي أن أذكركم بأنني كنت متحمسًا لكتابة هذه المقالات من حقيقة أنه عندما بدأت العمل على أطروحة الماجستير الخاصة بي حول "تحليل البنية المكانية للصور الديناميكية" ، واجهت مشكلة أنه من الصعب جدًا العثور على أي أمثلة جاهزة للخوارزميات للتعرف على الصور والأشياء المتحركة. في كل مكان ، سواء في الأدب أو على الإنترنت ، هناك نظرية عارية واحدة فقط. لقد مر وقت طويل منذ ذلك الحين ، تمكنت من الدفاع عن أطروحتي بنجاح والحصول على دبلوم أحمر ، والآن أكتب لأشارك تجربتي.



لذلك ، عندما بدأت العمل على أطروحاتي ، كانت معرفتي في مجال رؤية الكمبيوتر صفرًا. من أين بدأت؟ من أبسط التجارب على الصور الموضحة في المقالات أعلاه. لقد كتبت خوارزميتين بدائيتين ، إحداهما أظهرت لي في شكل نقاط حيث توجد الأشياء المتحركة ، والثانية عثرت على جزء من الصورة في صورة أكبر (عملت ، بالطبع ، ببطء).



ماذا بعد؟ مزيد من الانسداد. كانت مهمتي هي أن تتنقل المركبة الجوية بدون طيار من خلال التصوير الجوي أو تتبع سيارة تتحرك على طول الطريق. ولم يكن لدي أي فكرة عن كيفية بدء المهمة. ماذا بدأت أفعل؟ اقرأ النظرية. وتقول النظرية إن رؤية الكمبيوتر تنقسم إلى المراحل التالية:



  1. المعالجة المسبقة للصور (إزالة الضوضاء ، وتحسين التباين ، والقياس ، وما إلى ذلك).
  2. البحث عن التفاصيل (الخطوط والحدود ونقاط الاهتمام)
  3. الكشف والتجزئة.
  4. معالجة عالية المستوى.


حسنًا ، حسنًا ، لقد رسمت مخططًا للبرنامج الذي يجب أن يفعل كل هذا:



صورة



باختصار ، اتضح أنه كان عليّ إنشاء شيء عظيم على مستوى الذكاء الاصطناعي. حسنًا ، سأحاول إنشائه. ألتحق ببرنامج Visual Studio وأبدأ في النحت في C #. بتعبير أدق ، فراغات الطبقة. بعد ذلك بقليل أدركت ما كنت أهدف إليه….



لذلك ، بدأت في ممارسة الخطوة الأولى. المعالجة. لقد بدأت معها بسبب



  1. هذا هو الأبسط.
  2. هذه هي الخطوة الأولى في القائمة.


بدأت في تطبيق مرشحات مختلفة على الصورة ، لأرى ما حدث. حاولت ، على سبيل المثال ، تطبيق مرشح Sobel:



صورة



إزالة الضوضاء من الصورة باستخدام طريقة Gaussian blur: لقد



صورة



درست التصفية المتوسطة واختيار الحافة: المحاضرة حول رؤية الكمبيوتر من قاعة المحاضرات



صورة



ساعدتني كثيرًا . لذلك ، أصبحت المعرفة أكثر من ذلك بكثير ، ولكن لا يزال من غير الواضح كيفية حل المشكلة. بحلول ذلك الوقت ، تمت مراجعة موضوع ومهمة أطروحة الماجستير عدة مرات ، ونتيجة لذلك تمت صياغتها على النحو التالي: "تتبع مسار الطائرة بدون طيار باستخدام إطارات التصوير الجوي". أي أنني كنت بحاجة إلى التقاط عدد من الصور وإنشاء مسار على طولها.







خطرت لي فكرة وصف الكفاف في شكل خطوط متقطعة (موصوفة بالعديد من المقاطع) ، ثم مقارنة مقدار تغير هذه الخطوط. لكن اتضح أن الخطوط العريضة ، حتى في إطارين متجاورين ، كانت مختلفة تمامًا بحيث لا توجد طريقة لمقارنة مجموعات الخطوط المتقطعة الناتجة بشكل مناسب. حاولت تحسين الخطوط العريضة نفسها باستخدام طرق مختلفة ومجموعاتها:



  • اختيار حافة Canny الكلاسيكية من مكتبة OpenCV
  • خوارزمية محسنة للكشف عن الحواف طورها مشرفي.
  • اختيار الكفاف بالترميز الثنائي.
  • اختيار ملامح عن طريق التجزئة. تم إجراء التجزئة بطرق مختلفة ، على وجه الخصوص ، باستخدام ميزات النسيج.


نتيجة لذلك ، حصلنا على مزيج من الخوارزميات التي عملت ببطء شديد ولكنها لم تقرب ذرة واحدة من النتيجة. تم استخدام بعض أعمالي كمواد لهذه المقالة .



حسنًا ، ثم اقترح المشرف فكرة: من الضروري استخدام نقاط خاصة. بل إنه قدم خوارزمية حول كيفية حساب هذه النقاط الأساسية. يجب أن أقول أن هذه كانت طريقة غير قياسية على الإطلاق. هذا ليس كاشف Harris أو BRISK أو MSER أو AKAZE. على الرغم من أنني حاولت استخدامها أيضًا. ولكن ، كما اتضح ، كان الكاشف الذي اقترحه المشرف يعمل بشكل أفضل. وإليك كيف يعمل. أولاً ، نحسب إعداد الكنتور باستخدام هذه الصيغة:



صورة



صورة



ثم نوجد القيمة القصوى لهذه الدالة. هذه هي النقاط الخاصة. بصراحة ، يمكن أن تكون النقاط من نوعين "قمم" و "حفر". فيما يلي مثال على هذه النقاط في الصورة:



صورة



بعد ذلك ، يتم تحديد 50 نقطة بأقصى استجابة من النقاط التي تم الحصول عليها. لكل هذه النقاط ، يتم بناء المثلثات ، وعدد المثلثات المكونة من هذه النقاط هو:



صورة



حيث k هو عدد النقاط المفردة المشاركة في الحساب. لكل مثلث ، يتم حساب فهرس خاص من 0 إلى 16383. والخطوة التالية هي توزيع المثلثات على مصفوفة خاصة ، حيث يتوافق رقم الخلية مع دليل المثلث. كل خلية في مثل هذه المصفوفة هي قائمة من المثلثات. يتم تجميع هذه المصفوفة من إطارين مقارنين. يتم إجراء المقارنات عن طريق مطابقة كل خلية في المصفوفة بالخلية المقابلة في مصفوفة إطار آخر. في المجموع ، يجب مطابقة 16384 مجموعة ، وهي مهمة مجدية تمامًا لجهاز كمبيوتر في فترة زمنية قصيرة إلى حد ما.



عند مطابقة المصفوفات ، نملأ المصفوفة المطابقة. المصفوفة أفقيًا هي الزوايا بين المثلثات المتطابقة ، والمقياس العمودي هو المقياس ، والذي يتم حسابه على أنه نسبة أطوال أضلاع الأضلاع الطويلة. المقياس والزاوية اللذان تم العثور عليهما هما خلية المصفوفة الأكثر تطابقًا. تم إجراء مقارنة مماثلة لحساب الإزاحة الأفقية والرأسية للصور.

اقرأ المزيد عن هذه الطريقة في المقالة.



وهكذا ، وجدنا الإزاحة الأفقية والعمودية والزاوية وتغير المقياس (أي أن الطائرة بدون طيار ارتفعت أو تنخفض). يبقى الآن كتابة برنامج يحاكي تتبع مسار عبر سلسلة من الإطارات ويرسم هذا المسار بالذات ، ويمكننا القول إن الرسالة جاهزة:



صورة



All Articles