2016-05-27 3 views
1

Я действительно новичок в обработке изображений, поэтому, пожалуйста, извините, что я новичок. Я попытался использовать squares.cpp для обнаружения плакатов (так как они обычно представляют собой прямоугольники) без использования дорогих детекторов функций (например, SIFT). К сожалению, результаты в значительной степени разочаровывают (поскольку это было довольно предсказуемо, результаты ниже).Распознавание плакатов в OpenCV?

На самом деле мне все равно, что обнаружены только плакаты, так как статистически плакаты являются самым большим (или вторым по величине) прямоугольником на изображении (приличная эвристика).

Последнее изображение является результатом этого кода с помощью кода this Hough Transofrm (что кажется хуже, что работает!).

Любая идея, как улучшить этот код?

enter image description here

[enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

ответ

0

Вы знакомы вообще с преобразованиями hough? Если нет, я настоятельно рекомендую вам прочитать их. here Подход, который я бы взял, так как кажется, что ваши плакаты немного контрастируют с их фонами:

Применить обнаружение крошечного края (подумайте об изменении цвета HSV перед обнаружением края, если обнаружение края rgb дает плохие результаты) изображениям и выполнить прямоугольное преобразование hough по результатам canny. Это извлечет все «прямоугольные» фигуры из вашего изображения. Оттуда вы можете искать функции в выделенных прямоугольниках (текст может быть?), Чтобы еще раз убедиться, что выбранные вами прямоугольники действительно плакаты.

Одно из таких методов заключается в том, что это может не сработать, если изображение плакатов снимается с слишком большим углом, но пока изображение снимается относительно перед плакатом, вы должны быть в порядке.

+0

Я уже пробовал [этот] (http://stackoverflow.com/a/10535006/4480180) код, который использует перекрестную обработку Hough, и кажется, что работает еще хуже (я обновлю вопрос, добавляя результаты, используя его) ! – justHelloWorld

+0

Ahh, поэтому этот код пытается сгенерировать прямоугольник из преобразования линии hough. Процесс преобразования hough был обобщен для любой произвольной формы в этой статье: http://www.sci.utah.edu/~gerig/CS7960-S2010/handouts/Ballard-Generalized-HoughT.pdf Я бы попытался использовать в частности прямоугольное преобразование, в отличие от линейного преобразования – bstadt

+0

Что вы подразумеваете под «специально прямоугольным преобразованием»? Знаете ли вы какую-либо реализацию? – justHelloWorld

Смежные вопросы