Как подсчитать количество строк (Hough Trasnform) в OpenCV

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

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

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


person pradeep    schedule 08.01.2010    source источник
comment
Умеете ли вы считать линию роста волос? @прадип   -  person Haresh Chhelana    schedule 10.10.2016


Ответы (2)


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

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

При правильных параметрах он сможет однозначно определять каждый волосок с помощью одной непрерывной линии.

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

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

person ezod    schedule 13.01.2010

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

person alistair    schedule 08.01.2011