Обнаружение объекта на изображении на основе геометрической формы - PullRequest
10 голосов
/ 06 марта 2009

У меня есть базовые знания в области обработки изображений, и сейчас я изучаю книгу «Цифровая обработка изображений» Гонсалеса.

Когда известно изображение и приблизительная форма объекта интереса (например, круг, треугольник), Каков наилучший алгоритм / метод, чтобы найти этот объект на изображении?

Объект может быть слегка деформирован, поэтому приближение методом грубой силы не поможет.

Ответы [ 6 ]

7 голосов
/ 05 мая 2009

Вы можете попробовать использовать гистограммы ориентированных градиентов (также называемые гистограммами ориентации краев). Мы использовали их для обнаружения дорожных знаков. http://en.wikipedia.org/wiki/Histogram_of_oriented_gradients и статьи Билла Триггса должны помочь вам начать.

5 голосов
/ 06 марта 2009

Я рекомендую вам использовать преобразование Хафа, которое позволяет вам найти любой заданный шаблон, описываемый уравнением. Более того, преобразование Хафа прекрасно работает и для деформированных объектов.

Алгоритм и сама реализация довольно просты. Более подробную информацию можно найти здесь: http://en.wikipedia.org/wiki/Hough_transform, даже исходный код для этого алгоритма включен на ссылочную страницу (http://www.rob.cs.tu -bs.de / content / 04-training / 06-interactive / HNF .html ).

Надеюсь, это поможет вам.

3 голосов
/ 11 марта 2009

Я бы посмотрел на вашу проблему в два этапа:

  • первый поиск внешней границы вашего объекта : Я полагаю, у вас достаточно контрастное изображение, чтобы вы могли легко получить пороговое значение, чтобы получить двоичное изображение вашего объекта. Вам необходимо извлечь цепочку кода объекта.

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

Вы можете найти описание того, как получить границу вашего объекта из двоичного изображения и способы ее анализа, в Цифровая обработка изображений Гонсалеса, глава 11 .

Я также нашел эту проницательную презентацию по анализу двоичных изображений (PPT) и сценарий Matlab , который реализует некоторые из методов, о которых говорит Гонсалес в DIP.

1 голос
/ 10 ноября 2011

Похоже, профессор Жан Руат из Университета Шербука нашел способ находить объекты на изображениях путем обработки нейтральной проникающей нейронной сети. Его технологическое имя RN-SPIKES , похоже, доступно для лицензирования.

1 голос
/ 27 октября 2010

вы можете специально попробовать «распознавание лиц». Потому что вы знаете, что это конкретная тема. С другой стороны, «распознавание лиц» и т. Д. EmguCV может быть полезен для вас. Это оболочка .Net для библиотеки обработки изображений Intel OpenCV.

1 голос
/ 30 июня 2009

Я настоятельно рекомендую вам использовать OpenCV , это отличная библиотека для компьютерного зрения, которая очень помогает во всем, что связано с компьютерным зрением. Их веб-сайт не очень привлекателен и не полезен, но API действительно мощный.

Книга, которая мне очень помогла, так как в Интернете не загружается документация, - Изучение OpenCV . Документация, которая идет с API, хороша, но не хороша для изучения, как использовать это.

В связи с вашей проблемой вы можете использовать детектор Canny Edge, чтобы найти границу вашего предмета, а затем проанализировать его, или вы можете продолжить и преобразовать Хафа для поиска линий и или кругов.

...