На самом деле вам может быть лучше использовать детектор краев Canny. Из вашего описания, кажется, есть несколько ключевых преимуществ по сравнению с преобразованием Хафа:
- реагирует на контуры произвольной формы, а не только на прямые линии;
- выполняет подавление шума и не максимальное подавление, чтобы минимизировать отклик; и
- выполняет второе обнаружение с более слабым порогом, чтобы «отследить» или «затвердеть» ребра.
При правильных параметрах может быть возможно уникально определить каждый волос по одной непрерывной линии.
Это реализовано в OpenCV в функции cvCanny()
. Поэкспериментируйте со значениями параметров threshold1
и threshold2
(3-й и 4-й аргументы), чтобы поэкспериментировать с обнаружением и отслеживанием.
Что касается фактического подсчета линий, я не уверен, как лучше всего подойти к этому (вывод Canny несколько отличается от вывода преобразования Хафа), но вам может оказаться проще работать с уникальными сплошными ребрами, чем с фрагментированными наборы параметров линии.