OPENCV Обнаружение близких объектов

Я изучаю OpenCV, и у меня есть вопрос к вам. Я получил это окончательно обработанное изображение.
обнаружение объектов

Исходное изображение — два шара, которые находятся рядом, и они одного цвета. Я бы получил центр и радиус каждого шара. Если шары находятся далеко, я делаю это, используя findContours и drawContours с опцией CV_FILLED, так что я могу сделать среднее положение пикселя каждого шара, и я получаю центр. Проблема в том, что шары находятся близко, поэтому я не получаю два разных контура и не могу усреднить положение пикселя. Я получаю это изображение (центр обозначен кружком):
введите описание изображения здесь

Не могли бы вы дать совет?
Я делаю обнаружение края, используя алгоритм Canny.

0

Решение

Я написал простой код Matlab для обнаружения двух кругов:

filen='http://i.stack.imgur.com/sDNS8.jpg'  % your image
I=imread(filen);

I=im2bw(I(:,:,3)); % gray scale

Rmin=20;Rmax=70;  % circle range

% find circles in the image with Hough transform
[centersDark, radiiDark] = imfindcircles(I, [Rmin Rmax], ...
'ObjectPolarity','dark','sensitivity',0.93)
imagesc(I),hold on
viscircles(centersDark, radiiDark,'LineStyle','--');hold off

Результат:
введите описание изображения здесь

Как упоминалось выше, @ChronoTrigger пакет hough transform в opencv должен работать для вашего случая.

2

Другие решения

Преобразование Хафа является общим подходом для обнаружения геометрических объектов на изображении. OpenCV имеет функцию, реализованную для кругов. Проверь это:

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html

1

По вопросам рекламы [email protected]