Opencv: Hough Circles Автоматизация параметров?

В настоящее время я работаю с Hough Circles. Существуют ли способы автоматического поиска подходящих параметров для кругов Хафа? Прямо сейчас я просто вручную меняю значения, пока он не нарисует круги правильно.


person roverred    schedule 07.11.2013    source источник


Ответы (3)


Я думаю, вам также следует взглянуть на http://www.cse.yorku.ca/~kosta/CompVis_Notes/isophote_curvature.pdf и http://www.science.uva.nl/research/publications/2008/ValentiCVPR2008/CVPR%2008.pdf Это поможет вам найти значения кривизны изофоты для вашего изображения. Кривизна обратно пропорциональна радиусу кривой в точке. После того, как вы рассчитаете значения кривизны изофоты для каждого пикселя, у вас будет диапазон значений радиуса, который вы должны проверить.

person Andrey Smorodov    schedule 07.11.2013

Если вы можете автоматически оценить вывод Hough Circles, в большинстве случаев будет достаточно поиска методом грубой силы. Просто переберите все возможности для всех параметров и выберите значения, которые дали наилучший результат.

Если вам нужно ускорить процесс, вы можете уменьшить поиск в пространстве, заблокировав некоторые параметры до значений, которые, как вы уже знаете, работают нормально, или уменьшив их диапазон.

Другой вариант более точного поиска – использование генетического алгоритма.

person Evans    schedule 07.11.2013
comment
Спасибо! Мне придется потратить некоторое время на чтение этой бумаги. Но есть ли у вас какие-либо особенности, как оценивать результаты Hough Circles с помощью грубой силы? Я думаю, что несколько возможных способов использовать координаты того места, где были нарисованы круги. Затем используйте эти значения на исходном изображении. Цвета пикселей на этих координатах круга должны быть одинаковыми. Также вы можете начать с центра круга, пока не наткнетесь на . Я думаю в правильном направлении? - person roverred; 07.11.2013
comment
Грубая сила здесь просто перебирает каждый радиус в диапазоне и применяет преобразование Хафа для каждой итерации. Есть еще одна идея для оценки возможных значений радиуса: вы можете найти все контуры на изображении, затем найти длины контуров и предположить, что каждый найденный вами контур является кругом. После этого найдите радиусы (делите на 2pi). Затем проверьте все найденные радиусы. - person Andrey Smorodov; 08.11.2013

Если у вас есть представление о том, круги какого размера вы ищете, то лучше всего установить min_radius и max_radius соответственно. В противном случае он вернет что-нибудь круглое любого размера, и ваша общая цель будет уничтожена.

Параметры 1 и 2 не влияют на точность как таковую, больше надежность. Параметр 1 устанавливает чувствительность; насколько прочными должны быть края кругов. Слишком высоко, и он ничего не обнаружит, слишком низко, и он найдет слишком много помех. Параметр 2 задает, сколько краевых точек необходимо найти, чтобы объявить, что он нашел круг. Опять же, слишком высокое ничего не обнаружит, слишком низкое объявит что-либо кругом. Идеальное значение параметра 2 будет связано с окружностью кругов.

person Saurav    schedule 30.11.2015