【问题标题】:OPENCV Detection of close objectsOPENCV 近距离物体检测
【发布时间】:2013-12-23 23:29:33
【问题描述】:

我正在学习 opencv,我有一个问题要问你。我得到了这个最终处理的图像。

原始图像是两个靠近且颜色相同的球。我会得到每个球的中心和半径。如果球很远,我会使用 findContours 和 drawContours 选项 CV_FILLED 执行此操作,因此我可以计算每个球的像素位置的平均值并得到中心。问题是当球靠近时,我没有得到两个不同的轮廓,也无法计算像素位置的平均值。我得到这个图像(中心用圆圈表示):

你能给点建议吗? 我使用 Canny 算法进行边缘检测。

【问题讨论】:

  • 你想得到一个中心,就像你在第二张图片中显示的那样,还是每个圆圈有两个中心?
  • 我想为每个圆获得两个中心。

标签: c++ opencv image-processing object-detection


【解决方案1】:

霍夫变换是检测图像中几何实体的常用方法。 OpenCV 有一个为圆实现的功能。看看这个:

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

【讨论】:

  • 哦,我不知道这种可能性,我会检查这个选项。
  • 我尝试在opencv中使用hough包,我在http://docs.opencv.org/modules/imgproc/doc/…阅读了这个函数HoughCircles的文档,但我真的不明白这个参数:dp,param1,param2。我写了这个:HoughCircles(color_dst, circles, CV_HOUGH_GRADIENT, 1.1, 5, 100, 30, 10, 100);这个配置似乎是最好的(但我检测到 3 个圆圈而不是 2 个),你能给我简单解释一下这个参数以改进检测吗? PS:我将发布的第一张图片传递给函数。
【解决方案2】:

我写了一个简单的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,opencv 中的 hough 转换包应该适用于您的情况。

【讨论】:

  • 我尝试在opencv中使用hough包,我在http://docs.opencv.org/modules/imgproc/doc/…阅读了这个函数HoughCircles的文档,但我真的不明白这个参数:dp,param1,param2。我写了这个:HoughCircles(color_dst, circles, CV_HOUGH_GRADIENT, 1.1, 5, 100, 30, 10, 100);这个配置似乎是最好的(但我检测到 3 个圆圈而不是 2 个),你能给我简单解释一下这个参数以改进检测吗? PS:我将发布的第一张图片传递给函数。
  • 尝试调整您的 param2(HoughCircles 中的 30),即累加器阈值。我猜它设置得越小,检测到的圆圈就越多。
  • 我为“param2”和“dp”创建了两个轨迹栏,但是根据球的位置,完美的参数是完全不同的。如果我要创建一个算法来检测图片中的所有球(半径和中心)并设置上述参数,我该怎么办?例如,是否有其他功能/算法可以帮助我?
  • 我建议您只更改“param2”,“dp”是事先估计,一旦设置,请勿更改。您是否已经正确检测到两个具有半径和位置的圆?
  • 是的,我有。哦,好的,我会这样做的。如何选择“dp”参数?最佳值似乎是 1 和 1.1。这个参数我真的不懂。
猜你喜欢
  • 2012-12-30
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 2019-08-17
  • 1970-01-01
相关资源
最近更新 更多