Подтвердить что ты не робот

Обнаружение колес грузовиков

В настоящее время я работаю над проектом, который у нас есть набор фотографий грузовиков, идущих по камере. Мне нужно определить, какой тип грузовика он (сколько у него колес). Поэтому я использую EMGU, чтобы попытаться это обнаружить.

Проблема: я не могу обнаружить колеса, используя обнаружение EMGU HoughCircle, он не обнаруживает всех колес, а также обнаруживает случайные круги в листве.

Итак, я не знаю, что мне следует попробовать дальше, я попробовал реализовать SURF algo, чтобы сопоставить колеса между ними, но это, похоже, не работает, поскольку они не совсем то же самое, есть ли способ, которым я мог бы реализовать "свободный" SURF algo?

Это то, с чего я начинаю.

Это то, что я получаю после обнаружения Hough Circle. Многие ошибочные обнаружения, некоторые из них даже не близки к кругу, а задние колеса по какой-то причине обнаруживаются как одна.

Hough Circles

Можно ли подтвердить, что обнаруженный круг на самом деле является колесом, используя SURF и сопоставляя их между собой? Я немного потерял то, что я должен сделать дальше, любая помощь будет очень признательна.

(извините за плохой английский)

UPDATE

Вот что я сделал. Я использовал отслеживание blob, чтобы иметь возможность находить blob в моем наборе фотографий. Благодаря этому я могу найти движущийся грузовик. Затем я разбиваю прямоугольник блоба на два и беру нижнюю половину оттуда, я знаю, что получаю зону, которая должна содержать колеса, что значительно увеличивает обнаружение. Затем я проведу небольшую проверку интенсивности на колесах, которые я получаю. Поскольку они в целом более черные, я должен получить приличное значение для тех, и может отбросить все, что слишком белое, 180/255 и выше. Я также знаю, что радиус моих кругов не может быть больше половины зоны обнаружения, разделенной на половину.

After dectection

4b9b3361

Ответ 1

В этом ответе я описываю подход, который был успешно протестирован со следующими изображениями:

L0OR9.jpgWleEX.jpg

Конвейер обработки изображений начинается с downsampling входного изображения или выполнения уменьшения цвета для уменьшения количества данных (цветов) на изображении. Это создает меньшие группы пикселей для работы. Я выбрал downsample:

EyrLe.jpgoD8wp.jpg

Второй этап конвейера выполняет gaussian blur, чтобы сгладить/размыть изображения:

mYcLG.jpglkpwM.jpg

Затем изображения готовы к с порогом, то есть к бинаризации:

o4l2h.jpgfh40V.jpg

4-й этап требует выполнения Hough Circles на бинаризованном изображении, чтобы найти колеса:

nOXb6.jpgSmbYU.jpg

Заключительным этапом трубопровода будет нарисовать круги, которые были найдены над исходным изображением:

vE6JB.jpgFGB9A.jpg

Этот подход не является надежным решением. Это только вдохновило вас на продолжение поиска ответов.

Я не делаю С#, извините. Удачи!

Ответ 2

Во-первых, проекции колес - это эллипсы, а не круги. Во-вторых, некоторый фоновой градиент может легко создавать кругподобный объект, поэтому здесь не должно быть неожиданностей. Конечно, проблема с эллипсами состоит в том, что они имеют 5 DOF, а не 3DOF в виде кругов. Обратите внимание, что размерность пространства Hough становится непрактичной. Некоторые обобщенные преобразования Хафа, вероятно, могут решить проблему эллипса за счет множества дополнительных ложных тревожных (FA) кругов. Чтобы противостоять FA, вы должны убедиться, что они действительно являются колесами, принадлежащими грузовику, и ничего больше.

Вероятно, вам нужно начать с определения вашей проблемы с точки зрения объектов и фона, а не обнаружения колес. Это важно, поскольку объекты создают визуальный контекст для обнаружения колес, а анализ фона покажет, насколько легко было бы сегментировать грузовик (объект) на первом месте. Если камера статическая, можно использовать движение для обнаружения фона. Если фон относительно однородный, модели гауссовых смесей его цветов могут помочь устранить значительную часть его.

Ответ 3

Я настоятельно рекомендую использовать: http://cvlabwww.epfl.ch/~lepetit/papers/hinterstoisser_pami11.pdf

и реализация С#: https://github.com/dajuric/accord-net-extensions

(взгляните на образцы)

Этот алгоритм может обеспечить производительность в режиме реального времени, используя более 2000 шаблонов (20-30 кадров в секунду) - так что вы можете покрыть эллипс (проекцию) и круглые формы. Вы можете изменить образец отслеживания вручную (FastTemplateMatchingDemo)

разместив свои собственные двоичные шаблоны (сделайте их в Paint: -))

P.S: Для подавления ложных срабатываний также включается некоторая отслеживание. Ссылка на библиотеку, которую я опубликовал, также содержит некоторые алгоритмы отслеживания, такие как: Discrete Kalman Filter и Particle Filter все с образцами!

Эта библиотека все еще находится в разработке, поэтому есть вероятность, что что-то не сработает. Пожалуйста, не стесняйтесь, отправив мне сообщение.