显然,商业解决方案是纯视觉的(不是当前的或超声波的,正如一位海报所建议的)。显示了两种方法:检测与图像表面平行的表面上的污点或缺陷,以及检测垂直于该表面的边缘中的缺陷。对我来说,这些程序似乎首先分离出意外数据(如粗糙度或光照)。也许涉及一些学习,即对“典型”意外数据的估计 - 例如,在您的情况下,您可以评估几个图像中的变化。有一些类型的变化需要考虑:
- 成像对象的几何形状和位置(可能它的尺寸有点偏离,或者稍微调整不正确,在这两种情况下都会有你必须忽略的差异)
- 不可避免但无害的变化(表面粗糙度、照明效果)
- 实际变化(您正在寻找的缺陷)
我首先建立一个预期图像的模型。例如,我可以使用小波变换来表征预期变化 - 中等值和系数的标准推导。所以我会捕捉视觉变化的大小和“强度”。在尺寸或强度或深度上超出预期表面粗糙度的粗糙度将脱颖而出。
考虑到不同的方向时,对齐图像而不是零件可能会很有用。也就是说,我可以识别有用的方向点(可能是边缘)并相应地旋转、平移和缩放图像。
照明效果可能是最难理解和建模的。例如,当使用小波时,可以发现(使用几个“好”图像)不同系数之间的均值和标准偏差的相关性。这些相关性将进一步限制预期的系数值。这些相关性将很难计算(基本上,像素平方乘以评估图像的数量),但是它们的评估可以简单得多 - 一些系数将携带最多的信息,并且可以用来“引导”模型。
我希望你能理解我的回复,我要感谢你发布这么有趣的问题。我以前从未想过。边缘检测显然工作方式不同,显然在您的情况下没有多大用处。你会这么好心并提交几张(可能是 20 张)图像进行测试吗?