这是一个极其困难的问题。我是从事此工作的团队的一员,多年来,我已经开发并支持了其他此类应用程序很长时间,我可以说凹痕检测是一个特别棘手的问题,并且比起初看起来要难得多。
在实验室条件下或在已知图像上运行算法是一回事;要开发一种对“自然”图像(例如在停车场看到的汽车)准确而可靠的系统,可能需要团队工作数年。除了创建算法的核心问题之外,还有许多其他工程上的困难。
您测试的示例代码并不是一个糟糕的开始。如果您可以找到凹痕右侧右侧的边缘,则可以将汽车的边缘图和顶角与以相同角度和相同照明成像的已知优质汽车的边缘图进行比较。控制照明将有很大帮助。
要考虑的问题包括:
- 照明(比最初看起来要困难得多)
- 组装好的外板的预期3D表面(例如,来自CAD数据)
- 凹痕特征的标准:面积,深度,轮廓等。
- 误报和误报的条件
- 可以将凹痕数据和/或凹痕保存到汽车模型上(或蝶形布局)
- 测量“真实”凹痕特征的方法和装置:深度,面积等
- 来自车辆随机抽样的广泛的凹痕数据库
- 处理不同的油漆颜色和面漆
1.照明
正如Martin B在上面正确指出的那样,正确的照明对于此问题至关重要。即使具有良好的结构化照明,您也将很难检测特征线附近的小凹痕,面板之间的间隙,手柄等。
Wikipedia关于结构化照明的条目有点薄,但这是了解原理的开始:http :
//en.wikipedia.org/wiki/Structured_light
浅色条纹可用于检测入光(凹痕)和出光(丘疹)。要看到钟声,您将需要光源和汽车之间的相对运动。灯光+摄像头相对于汽车一起移动,或者汽车经过灯光+摄像头移动。
尽管在光带的边缘看时,进出点具有特征外观,但是给定凹痕的可检测性取决于凹痕的大小和深度相对于光带的宽度。汽车的曲率很复杂,因此很难为相机提供一致的光带。当光带在车身上移动时,光带的曲率甚至强度都会变化。
一种局部解决方案是确保照相机和光带始终相对于被检查表面部分的法线(3D垂直线)保持一致的角度。在实践中,将需要机器人来相对于身体表面准确地移动相机。准确地移动机器人需要了解车身的姿势(位置和3D角度),这本身就是一个讨厌的问题。
对于汽车应用的任何检查,您都需要完全控制照明。这不仅意味着将您选择的照明灯放置在已知位置,而且还会阻挡所有其他照明灯。这将意味着一个相当大的外壳。由于汽车的面板向外弯曲(几乎像一个球形表面),因此它们将反射来自周围所有光源的光。为了大大简化此问题,您可以在用黑丝绒包裹的机壳内使用高频荧光棒。对于检测应用程序,经常需要极端地极端化。
2. 3D表面
汽车的外表面由复杂的曲线组成。为了知道可疑点是否是叮叮当响,您必须将该点与汽车的已知特征进行比较。这意味着您需要将摄像机的2D图像与以特定角度观看的3D模型进行匹配。这不是一个很快就可以解决的问题,而且要做好一些公司专门研究的困难。
3.缺陷特征描述
对于学术研究或实验室测试,开发一种显示出希望或对现有方法进行改进的算法可能就足够了。为了在实际的商业或工业用途中正确解决此问题,您需要对要检测的尺寸凹痕有一个高度详细的规范。
当我们解决此问题时,没有合理的凹痕(3D变形)行业或国家标准。也就是说,尚无商定的技术来通过凹痕的面积,深度和形状来表征凹痕。我们只是得到了一些样本,这些样本被行业专家认为是不好的,不是太糟糕,并且严重性很小。定义装饰层的“深度”也很棘手,因为装饰层是(通常)向外弯曲的3D表面中的3D压痕。
较大的叮叮声易于检测,但也较不常见。经验丰富的汽车工人可以快速扫描车身-比未经培训的观察员要快得多-并能快速找到小指状手指的浅浅斑点。为了证明自动化系统的成本合理,您可能必须匹配经验丰富的观察员的能力。
4.检测错误的标准
早期,您应该设置可接受的假阴性和假阳性的标准。即使您只是作为研发项目来研究此问题,也不打算开发产品,也请尝试定义检测标准。
假阴性:存在凹痕,但未检测到假阳性:被识别为凹痕的无瑕疵区域
通常需要权衡取舍:提高敏感度,您会发现更多的叮叮声(减少误报),但您还会发现更多不存在的叮叮声(增加误报率)。使自己确信算法的性能要比实际的性能好是很容易的:我们的自然偏见是注意到算法检测到的缺陷,并解释掉未检测到的缺陷。进行盲目自动化测试。如果可能,请其他人测量叮叮声并指定严重性,以使您不知道真正的测量是什么。
5.保存数据和/或对其进行映射
凹痕的特征在于其严重程度及其在车身上的位置。要知道其位置,您必须解决上面提到的2D到3D对应问题。
6.确定凹痕的“真实”形状凹痕
很难测量。具有相同表面积和深度的尖锐凹痕和圆形凹痕会显得不同。通过机械手段测量凹痕会导致主观判断,并且当您可能不得不测量数十个甚至更多时,使用深度计,标尺等也非常繁琐。
对于制造中的任何缺陷检测项目,这是要解决的较难的工程问题之一:如何测量缺陷并对其进行表征?如果有这样做的标准,该标准与检查系统所测量的内容是否具有良好的相关性?如果检查系统找不到“应该”找到的标记,那应该归咎于谁?
就是说,如果检查系统对已知缺陷的样本运行得足够好,那么用户可能最终会信任它,并且系统本身就成为定义缺陷严重性的标准。
7.广泛的凹痕数据库
理想情况下,在困难的制造商的车辆上的不同位置,您将拥有数百个(如果不是数千个)不同严重程度的凹痕样本图像。如果您有兴趣在组装过程中查找由事故引起的凹痕,那么收集此类数据可能需要很长时间。在组装过程中造成的凹痕并不常见。
如果您只想查找由事故或环境破坏引起的凹痕,那是另一回事。凹痕的类型将与自动装配厂内意外碰撞引起的凹痕类型不同。
8.处理不同的油漆颜色
确实,边缘检测器在检测对比度不同的图像中的边缘方面具有相当强的鲁棒性,但是看到“不同的对比度水平”对于不同的汽车油漆和面漆真正意味着什么可能会令人沮丧。在一辆有光泽的黑色汽车上看起来很不错的浅色条纹在带有旧漆的白色汽车上几乎无法检测到。
大多数相机的动态范围相对有限,因此要在黑色发亮的表面和白色暗淡的表面上都获得良好的对比度非常困难。您很有可能必须自动控制照明强度。那也很难。