Проблема
Я пытаюсь использовать opencv2 для обнаружения контроллеров движения PlayStation Move в неподвижных изображениях .В попытке увеличить контраст между сферами и фоном, я решил изменить входное изображение, чтобы автоматически масштабировать уровень яркости между средним уровнем изображения и 96 для каждого канала выше, а затем при преобразовании в оттенки серого, взяв вместо этого максимальное значениепреобразования по умолчанию, так как некоторые сферы насыщены, но не "ярки".
Однако мои лучшие попытки настройки параметров, похоже, не работают, обнаруживая круги, которых там нет, над очевидными.
Что я могу сделать, чтобы повысить точность обнаружения?Как вы думаете, какие еще улучшения или алгоритмы я мог бы использовать?
Образцы
В порядке от лучшего к худшему:
2 палочки, 1 обнаруженная палочка (показаны все 2 обнаруженных круга)
2 палочки, 1 палочка обнаружена с множеством несуществующих кружков (показаны 4 верхних круга)
1 палочка (на темном фоне), всего 6 кругов, самый низкий из которых является правильным (показаны все 6 кругов)
1 Жезл (на темном фоне),Всего обнаружено 44 круга, ни один из которых не является этим Жезлом (показывает все 44 круга)
Я использую этот вызов функции:
cv2.HoughCircles(img_gray,cv2.HOUGH_GRADIENT,
dp=1, minDist=24, param1=90, param2=25,
minRadius=2, maxRadius=48)
Все изображенияизменить размер и обрезать до 640x480 (разрешение глаза PS3).Размытие не выполняется.