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

Преобразование hough vs Contour для распознавания прямоугольников с перспективой проекции

Я сделал операцию обнаружения прямоугольника с обнаружением контуров и применил многоугольник с OpenCv, чтобы получить расположение прямоугольника перед настройкой проекции перспективы. И он отлично работает. Но некоторые люди в моей группе вместо этого предложили преобразование Хафа. Интересно, есть ли какое-либо преимущество в использовании преобразования Hough для обнаружения прямоугольника.

Обновление: Я пробовал оба метода. В моем примере оба метода отлично работали после обнаружения края Canny. Но так как преобразование Хага создает линии, мы должны принимать несколько вещей, таких как длина линий и возможность подключения строк, и должны делать дополнительные вычисления, такие как поиск линий связи и поиск угловых точек от подключенных линий. Лично мне понравился контурный метод лучше, поскольку его концепция проще. С помощью метода вы просто просматриваете контуры, которые можно аппроксимировать замкнутыми и выпуклыми многоугольниками с 4 углами и отрегулировать полигоны для их перспективных выступов. Это об этом.

4b9b3361

Ответ 1

Какие результаты вы получаете с обнаружением контуров? Есть примеры?

Преобразование Hough должно хорошо работать для IFF обнаружения прямоугольников, вы можете предположить, что стороны прямоугольника являются наиболее заметными линиями вашего изображения. Затем вы можете просто обнаружить 4 самых больших пика в пространстве сушки, и вы получили свой прямоугольник.

Это работает, например, с фотографией белого листа бумаги перед темным фоном.

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

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

Некоторые общие преимущества для преобразования hough с головы:

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

В конце концов, вероятно, это зависит от входных данных. Есть примеры?

Возможно, лучше всего был бы комбинированный подход? видеть Сочетание алгоритма преобразования Hough и алгоритма контура для обнаружения лицензионных номеров транспортных средств

Я сделал несколько экспериментов по использованию преобразования hough для обнаружения прямоугольников некоторое время назад, вы можете увидеть некоторые предварительные результаты здесь: http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=14491&start=9

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

Я бы очень интересовался вашими результатами в сравнении.

(Если вы выполняете коррекцию перспективы, также проверьте пропорции перспективно-деформированного прямоугольника)

Ответ 2

Поиск определения контура с преобразованием hough привел меня к этому SO.

Чтобы помочь будущим поисковикам, этот пост в блоге имеет хорошее пошаговое руководство, чтобы сделать это с помощью opencv:
http://opencv-code.com/tutorials/automatic-perspective-correction-for-quadrilateral-objects/

Концепция:
1. Получите карту края - canny, sobel
2. Обнаружение линий с преобразованием Хафа
3. Получите углы, найдя пересечения между линиями.
4. Проверьте, имеет ли примерная многоугольная кривая 4 вершины с приближенными полями 5. Определите верхний левый, нижний левый, верхний правый и нижний правый угол.
6. Примените преобразование перспективы с помощью метода getPerspectiveTransform, чтобы преобразовать матрицу преобразования и warpPerspective.