Рандомизированное преобразование Хафа - Википедия - Randomized Hough transform
Преобразования Хафа - это методы для обнаружение объекта, важный шаг во многих реализациях компьютерное зрение, или же сбор данных из изображений. В частности, Рандомизированное преобразование Хафа является вероятностным вариантом классического Преобразование Хафа, и обычно используется для обнаружения кривых (прямая линия, круг, эллипс и т. д.)[1] Основная идея преобразования Хафа (HT) состоит в том, чтобы реализовать процедуру голосования для всех потенциальных кривых на изображении, и в конце алгоритм, кривые, которые существуют на изображении, будут иметь относительно высокие баллы голосования. Рандомизированное преобразование Хафа (RHT) отличается от HT тем, что оно пытается избежать проведения вычислительно дорогостоящего процесса голосования для каждого ненулевого пикселя в изображении, используя геометрические свойства аналитических кривых, и, таким образом, повышает эффективность времени и уменьшает объем памяти. требование исходного алгоритма.
Мотивация
Хотя преобразование Хафа (HT) широко используется в обнаружение кривой, у него есть два основных недостатка:[2] Во-первых, для каждого ненулевого пикселя изображения параметры как для существующей кривой, так и для избыточных накапливаются во время процедуры голосования. Во-вторых, массив аккумуляторов (или пространство Хафа) заранее определен эвристическим способом. Чем больше требуется точности, тем выше должно быть определено разрешение параметра. Эти две потребности обычно приводят к большим требованиям к хранилищу и низкой скорости реальных приложений. Поэтому для решения этой проблемы была создана RHT.
Выполнение
По сравнению с HT, RHT использует тот факт, что некоторые аналитический кривые могут быть полностью определены по определенному количеству точек на кривой. Например, прямую можно определить по двум точкам, а прямую эллипс (или круг) можно определить по трем точкам. Случай обнаружения эллипса может быть использован для иллюстрации основной идеи RHT. Весь процесс обычно состоит из трех этапов:
- Подгоняйте эллипсы со случайно выбранными точками.
- Обновите массив аккумуляторов и соответствующие оценки.
- Выведите эллипсы с оценками выше некоторого предопределенного порога.
Подгонка эллипса
Одно общее уравнение для определения эллипсы является:
с ограничением:
Однако эллипс можно полностью определить, если знать три точки на нем и касательные в этих точках.
RHT начинается с случайного выбора трех точек на эллипсе. Пусть они будут X1, ИКС2 и X3. Первый шаг - найти касательные этих трех точек. Их можно найти, построив прямую линию с помощью наименьших квадратов техника для маленького окна соседних пикселей.
Следующим шагом будет поиск точек пересечения касательных. Это легко сделать, решив линейные уравнения, найденные на предыдущем шаге. Тогда пусть точки пересечения равны T12 и т23, середины отрезков прямых и быть М12 И м23. Тогда центр эллипса будет лежать на пересечении и . Опять же, координаты точки пересечения могут быть определены путем решения линейных уравнений, и подробный процесс здесь опущен для краткости.
Пусть координаты центра эллипса, найденные на предыдущем шаге, равны (x0, y0). Затем центр можно перевести в начало координат с помощью и так что уравнение эллипса можно упростить до:
Теперь мы можем найти остальные параметры эллипса: a, b и c, подставив координаты X1, ИКС2 и X3 в уравнение выше.
Накопление
С параметрами эллипса, определенными на предыдущем этапе, аккумулятор массив можно обновить соответственно. В отличие от классического преобразования Хафа, RHT не сохраняет «сетку блоков» в качестве массива аккумуляторов. Скорее, он сначала вычисляет сходство между вновь обнаруженным эллипсом и уже сохраненными в массиве аккумуляторов. Для вычисления сходства можно использовать разные показатели. Пока сходство превышает некоторый предопределенный порог, замените одно в аккумуляторе средним значением обоих эллипсов и прибавьте 1 к его оценке. В противном случае инициализируйте этот эллипс на пустую позицию в аккумуляторе и присвойте ему оценку 1.
Прекращение
Как только оценка одного эллипса кандидата превышает пороговое значение, он определяется как существующий на изображении (другими словами, этот эллипс обнаруживается), и его следует удалить из изображения и массива аккумуляторов, чтобы алгоритм мог быстрее обнаруживать другие потенциальные эллипсы. . Алгоритм завершается, когда количество итераций достигает максимального предела или когда обнаруживаются все эллипсы.
Псевдокод для RHT:[3]
пока (мы находим эллипсы И не достигли максимальной эпохи) { за (фиксированное количество итераций) {Найдите потенциальный эллипс. если (эллипс похож на эллипс в аккумуляторе) тогда Замените единицу в аккумуляторе средним значением двух эллипсов и прибавьте 1 к результату; еще Вставьте эллипс в пустую позицию в аккумуляторе с оценкой 1; } Выберите эллипс с лучшим результатом и сохраните его в таблице лучших эллипсов; Удалите из изображения пиксели лучшего эллипса; Опустошите аккумулятор;}
Рекомендации
- ^ Д.Х. Баллард, "Обобщение преобразования Хафа для обнаружения произвольных форм", Распознавание образов, Том 13, № 2, стр.111-122, 1981
- ^ Л. Сюй, Э. Ожа и П. Култанан, «Новый метод обнаружения кривой: рандомизированное преобразование Хафа (RHT)», Pattern Recog. Lett. 11, 1990, 331-338.
- ^ С. Инверсо, «Обнаружение эллипса с использованием рандомизированного преобразования Хафа», www.saminverso.com/res/vision/EllipseDetectionOld.pdf, 20 мая 2002 г.