金属缺陷检测

信息处理 图像处理 计算机视觉 opencv
2022-01-23 16:37:24

我正在开发一个机器视觉项目来发现金属表面的缺陷。我想学习和实现商业系统用于金属表面缺陷的算法。我的示例对象如下:在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述

我正在使用 OpenCV。我可以用标准的边缘检测方法找到尖锐的缺陷。但这还不够。有一些商业解决方案示例:
- http://www.keyence.co.uk/products/vision/vision-sys/cv-5000/features/movie06.jsp
- http://www.keyence.com/products /vision/vision-sys/cv-5000/features/movie09.jsp

或者像这张图:
在此处输入图像描述在此处输入图像描述

您对商业系统中使用的算法有任何想法吗?

2个回答

正如视频所说,他们使用经典的低通滤波进行纹理平滑,然后进行阴影校正以减少不均匀照明的影响,然后进行二值化以进行缺陷分割。

一种完全不同的技术用于轴承:边缘检测和(可能)评估与平滑线的偏差。

在重纹理表面上的划痕检测更具挑战性,我不确定商业系统是否可以处理它。

据我所知,“在低信噪比下快速检测弯曲边缘、Nati Ofir、Meirav Galun、Boaz Nadler 和 Ronen Basri”中的技术可以做到。

显然,商业解决方案是纯视觉的(不是当前的或超声波的,正如一位海报所建议的)。显示了两种方法:检测与图像表面平行的表面上的污点或缺陷,以及检测垂直于该表面的边缘中的缺陷。对我来说,这些程序似乎首先分离出意外数据(如粗糙度或光照)。也许涉及一些学习,即对“典型”意外数据的估计 - 例如,在您的情况下,您可以评估几个图像中的变化。有一些类型的变化需要考虑:

  1. 成像对象的几何形状和位置(可能它的尺寸有点偏离,或者稍微调整不正确,在这两种情况下都会有你必须忽略的差异)
  2. 不可避免但无害的变化(表面粗糙度、照明效果)
  3. 实际变化(您正在寻找的缺陷)

我首先建立一个预期图像的模型。例如,我可以使用小波变换来表征预期变化 - 中等值和系数的标准推导。所以我会捕捉视觉变化的大小和“强度”。在尺寸或强度或深度上超出预期表面粗糙度的粗糙度将脱颖而出。

考虑到不同的方向时,对齐图像而不是零件可能会很有用。也就是说,我可以识别有用的方向点(可能是边缘)并相应地旋转、平移和缩放图像。

照明效果可能是最难理解和建模的。例如,当使用小波时,可以发现(使用几个“好”图像)不同系数之间的均值和标准偏差的相关性。这些相关性将进一步限制预期的系数值。这些相关性将很难计算(基本上,像素平方乘以评估图像的数量),但是它们的评估可以简单得多 - 一些系数将携带最多的信息,并且可以用来“引导”模型。

我希望你能理解我的回复,我要感谢你发布这么有趣的问题。我以前从未想过。边缘检测显然工作方式不同,显然在您的情况下没有多大用处。你会这么好心并提交几张(可能是 20 张)图像进行测试吗?