Я изучаю OpenCV, и у меня есть вопрос к вам. Я получил это окончательно обработанное изображение.
Исходное изображение — два шара, которые находятся рядом, и они одного цвета. Я бы получил центр и радиус каждого шара. Если шары находятся далеко, я делаю это, используя findContours и drawContours с опцией CV_FILLED, так что я могу сделать среднее положение пикселя каждого шара, и я получаю центр. Проблема в том, что шары находятся близко, поэтому я не получаю два разных контура и не могу усреднить положение пикселя. Я получаю это изображение (центр обозначен кружком):
Не могли бы вы дать совет?
Я делаю обнаружение края, используя алгоритм Canny.
Я написал простой код 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 должен работать для вашего случая.
Преобразование Хафа является общим подходом для обнаружения геометрических объектов на изображении. OpenCV имеет функцию, реализованную для кругов. Проверь это:
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_circle/hough_circle.html