Как отобразить четкий результат после преобразования Хафа?

У меня есть следующее изображение, полученное после обнаружения края Canny: Результат обнаружения края Canny

После применения к нему преобразования Хафа я получаю такой результат:

введите здесь описание изображения

Это очень хороший результат, но мне нужна только одна линия из каждого пакета, чтобы я мог отобразить, что объект на первой картинке напоминает треугольник. Мое первое решение состояло в том, чтобы рассчитать какую-то «среднюю» линию для каждого пакета. Каждая линия определяется углом и радиусом. Мой способ найти «среднюю» линию для каждого пучка — вычислить среднее значение углов по следующей формуле:

avgTheta = arctan(sum of sines of all thetas/sum of cosines of all theta)

Я рассчитываю средний радиус самым простым способом:

avgRadius = sum of all raduises / number of raduises

Однако линии, которые я получаю, не находятся в центре их пучков.

Может кто-нибудь посоветовать лучшее решение?

Я использую следующую реализацию преобразования Хафа: преобразование Хафа

Всегда есть возможность взять одну строку из каждого набора случайным образом, но мне это не нравится.

Если мой вопрос не ясен, пожалуйста, сообщите мне, чтобы попытаться лучше объяснить проблему.

Заранее спасибо.


person Vassil Kossev    schedule 31.01.2012    source источник
comment
Почему вы используете синус/косинус/арктангенс вместо того, чтобы напрямую усреднять теты? Кроме того, как вы определяете радиус линии?   -  person Jim Clay    schedule 01.02.2012


Ответы (1)


Вы можете попробовать это:

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

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

person Johan    schedule 01.02.2012
comment
Я думал о том, чтобы создать пул, сколько точек из исходного изображения Кэнни содержит каждая из линий Хафа, и, таким образом, выбрать, какие из них использовать. Возможно, это лучший выбор. На самом деле таким образом я могу использовать алгоритм, если на картинке больше одного интересующего объекта. - person Vassil Kossev; 01.02.2012