سؤال

نظرت ونظرت. هل يعرف أي شخص كيفية تتبع النقط من Aforge؟ أعلم أنهم لم يتم تنفيذه ، لكنني سأحتاج حقًا إلى استخدام Aforge بسبب بقية الكود الذي أستخدمه. رأيت بعض الإشارة إلى تصفية Kalman ولكني أحتاج إلى بعض التنفيذ وليس النظريات.

TNX ، v.

هل كانت مفيدة؟

المحلول

ستوفر Aforge.net blobcounter اكتشاف Blob ، على الرغم من أنها بسيطة إلى حد ما ولن تدعم النقطات "المكسورة". إذا كنت ترغب في تنفيذ بعض تتبع النقطة البسيطة ، فقد تفكر في بعض الأشياء:

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

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

  3. إذا كنت بحاجة إلى تتبع كائن عالي السرعة ، يصبح ذلك أكثر تحديا. فيما يلي حالة قد تحاول فيها الجمع بين التوظيف مع مطابقة القالب. يمكنك إنشاء قالب يعتمد على عثّر النقطة ومطابقة القالب ضد النقط اللاحقة لتسجيلها بناءً على نمطها وليس فقط حجمها/موقعها. وهذا يتطلب أن تظهر النقطة متسقة بشكل معقول مع مرور الوقت ، مما يعني أن الشكل المادي للمواصفات وظروف الإضاءة يجب أن تظل ثابتة.


التحديث ردا على سؤالك:

فقط لديك بضع دقائق هذا الصباح ، لذلك لا يوجد رمز فعلي ، ولكن الفكرة الأساسية هي:

  1. فقط فكر في النقط أكبر من حجم قابل للتكوين (ربما يتعين عليك تحديد ذلك تجريبياً.)

  2. احتفظ بالمعلومات حول موقعين آخر تم العثور عليهما والأوقات التي تم فيها أخذ عينات منها. دعنا نسمي هذه المتجهات في R2 و P1 و P0 ، في بعض الأحيان T1 و T0.

  3. إذا افترضت أن السرعة تتغير ببطء ، فإن تقديرًا أوليًا في الوقت T2 للموقع الجديد P2 = P1 + (T2-T1)*(P1-P0)/(T1-T0). قد يكون هذا أو لا يكون افتراضًا جيدًا ، لذلك سترغب في التحقق من ذلك عن طريق التقاط كائنك ضمن النطاق المطلوب من الحركات.

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

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

من المحتمل أن ترى كيف يمكن أن يتقدم هذا بشكل أكبر ليشمل تقديرًا للتسارع من الإطارات الحديثة أو دمج السرعة/التسارع من إطارات متعددة إلى استقراء أفضل موقع محتمل للعينة التالية. يمكنك أيضًا البدء في الوثوق بأن التقدير (مع البيانات المتراكمة من الإطارات الحالية والسابقة) أكثر دقة (وربما دقيقة) من القياس الفعلي. في النهاية تنتهي بشيء مثل مرشح Kalman.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top