Существует множество тем о том, как обнаружить несколько кругов с помощью функции OpenCV HoughCircles, и я понимаю, что это сложная задача, на которую нет единого хорошего ответа. Однако, возможно, кто-то может дать несколько советов по параметрам для конкретной проблемы поиска только одного круга. Я также хочу получить ответ только тогда, когда алгоритм достаточно уверен, поэтому не нужно «может быть», пожалуйста. Иногда данные имеют фон 100-150 (из 255), при этом пик сигнала достигает >200 большую часть времени. Хорошо ли функция обрабатывает смещения или стоит потратить некоторое время на удаление фона?
Мой текущий код:
или
Код: Выделить всё
im8blur = cv2.GaussianBlur(im8, (n,n), cv2.BORDER_DEFAULT)
с n в диапазоне 3–10 для первого случая или >30 для второго случая.
Затем с при этих параметрах результаты самые лучшие, но для 140 изображений требуется >20 минут...
Код: Выделить всё
detected_circles = cv2.HoughCircles(im8blur,
cv2.HOUGH_GRADIENT, 1,
minDist = 2000,
param1 = 14,
param2 = 4,
minRadius = 400,
maxRadius = 600)
Все мои круги имеют радиус около 520 пикселей, но установка minRadius на 500 или установка maxRadius на -1 дала худшие результаты.Для моих изображений размером 1400x1400 я выбрал minDist 2000, чтобы гарантировать, что будет найден только один круг.
Однако я по-прежнему получаю неоднозначные результаты. Только когда все очень четко, я получаю хорошее соответствие, но большую часть времени круг где-то находится.
Для случая только одного круга должно быть лучшее решение. ..?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... gle-circle