【问题标题】:how can I find orange ball?我怎样才能找到橙色球?
【发布时间】:2014-01-09 07:53:09
【问题描述】:

我正在寻找“robocup 的球”。因为它是橙色的,所以我把这个颜色分开,然后测试它是否是圆形的......

这是该方法不适用于其他图像的图像,但对于其他图像则有效:

rgb = imread('E:/robot12.jpg'); 
imshow(rgb);
hsv=rgb2hsv(rgb);
h=hsv(: , : ,1);
s=hsv(: , : ,2);
v=hsv( : , : ,3);
bw= (h>0.05 & h<0.12) & (s>0.6) & (v> 0.51);
imagesc(bw)
colormap(gray)
se = strel('disk',2);
bw = imclose(bw,se);
bw = imfill(bw,'holes');

imshow(bw)
ball1 = bwareaopen(bw, 50);
imagesc(ball1);
lab = bwlabel(ball1);
s = regionprops(lab, 'Area', 'Perimeter');
sArea = [s.Area];
sPerim= [s.Perimeter];
metric= sPerim.^2/(4*pi.* sArea);
idx = find(metric > 0.7);
gr_fin = ismember(lab, idx);
imshow(gr_fin)


stat = regionprops(gr_fin,'centroid');
imshow(rgb); hold on;
 for x = 1: numel(stat)
    plot(stat(x).Centroid(1),stat(x).Centroid(2), 'wp','MarkerSize',20,'MarkerFaceColor','b');
  end

我不知道如何解决它...

谁能帮我解决这个问题?

【问题讨论】:

    标签: matlab image-processing robocup


    【解决方案1】:

    好的,首先metric有一个bug。

    完成所有处理后,您的图像有两个不同的斑点,分别标记为 1(灰色)和 2(白色)。

    所以,sAreasPerim 将是两个 1x2 数组。要获得两个 blob 的度量值,您需要将行修复为: metric= (sPerim.^2)./(4*pi.* sArea);

    关键是这个指标给你1一个完美的圆盘,所以我相信如果你也有一个上限阈值会更好,而不仅仅是metric &gt; 0.7。例如,对于上面的 blob,返回的值为:

    metric = 3.1406 1.9596

    这意味着它们都不像一个完美的圆。

    第二个问题是颜色阈值没有完全找到真正的球,因为它在灯光照射到它的点变得太“黄色”。这在许多光线充足的照片中很常见,当它在阴影后面时会更暗。

    要解决此问题,您需要放宽色调值,以便允许更多的黄色和红色变化。您将有更多的误报,但您希望它们不会通过检测器的其余测试。

    我尝试了bw= (h&gt;0.04 &amp; h&lt;0.15) &amp; (s&gt;0.6) &amp; (v&gt; 0.51);,结果如下:

    我只更改了色调值,但您可以通过其他照片查看适合您的颜色。

    此图像产生以下指标值:

    metric = 2.2190 1.1703

    因此,如果阈值为 1.3&gt;metric&gt;0.7,您将只能识别正确的 blob。

    主要的一点是,所有这些过程都依赖于许多任意阈值,这使得它容易出错。专门为照片修剪它可能很容易,但关键是要对所有输入保持稳健。我认为对于这个特定的球,您将拥有的唯一变化将是太黄/白或太黑/棕色。

    如果您不想搜索其他策略,只需查看哪些值在测试中最有效。

    【讨论】:

    • 并且指标也应更改为metric= (4*pi.* sArea)./(sPerim.^2);
    • 我认为是一样的,只是相反。越接近1 越像圆形。
    • 是的,应该小于 1
    【解决方案2】:

    我只是更新了 hsv 的阈值,我得到了一个很好的结果,我不确定它是否有帮助

    bw= (h>0.05 & h0.8) & (v> 0.8);

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2016-09-14
      • 2017-09-26
      相关资源
      最近更新 更多