Как обнаружить маленькие капли с помощью EmguCV?

Я пытаюсь отследить положение робота с помощью веб-камеры над головой. Однако, поскольку у меня нет большого доступа к роботу или окружающей среде, поэтому я работал со снимками с веб-камеры.
У робота есть 5 ярких светодиодов, расположенных стратегически, которые достаточно отличаются по цвету от робота и среду, чтобы легко изолировать.
Я смог сделать это с помощью EmguCV, в результате чего получилось бинарное изображение, подобное приведенному ниже. Теперь мой вопрос: как мне получить положения пяти капель и использовать эти положения для определения положения и ориентации робота?

Я экспериментировал с классом Emgu.CV.VideoSurveillance.BlobTrackerAuto, но он упрямо отказывается обнаруживать капли на изображении выше. Будучи немного новичком, когда дело доходит до всего этого, я не уверен, что я мог делать неправильно.
Итак, как лучше всего определить положение капель на изображении выше?


person death_au    schedule 24.02.2011    source источник


Ответы (3)


Я не могу сказать вам, как это сделать, в частности, с emgucv, вам нужно будет перевести вызовы из opencv в emgucv. Для получения больших двоичных объектов и cv::moments, чтобы получить положение больших двоичных объектов ( формула для получения средних точек капель находится в документации cv::moments). Затем вы должны использовать cv::estimateRigidTransform, чтобы получить позицию и ориентации робота.

person etarion    schedule 24.02.2011
comment
Это мне очень помогло, спасибо. К сожалению, я не могу найти аналог emguCV для оценки RigidTransform и понятия не имею, как его назвать... Я буду продолжать искать, но до сих пор вы мне очень помогли. - person death_au; 25.02.2011
comment
@death_au: Не должно быть слишком сложно сделать это самостоятельно, чтобы получить позицию и ориентацию, когда у вас есть 5 позиций. Определите среднюю точку на линии, которая имеет 3 точки, используйте среднее значение из других 4 точек в качестве положения и направление от среднего значения к 5-й точке в качестве ориентации. - person etarion; 26.02.2011
comment
@death_au: Сейчас CvInvoke.cvEstimateRigidTransform(); в Эмгу - person asakura89; 31.07.2012

Я использую библиотеку cvBlob для работы с блобами. Вчера я работал с ним, чтобы обнаружить небольшие капли, и он отлично работает.

person Jorge Vega Sánchez    schedule 24.02.2011

Я написал модуль Python, чтобы сделать именно это.

http://letsmakerobots.com/node/38883#comments

person C. Thomas Brittain    schedule 31.12.2013