Позвольте мне попробовать это ... Я этим летом использовал Hough Transform из OpenCV в C ++, и я никогда не получал хороших результатов с HOUGH_PROBABILISTIC
.
У меня есть общее представление о том, почему стандартное преобразование Хафа иногда не обнаруживает линию, и это может дать вам объяснение, почему это также не работает:
При применении метода HoughLines2
необходимо указать аргумент rho и theta . Теперь, если эти аргументы установлены неправильно (например, ячейки слишком широки друг от друга, тета слишком велики), можно «пропустить» части строк.
Вы сказали, что немного читали, так что вы знаете общую идею. Теперь, если вы попытаетесь представить линию, которая охватывает от (0, 0)
до (500, 1)
. Если вы знаете, как нарисованы прямые цифровые линии, то вы знаете, что это обычно отображается как линии: одна от (0, 0)
до (250, 0)
, а другая от (250, 1)
до (500, 1)
. Если ваш угол Хафа теперь большой (например, больше, чем угол, под которым находится линия), он фактически никогда не «поймает» все эти точки в одной ячейке и в основном обнаружит две линии длины 250, Не просто "немного" поменьше, а на самом деле много. Поскольку HOUGH_PROBABILISTIC
не только требуется, чтобы пиксели попадали в одну и ту же "ячейку", но также требуется, чтобы они были более или менее непрерывными в исходной картинке, это, вероятно, добавляет еще один слой сложности к этой истории.
Другое объяснение, которое может быть применимо, если вы рассмотрите возможность обнаружения только строки сегментов , заключается в том, что минимальная длина определяется не действительным числом пикселей, а количеством пикселей, которые попадают в один и тот же блок. , Теперь, из-за того же, что упомянуто выше, все 77 пикселей могут фактически не быть в корзине, и, следовательно, краткость.
Все это, конечно, просто основной принцип того, что, я думаю, может быть причиной проблемы. Надеюсь, это поможет. Мой совет: попробуйте поиграться с параметрами "rho" и "theta" или иным образом, просто определите нормальные линии. Эти методы реализованы немного лучше в OpenCV, чем в этой версии IMO.