灰度图像中的缺陷区域的分割,其对阴影是不变的

时间:2016-06-23 12:51:30

标签: python matlab opencv image-processing

我想使用MATLAB / Python-OpenCV来分割图像中的缺陷区域。

原始图片:

img1

缺陷:

http://imgur.com/fyDkpcZ

在第3个矩形处可以看到缺陷。

到目前为止我尝试了什么:

  • 使用LoG滤镜/阈值灰度提取矩形的边框(但由于阴影而无法帮助很多)
  • 追踪他们的界限
  • 获取质心
  • 找出边界点和质心之间相对于角度的距离(增量角度为0.5度以获得更好的分辨率)
  • 找一个好的模板矩形并保存
  • 找出模板矩形和候选矩形之间的区别
  • 基于该结果,我可以找到有缺陷的区域,但当我尝试提高算法的灵敏度时,误报率会增加。

我需要更精确,更嘈杂的边界。由于阴影,矩形的边缘可能会有很大差异。

如何让阴影的边缘对阴影更加健壮? 到目前为止,我可以做些什么呢?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

高斯滤波器的拉普拉斯是零均值运算。如果您将一个强度为127的8位图像输入,它将返回以零为中心的图像数据。您必须使用任意值的过滤器偏差,通常是容器最大值的一半(因此在此8位示例中,偏差将为127)。您还可以通过将结果像素乘以常数来调整滤镜强度,这使得日志滤镜的效果更加明显。

日志过滤器将为一个非常强的过渡创建一个白色和一个黑色边缘。在水平或垂直方向上,找到实际边缘非常容易,因为您只需要取两者的平均位置。如果集成在一个很小的距离上,这将为您提供亚像素分辨率。

如果这些图像的照度非常相似,您可以使用注册和减法:

  1. 将怀疑含有缺陷的图像和参考图像标准化为某种强度。

  2. 注册(对齐)他们;你可以通过检测矩形上的三个点,然后移动并旋转其中一个图像来做到这一点。

  3. 从参考图像中减去可疑图像。这会给你一个错误图。您可以应用一个小模糊,然后使用紧密的LoG滤镜来消除噪音并使检测更准确。