Как посчитать количество строк (Hough Trasnform) в OpenCV - PullRequest
3 голосов
/ 08 января 2010

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

Теперь я хочу посчитать эти строки. Выходное изображение показывает 1 или 2 линии над каждым волоском. Я вижу, что каждая линия состоит из маленьких отрезков. И поэтому сложно напрямую получить их общее количество. Есть предложения по этому поводу?

Спасибо, Прадип

Ответы [ 2 ]

0 голосов
/ 09 января 2011

Функция hough должна возвращать вектор в OpenCV2 или CvSeq в OpenCV1. Вы можете легко получить их длину и перебрать их. См. Пример кода в документации OpenCV для получения более подробной информации.

0 голосов
/ 13 января 2010

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

  • реагирует на контуры произвольной формы, а не только на прямые линии;
  • выполняет подавление шума и не максимальное подавление, чтобы минимизировать отклик; и
  • выполняет второе обнаружение с более слабым порогом, чтобы «отследить» или «затвердеть» ребра.

При правильных параметрах может быть возможно уникально определить каждый волос по одной непрерывной линии.

Это реализовано в OpenCV в функции cvCanny(). Поэкспериментируйте со значениями параметров threshold1 и threshold2 (3-й и 4-й аргументы), чтобы поэкспериментировать с обнаружением и отслеживанием.

Что касается фактического подсчета линий, я не уверен, как лучше всего подойти к этому (вывод Canny несколько отличается от вывода преобразования Хафа), но вам может оказаться проще работать с уникальными сплошными ребрами, чем с фрагментированными наборы параметров линии.

...