1

在我的项目中,我在一块板上有一组具有相同图案的 LED。当看到 LED 使用相机时,在图像中发现了白洞。(第一个附件)

(1)。我的第一个要求是我需要找到没有工作和不工作的led。当我使用opencv进行blob检测时,这个要容易得多。我成功找到了。

(2)。我的第二个要求是我需要绘制绿色的工作 LED 而不是红色工作的 LED。我在这里很挣扎。

如果所有的 LED 都正常工作,我很容易得到所有斑点的中心,并使用该中心点,我用绿色绘制。但问题是如果任何一个 LED 不工作。我没有在图像中得到任何白洞.我没有在图像中看到任何斑点。我怎样才能绘制一个不工作的红色 LED。

请在下面找到有助于理解我的问题的附件。在此先感谢

在此处输入图像描述 输入图像
在此处输入图像描述

如果所有的 LED 都在工作,我会这样画

在此处输入图像描述 一个 LED 不工作。现在我需要确定那个不工作的 LED,我会像我的第四个附件一样用红色绘制它。 在此处输入图像描述

4

2 回答 2

3

如果 LED 排列和比例是恒定的(如果这是一个制造部件,这可能应该是),你不能只在测试图像中注册一个所有 LED 都工作的“参考”图像,然后找到 blob-sized-和形状不匹配,这表明设备出现故障?

于 2013-11-08T14:05:07.783 回答
0

正如弗朗切斯科在他的回答中所写,如果这些假设是有效的:

  1. 如图所示,LED 的尺寸是恒定且已知的;
  2. LED 的排列是恒定的且已知的;
  3. 工作的 LED 提供明亮的灰度,不工作的 LED 提供暗灰度;

然后,正如 Rethunk 所建议的,您可以尝试一种简单的算法,如下所示:

  1. 从您的图像http://i.stack.imgur.com/OC0lr.jpg开始,所有 LED 都在工作。
  2. 从该图像中获取所有绿色斑点的质心,称它们为c_i
  3. 从该图像中获取所有绿色斑点的半径,称它们为r_i
  4. 当您必须检查新图像时:对于每个c_i计算包含在圆中的像素的直方图,该圆以 (其中 ) 为中心c_i且半径等于a_i*r_i( 0 < a_i <= 1)。如果直方图中考虑的像素数的百分比p_i具有大于阈值的灰度级,则绘制一个以半径t_i为中心的绿色圆盘,否则,绘制一个红色圆盘。c_ia_i*r_i

a_i通过一些实验找到, p_i,的正确值t_i

于 2013-11-09T15:35:06.663 回答