В настоящее время я работаю с Hough Circles. Существуют ли способы автоматического поиска подходящих параметров для кругов Хафа? Прямо сейчас я просто вручную меняю значения, пока он не нарисует круги правильно.
Opencv: Hough Circles Автоматизация параметров?
Ответы (3)
Я думаю, вам также следует взглянуть на http://www.cse.yorku.ca/~kosta/CompVis_Notes/isophote_curvature.pdf и http://www.science.uva.nl/research/publications/2008/ValentiCVPR2008/CVPR%2008.pdf Это поможет вам найти значения кривизны изофоты для вашего изображения. Кривизна обратно пропорциональна радиусу кривой в точке. После того, как вы рассчитаете значения кривизны изофоты для каждого пикселя, у вас будет диапазон значений радиуса, который вы должны проверить.
Если вы можете автоматически оценить вывод Hough Circles, в большинстве случаев будет достаточно поиска методом грубой силы. Просто переберите все возможности для всех параметров и выберите значения, которые дали наилучший результат.
Если вам нужно ускорить процесс, вы можете уменьшить поиск в пространстве, заблокировав некоторые параметры до значений, которые, как вы уже знаете, работают нормально, или уменьшив их диапазон.
Другой вариант более точного поиска – использование генетического алгоритма.
Если у вас есть представление о том, круги какого размера вы ищете, то лучше всего установить min_radius и max_radius соответственно. В противном случае он вернет что-нибудь круглое любого размера, и ваша общая цель будет уничтожена.
Параметры 1 и 2 не влияют на точность как таковую, больше надежность. Параметр 1 устанавливает чувствительность; насколько прочными должны быть края кругов. Слишком высоко, и он ничего не обнаружит, слишком низко, и он найдет слишком много помех. Параметр 2 задает, сколько краевых точек необходимо найти, чтобы объявить, что он нашел круг. Опять же, слишком высокое ничего не обнаружит, слишком низкое объявит что-либо кругом. Идеальное значение параметра 2 будет связано с окружностью кругов.