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

Определение прямоугольника с преобразованием Хафа

Я пытаюсь реализовать обнаружение прямоугольника, используя Hough transform, основанный на этот документ.

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

Я нашел точки пересечения, решая четыре системы уравнений. Эти точки пересечения лежат в декартовом или полярном координатном пространстве?

4b9b3361

Ответ 1

Для тех из вас, кто интересуется бумагой, это:

Обнаружение прямоугольника на основе оконного преобразования Хафа Клаудио Розито Юнг и Родриго Шрамм.

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

Предполагая, что вы согласны с его обозначением, ваши пики должны быть выражены как:

Пики

Затем вы должны выполнить пиковый анализ, заданный уравнением (3) в разделе 4.3 или

уравнение 3

где T_theta представляет порог angular, соответствующий параллельным линиям и ввести описание изображения здесь - нормализованный порог, соответствующий линиям аналогичной длины.

Ответ 2

Точность пространства Хоуда должна зависеть от двух основных факторов.

Аккумулятор отображает на пространство Хоу. Для прокрутки массива аккумулятора требуется, чтобы аккумулятор разделил пространство Hough в дискретную сетку.

Второй фактор точности в линейном пространстве Hough - это местоположение источника в исходном изображении. Посмотрите на то, что произойдет, если вы выполните развертку \thta для любого изменения в \rho. Вблизи начала координат одна из этих разверток будет охватывать гораздо меньше пикселей, чем промах вблизи краев изображения. Это приводит к тому, что вблизи краев изображения вам нужно гораздо более высокое разрешение \rho\theta в вашем аккумуляторе, чтобы достичь такого же уровня точности при преобразовании обратно в декартово.

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

Некоторые идеи, которые помогут в этом.

  • поместите начало координат на центр изображения. в отличие от используя естественное нижнее левое или верхнее слева от изображения в коде.
  • попробуйте использовать самое близкое изображение, которое вы можете добраться до площади. более вытянутый изображение для данной области, тем больше произносил ловушку разрешения становится на краях
  • Попробуйте разделить изображение на 4/9/16 и т.д. различные аккумуляторы, каждый с происхождение в центре этого суб-изображения. Для соединения потребуется немного накладных расходов результаты каждого аккумулятора вместе для обнаружения прямоугольника, но это должно помочь более равномерно распределить разрешение.
  • Конечным решением было бы увеличить разрешение, линейно зависящее от расстояние от начала координат. это может быть достигнуто с помощью

    (x-a)^2 + (y-b)^2 = \rho^2

circle equation where
    - x,y are the current pixel
    - a,b are your chosen origin
    - \rho is the radius
once the radius is known adjust your accumulator
resolution accordingly. You will have to keep
track of the center of each \rho \theta bin.
for transforming back to Cartesian

Ответ 3

Ссылка на ссылочный документ не работает, но если вы использовали стандартное преобразование hough, то четыре точки пересечения будут выражены в декартовых координатах. Фактически, четыре строки, обнаруженные с помощью траншей hough, будут выражаться с помощью "нормальной параметризации":

rho = x cos(theta) + y sin(theta)

поэтому у вас будет четыре пары (rho_i, theta_i), которые идентифицируют ваши четыре строки. После проверки ортогональности (например, просто сравнивая углы theta_i) вы решаете четыре системы уравнений:

rho_j = x cos(theta_j) + y sin(theta_j)
rho_k = x cos(theta_k) + y sin(theta_k)

где x и y - неизвестные, представляющие декартовы координаты точки пересечения.

Ответ 4

Я не математик. Я готов постоять исправленными...
Из Hough 2)... любая линия на плоскости xy может быть описана как p = x cos theta​​strong > + y sin theta. В этом представлении p - нормальное расстояние, а theta - нормальный угол прямой,... В практических приложениях углы theta и расстояния p квантуются, и мы получаем массив C (p, theta).
от стандартных таблиц математики CRC Аналитическая геометрия, полярные координаты в плоскости... Такая упорядоченная пара чисел (r, theta) называется полярными координатами точки p. Прямые линии: пусть p = расстояние линии от O, w = против часовой стрелки от OX до перпендикуляра через O к линии. Нормальная форма: r cos (theta-w) = p. Отсюда заключаем, что точки лежат в полярном координатном пространстве.