【问题标题】:Segmentation of defective areas in grayscale images, which is invariant to shadows灰度图像中缺陷区域的分割,对阴影是不变的
【发布时间】:2016-06-24 16:52:37
【问题描述】:

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

原图:

有缺陷:

http://imgur.com/fyDkpcZ

缺陷可见于第三个矩形。

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

  • 使用 LoG 过滤器/阈值灰度级提取矩形的边框(但由于阴影没有太大帮助)
  • 追踪他们的界限
  • 获取质心
  • 求边界点和质心之间的距离(角度增加 0.5 度以获得更好的分辨率)
  • 找到一个好的模板矩形并保存
  • 找出模板矩形和候选矩形的区别
  • 根据该结果,我可以找到故障区域,但当我尝试提高算法的灵敏度时,误报率会增加。

我需要让边界更加精确和无噪音。由于阴影,矩形的边缘可能会有很大差异。

如何使矩形的边缘对阴影更加稳健? 有什么可以代替我目前尝试的方法?

感谢您的帮助!

【问题讨论】:

  • 请提供您的结果和您遇到的一些缺陷。您作为示例提供的缺陷具有非常高的对比度。它可以简单地通过应用阈值来分割。
  • 我无法上传更多示例,因为 stackoverflow 不允许我这样做。这是另一个低对比度的imgur.com/CwUXhzZqw。我无法检测到它。还有一些imgur.com/RNzrMe6,imgur.com/fwEgKnI

标签: python matlab opencv image-processing


【解决方案1】:

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

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

如果这些图像的光照非常相似,可以使用配准和减法:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-04
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2012-09-25
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多