如何检测图像中有缺陷的LED

时间:2013-11-08 07:34:18

标签: matlab opencv image-processing computer-vision

在我的项目中,我有一组带有相同图案的电路板。虽然看到led使用相机,但在图像中发现了白洞。(第一个附件)

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

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

如果所有的led都正常工作我很容易得到所有斑点的中心并使用那个中心点我被画成绿色。但问题是如果任何一个led不工作。我没有得到任何白洞在图像中。我没有在图像中得到任何斑点。我怎样画一个不工作的红色led。

请在下方找到有助于了解我的问题的附件。谢谢提前

enter image description here  输入图像
enter image description here

如果所有的led都在工作,我就这样画了

enter image description here 一个领导不工作。现在我需要确定不工作领导,我将用红色绘制它,就像我的第四个附件。 enter image description here

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

正如弗朗西斯科在他的answer中写道,如果这些假设是有效的:

  1. 如图所示,LED的尺寸是恒定的并且是已知的;
  2. LED的排列是恒定的并且是已知的;
  3. 工作LED提供明亮的灰度级,不工作的LED提供深灰色级别;
  4. 然后,正如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 1}})。如果直方图中考虑的像素数的百分比p_i的灰度级大于阈值t_i,则绘制一个以c_i为中心且半径为a_i*r_i的绿色磁盘,否则,画一个红色的磁盘。
    5. 通过一些实验查找a_ip_it_i的正确值。