DEVELOPMENT OF A LOW-COST VISION SYSTEM FOR FINDING CONTOUR AND SURFACE DEFECTS ON CAST IRON ENGINE COMPONENTS
一种寻找铸铁发动机零件轮廓和表面缺陷的低成本视觉系统的开发

这是一篇硕士学士论文,这里仅作为学习记录用,翻译仓促,意思理解就好。
作者:Alex Kiviorg
时间:June 2014
原文地址
翻译进度:翻译完成

目录

  • 摘要
  • 介绍
  • 背景资料和使用的方法
  • 当前发展状况
  • 1. 案例研究
    • 1.1 零件检测及生产线
    • 1.2 污染
    • 1.3 缺陷类型
    • 1.4 形状变化
    • 1.5 检测标准及其他要求
  • 2. 硬件原型
    • 2.1 相机
    • 2.2 镜头
    • 2.3 光照设置
    • 2.4 相机支架
    • 2.5 PC
    • 2.6毛刷系统
    • 2.7系统成本
  • 3. 算法部分
    • 3.1 图像分割和去除噪声
    • 3.2 轮廓缺陷
    • 3.3 表面缺陷和结果展示
  • 4. 系统标定和与人工检测的比较
    • 4.1 盲法实验
  • 5. 总结与讨论

摘要

本文的目标是开发一种用于铸铁件(尺寸为250x190x120mm)质量检测的二维视觉系统的图像处理算法。该系统的设计成本低,是一个容易实现的解决方案,为现有生产线补充或取代部分手工质量检查。
缺陷主要是由气孔和成型误差引起的,其性质可能非常不同,从很小的孔洞和缺口到大量缺失材料。因此,在处理轮廓的自然形状偏差时,算法所采用的方法必须保证能够成功地检测出非常不同类型的缺陷。
几种已知的图像处理方法已经过测试并进一步开发,以适应这一特定应用。首先,选择合适的候选方法,在MATLAB®中实现,并在一小组手工拍摄的测试图像上进行测试。然后,性能最好的方法被进一步发展成一个全功能的beta算法,然后在真实的生产线上使用原型硬件进行测试。为了了解系统的能力,进行了质量检验员的盲试验。
该算法采用Canny边缘检测算子进行轮廓提取,并通过几个阶段的动态掩膜和形态学处理去除虚假边缘和不重要的轮廓。然后应用强度映射和过滤来消除切削液在零件上的痕迹以及偶尔的高对比度铣削痕迹。然后检测表面缺陷,并与检验标准进行比较,以决定零件是否合格。

然后检查零件的轮廓是否有气孔和由损坏的模具造成的偏差。形状特征(译者注:形状特征是形状本质的一种简洁的表达。形状特征通常被用作形状检索的快速索引机制。有效的形状特征捕获了尺度、平移和旋转不变性的全局几何特性。)和基于模板特征的分段对齐是大多数情况下被证明是可行的方法。由于轮廓的复杂形状和轮廓的明显自然变化,该方法在确定特定区间的偏差大小方面存在不足。在此提出了提高系统精度和鲁棒性的思路。

介绍

质量问题,如气孔,有时在生产线的后期没有被发现,此时就会浪费很多成本。尽管大部分生产在发达国家已经实现了自动化,但质量检查仍然经常由人工进行。这意味着检查依赖于操作员。此外,工业还必须应对生产率的提高和更严格的质量标准。这为机器视觉打开了一个领域,成为一个吸引人的领域,质量检查可以自动执行、不依赖操作员。

最近在成像和计算机技术的发展已经使发展先进的高速在线视觉系统成为可能,另一方面,在过去十年中,技术已经变得非常便宜,这允许在更大的规模制造实现视觉系统。

考虑到这一点,本学位课题研究使用低成本2D视觉系统进行铸铁电机部件自动化质量检测的可能性。项目的范围是研究和开发这种视觉系统的图像处理方法,并建立一个测试算法的原型系统。

因此,本文进行了文献研究,在MATLAB®中进行了大量的编程,设计并搭建了一个原型系统,最后与目前的目视检测进行了测试和比较。所有这些都是在6个月的时间内完成的,目的是确定该系统是否有潜力成为生产线的永久部分。

论文的范围仅限于开发和测试一个原型系统,对于最终系统所需的支持系统的细节在这个学位项目中没有讨论。此外,该系统的设计并不是为了检查零件的尺寸。

背景资料和使用的方法

本论文是一个大型研究项目的一部分,该项目涉及Scania和KTH研究各种无损检测方法,其中一个感兴趣的领域是使用简单的自动化视觉系统检测铸造零件表面和轮廓缺陷的方法。

该项目的目的是研究合适的图像处理技术,并开发一个原型算法和视觉系统,以测试这种方法和潜力,以发现缺陷。
通过对图像处理和视觉系统相关文献和研究文章的研究,寻找合适的候选方法。测试图像是在类似的环境中手动拍摄的,因为零件将在真实的生产线上进行检测,以便在投入原型系统之前在MATLAB®中开发一种算法来测试其潜力。
由于初始算法显示出了潜力,为了进一步发展该算法,需要一个大型的一致图像数据库,因为很明显,该算法必须能够发现大量不同的缺陷。

在建立测试系统之前,使用不一致且不能代表多种可能缺陷的测试图像来开发算法。因此,我们使用Adobe®Photoshop™创建了具有不同大小和不同位置缺陷的逼真图像。我们得到的教训是,为了开发一个可靠的算法,需要大量一致的图像。
建立原型系统启用后,经过一个星期的紧张的连续测试和修复算法和硬件的bug,系统已经足够成熟,接下来人工检查员进行盲法实验(译者注:blind experiment 盲法或盲法实验是指实验者不知道对实验对象进行何种处理的一种测试或实验。这样做是为了避免实验者可能引入的偏见。)进一步校准参数和优化的算法,以更好地符合人类对缺陷的感知。

当前发展状况

由于数字成像技术具有可接受的价格水平,视觉系统已经被开发用于制造业。在20世纪70年代早期[1],CCD传感器被开发出来,并且有了足够的低成本计算能力来进行图像处理。直到20世纪80年代和90年代,由于计算机技术的进步,机器视觉产业才真正起飞。在20世纪90年代,视觉系统成为各种工业问题的广泛解决方案,甚至可以说,今天机器视觉是一些行业的关键技术,如半导体制造和先进的计算机电路[2]。

据全球最大的机器视觉行业协会自动化成像协会(Automated Imaging Association)称,仅在北美,机器视觉就在一个价值20亿美元的行业,未确定的总市场收入为45亿美元。在过去的10年里,中国经历了相当稳定的两位数增长(不包括2009年全球制造业遭受经济低迷的时候)。[3]已经在2004年估计在北美销售的视觉系统的数量是53000,在2008年估计是72000。[4]
增长的主要驱动力被认为是发达国家的高劳动力成本和图像处理算法研究和技术进步所支持的新应用。机器视觉在制造业中的应用可分为六大类;代码、对象、位置识别、完整性检查、形状和尺寸检查、表面检查。

每一种都可以进一步划分为子类别,并与其他类别混合。由此产生的视觉系统通常是为某一特定任务而创建的专门系统。本文研究的应用领域为表面定性检测与形状检测。本论文的重点不是零件尺寸的检验。

传统上,人工操作人员的任务是对生产出来的零件进行各种质量缺陷的视觉检查。尽管在很多情况下,人类可能比机器更有能力,但一个众所周知的事实是,人类会疲劳,注意力分散,而且可能比机器慢。因此,使用机器视觉系统作为完全替代或补充人工检查可以提高生产率,为其他任务腾出资源,并提供竞争优势[7]。

如上所述,机器视觉是一个相对年轻且发展迅速的领域。兴趣是强烈的,可获得的文献的数量随着新的或改进的图像处理算法不断地被开发和提出。这意味着在大多数情况下,解决一个问题有几个(如果不是几十个的话)不同的方法,在每种情况下定义哪种方法是最好的并非易事。尽管如此,机器视觉是高度通用的,它的基本方法如边缘检测和目标定位可以很容易地从一个应用程序适应到另一个[8]。更复杂的是,被检查部件的尺寸、形状、公差、所需的检查速度和执行检查的环境可能会有很大差异。这就产生了对不同的方法的需求,尽管基本任务是相同的。

==开发视觉检查系统的过程是一个循序渐进的过程,包括测试、修改和测试失败时重新开始的几个阶段。此外,视觉系统应该发现的缺陷的规格不能总是以非模糊的方式给出,如果规格不明确,很难推导出解决方案。==因此,开发一个视觉系统是一项既涉及硬件开发又涉及软件开发的复杂任务,并不能保证成功。[8]

虽然有大量的研究文章提出了各种方法来解决一般性图像处理问题,如图像分割、形状描述符或图像配准,但详细解释现有机器视觉系统及其图像处理算法的文献似乎很难找到。所使用的算法很少被描述得足够详细,以至于能让其他研究人员或机构轻松地复制该系统,而且在大多数情况下,重点是一种特定的新方法或开发的硬件配置[9,10]。最可能的原因是为了保持文章的简短,以及大多数系统可能是出于商业目的或涉及强烈的商业利益。

因此,本文的研究重点不是寻找一篇类似的视觉系统的文章,而是研究各种可能解决本文问题的数字图像处理方法,并在代码和测试中实现它们。有大量的文献以书籍、指南、研究文章和商业内容(博客、网站和时事通讯)的形式用于数字图像处理。本论文大部分的方法和图像处理知识来自于三个流行的图像处理书籍——冈萨雷斯和伍兹的数字图像处理,Davies的《计算机与机器视觉:理论、算法、应用(第四版)》,冈萨雷斯等人的数字图像处理MATLAB版。

本论文最大的挑战是选择具有最大潜力的方法,并且在合理的时间和努力下可以实施和测试。图像处理算法如SURF[11]或SIFT[12],数学上非常复杂,开发时间长,并已获得专利(SIFT)(译者注:SIFT的专利保护2020年到期了,现在最新版的opencv里边包含了这个算法)。虽然一些复杂的算法已经内置在MATLAB®及其图像处理工具箱™或Computer Vison工具箱™中,但许多潜在的方法不容易以代码的形式获得,必须由作者实现,这可能非常耗时,也没有保证的结果。

市面上有几个功能丰富的商业图像处理/机器视觉软件,如Cognex和日本基恩士。但是价格较高(没有从两家公司及时收到报价),而且与自己撸袖子编程或MATLAB相比,没有那么高的自定义能力,对于KTH的学生来说,MATLAB一个免费的开发工具(包括图像处理工具箱™)。也可以找到低成本的商业软件,如RoboRealm®[13],它有一个令人惊讶的全面功能列表,但更针对机器人视觉。(译者注:国内用的比较多的商用图像处理软件,比如Halcon、labview等)。

有OpenCV,这是一个非常强大的开放源码图像处理库,适用于各种编程语言(c++、C、Java™、Python),它也有许多强大的功能(也是3D),可以用于机器视觉系统[14]。MATLAB®由于其出色的文档、良好的支持和可用性,被选择用于开发本论文算法的软件。另一方面,OpenCV有一组类似的函数[15],并且使用一种编程语言,这使得它成为最终实现算法的首选。

1. 案例研究

为了更好的理解视觉系统需要解决的问题,本文进行了案例研究。在质量检查中与质量检验员面谈并一起工作,检查部件可能存在的各种缺陷。并对生产线进行研究,寻找原型视觉系统的最佳位置。本案例研究的主要成果在以下段落中介绍,但为了尊重保密协议,不能包括所有的信息和细节。

1.1 零件检测及生产线

该零件为铸造电机部件,尺寸约为250x200x120mm。它以未加工状态进入生产线,然后经过加工,在整个自动化生产线上添加部件。请注意,在本论文讨论和显示的是处于视觉系统开发中检测位置的零件。

图1 传送带上待检测零件
该零件有一个相当复杂的形状,有三个不同的表面,六个钻孔和一个大的非加工孔在中间。在这个部分的中心是一个池状结构(pool),这将在以后的生产线上进行加工。该部件有两个不同的版本,轮廓形状略有不同,另一个版本有两个表面而不是三个。两个版本的总体尺寸大致相同。本文只讨论这两种类型中的一种,但检查的方法是建立在记住这两种类型的基础上的。

加工是在不同的步骤中完成的,因此,零件的外观和特征集在整个线的显著变化,因为它得到进一步的加工。这些部件可以在生产线上的几个位置以及不同的条件下进行目测。在一些地方,零件被金属屑和切削液严重污染,而在其他地方,零件已经被清洗和干燥,处于良好状态,可以进行检查。
当然,当为视觉系统寻找合适的位置时,首先想到的地方是在检查过程中最早的地方。这种方法可以最大限度地减少生产线上的浪费,保证系统的最高投资回报率。根据这个想法,在第一阶段铣削后,当零件的所有面都被铣削完时,找到了一个适合视觉系统的位置。由于空间上的限制,测试系统的第一个可能的位置是不可行的,因此,一个稍远一点的地方被用于测试系统。

在那个位置,只有一面零件可以被检查,不能进行其他的测量。幸运的是,经过统计,零件的这一面是缺陷最多的一面,这有利于算法的开发和测试。如果需要检测零件的四个边,需要在一个平台上旋转4个90度。这可以通过一个相对简单的驱动器或将系统放置在附近的机器人单元中来实现。然而,设计支持系统不是本文的一部分。

1.2 污染

在这个位置,零件要么直接从铣床或从一个小缓冲区出来。在第一种情况下,部分可以高度污染芯片和切削液,或在另一种情况下,部分可能干,但有小块塑料从托盘上。污染看起来与图像上的缺陷非常相似,这使得使用单一图像作为输入的视觉系统几乎不可能从缺陷中区分金属芯片和塑料片。此外,切削液是在大量溢出的所有表面的部分,它可以高度反射取决于光的角度。

切削液与清洁表面之间也可能存在强烈的反差,这给边缘提取和假边缘检测带来困难。

图2 零件中的金属屑和塑料屑污染(来自托盘)以及切削液痕迹
污染问题得到了进一步的研究并取得了一定的成功,切削液和切屑至少可以通过以下三种方法去除:

  1. 工业清洗站。清洗站被用作生产线的一部分,但在生产线比较靠后的阶段。它们能够自动去除所有固体污染和去除切削液和油的痕迹。在循环的最后,这些部分被干燥。在视觉系统规划位置的上游增加一台额外的清洗站是一种有效但昂贵的解决方案。此外,也没有太多空间在生产线上再增加一台机器。
  2. 压缩空气。另一种选择是使用所谓的空气刀,它会产生一股薄而宽的气流,吹出切削液和切屑。这种方法速度快,所需空间小,但其可靠性值得怀疑,因为该部件中间有大量的切削液和切屑,而压缩空气可能会导致一些切屑最终出现在表面上。另一个问题是如果没有适当的防护措施,切屑和切削液可能会溅到附近的设备和传感器上
  3. 机械去除。第三种选择是使用一套简单的刷子,机械地清除所有固体污染物以及大部分切削液。该部分不会完全干燥,但表面的液体量被保持在最低限度,因此图像处理算法的可靠性将受到很大影响。由于它的低成本,简单和没有主要的缺点,这种方法被认为是三个方法中最好的。

1.3 缺陷类型

视觉系统的作用是发现零件上的各种铸造缺陷。这些缺陷的性质差异很大,从轮廓线上很小的误差,到表面有几立方厘米的缺失材料或大的空腔。从视觉系统的角度来看,存在两大类缺陷;外形和表面缺陷。这种分类的原因是检测这两种孔隙的图像处理方法是完全不同的,而后者明显更容易检测。
表面缺陷

图3 [a,b;c,d] 不同尺寸和对比度的缺陷
从图像中可以看到,缺陷几乎可以是任何大小和形状。虽然在某些地区更容易出现缺陷,气孔几乎可以位于任何地方。因此,视觉系统必须能够检查零件的所有表面,而不能集中在一个特定的区域。此外,视觉系统必须同样善于发现大的缺陷和小的缺陷,这意味着可能需要不同的策略。

图4 [a,b;c,d] 可能的几种缺陷
观察表明,气孔的对比度是不同的,在一定程度上可以概括为缺陷越浅,对比度越小,但情况并非总是如此。原因是表面粗糙度和气孔的轮廓不同,因此每个气孔反射光线的方式也不同。如果一个孔的轮廓是矩形的——它急剧下降到最大深度,底部几乎是平坦的——如果它的表面是光滑的,它的对比度就会很小,即使它的深度很大,也很难被探测到。为了能够检测这些气孔,可以使用单一的2D图像,照明要设计好,尽可能尝试不同的灯光设置下的图片效果。
只有在这种情况下,系统才能更好的的测量孔隙深度。

零件的表面缺陷与轮廓非常接近,有时可能会把它们连接起来。在这种情况下,算法可能会检测到它们作为轮廓的一部分,表面缺陷实质上会变成轮廓的偏差(图3 a,b)。这对人类来说并没有太大的改变,但对于图像处理算法来说,这可能会使小孔更难被探测到。此外,根据位置的不同,孔隙有时会“桥接”两个轮廓,这意味着将会有一个大轮廓,而不是通常的两个单独的轮廓。该算法必须足够聪明,能够识别和处理这种情况,而不会崩溃或误判零件。

可能存在的缺陷和位置的多样性表明,在一种特定的气孔检测方法被采用之前,该算法必须经过彻底的测试。
轮廓检测

图5 窄的划痕缺陷

图6 毫米级的材料缺失
与表面缺陷一样,轮廓误差有各种形状和大小。缺陷可能是几毫米的非常浅的材料缺失,通常很难从视觉上发现,或者它们可能是尖锐的“咬伤”或深划痕,视觉上更容易注意到。

图7 最常见的典型轮廓缺陷

这里要注意的重要的事情是,有时一个部分的边缘可以略有缺口,因此有一个相当粗糙的外观。该算法应该能够从真实的缺陷中分离出边缘粗糙度,这可能是困难的,取决于系统必须能够找到的缺陷有多小。一种可能的区分方式是,这种轮廓边缘的小缺口通常是浅灰色的,通常小于半毫米大小。

图8 不应该与缺陷混淆的粗糙边缘

1.4 形状变化

由于这是一个铸造部件,它在形状和尺寸上有自然的变化,这被认为是正常的,不影响部件的性能。因此视觉系统不能将这些偏差视为缺陷,当轮廓的局部有相当大的变化的时候,它也必须能够处理。

该零件有一个独特的部分,有时可以连接或部分连接到大表面,而在其他情况下,它可能是完全分离,此时它成为第四个表面。因此,该算法必须能够适应局部或严格分离两个表面,以使所有的零件都能以相同的方式进行校验。

图9 [a,b;c,d]轮廓变化(a,b,c)形状变化导致连续零件分离问题(d)

类似地,形状变化可以导致一个有趣的现象,传送带上连续的两个零件的轮廓实际上是没有分开的(图9d),这使得很难定义一个零件结束和下一个零件开始。这个问题可以通过零件的物理分离来解决,这样,在线上的每个零件都可以被隔离检查。这可能需要安装两套流量控制执行机构,使得系统更加复杂和昂贵。另外一种解决方案是使用软件将零件分离。取决于具体的解决方案,这可能会导致一些细节的丢失或无法检查零件连接的区域。

另外如下面的特殊的轮廓区域,零件与零件的偏差高达5mm。它是零件的右下角,那里有一个平滑的过渡,从零件的表面到零件的一条边。根据铸件的初始高度,面铣削操作有时会去除更多的材料,使铣削表面面积略大。偶尔在该区域会留下一些小点,这些小点会恰好出现在轮廓线的表面孔隙或偏差中,从而欺骗算法触发假警报。此外,这种从加工表面到非加工表面的梯度过渡会导致一个非常低的对比度区域,这可能会导致零件外轮廓提取的误差。

图10 [a,b;c,d] 三个不同零件(a,b,c)的同一个部位 由于夹具误差导致孔未对准(d,图11图像叠加的结果)

另一种误差的类型可以用一个例子说明,两个不同零件的加工孔周围的材料量不一样,就好像这个孔被放错了地方(图10 d)。由于零件的轮廓很好地对齐,这很可能不是铸造错误。零件是在有自固定夹具的CNC中加工的,这个误差可能是由于在CNC-切削夹紧过程中造成的。

图11 两个不同零件的相同区域,说明了由于固定误差(夹具)造成的孔中心偏移。参见图10d。

在大多数情况下,局部形状偏差相对较小,通常不会对部件的性能产生影响,但会使算法对部件的检测更加困难,必须对其编码特定的防护措施,以避免虚警。另一方面,在某些区域,零件可能会有极大的偏差,如图12所示。根据所选择的图像处理方法来检查轮廓,这很容易引发误报,或者由于这种大的偏差影响轮廓的整体外观,算法可能会遗漏一个真正的缺陷。

图12 与零件有较大偏差

1.5 检测标准及其他要求

零件由质量检验员按照一个标准进行检验,该标准描述了缺陷允许的位置以及缺陷的最大尺寸和深度(译者注:技术指标呗)。该标准如图13所示,它指出了哪些是重点检测的领域。算法必须能够根据相同的标准对零件进行检测,而且它必须足够灵活,以允许将来对标准进行更改,而无需进行重大的重新编程。

图13 检验标准中关键区域的简化表示。

速度要求
视觉系统必须能够在不成为生产线瓶颈的情况下对零件进行检测。这些部件不会在传送带上连续移动,并且会停足够长的时间来捕捉图像并处理它,而不需要高速图像处理或使用并行系统。此外,原型系统不能控制传送带上的零件流,因为有足够的时间,可以手动移除有缺陷的部分。

2. 硬件原型

根据特定的任务和要求,机器视觉可能是一个非常复杂的一次性系统,或者在其他情况下,可以使用智能摄像机使视觉系统只包含一个主要组件。本论文所开发的视觉系统由四个主要部件组成,分别是摄像机、摄像架、照明灯和PC机。当然,后一种类型的系统不能独立地控制部件流、弹出不良部件或将结果可视化地通知操作人员。该系统的工艺流程见附录1。

本论文的目的是开发一个低成本的机器视觉系统,这限制了硬件的选取。在开发机器视觉系统时,一般为图像处理算法分配尽可能少的工作。这意味着硬件和整体设置应该通过适当的相机/灯光设置和控制所有的环境因素来尽可能地支持算法,如图像背景、环境照明(数量、角度和色温)、局部污染等。从图像处理的角度来看,理想的视觉检查应该在100%可控的环境中进行,但从成本、空间和有限的检测时间的角度来看,这种方法不是首选的。

理想情况下,检查前应该清洗和干燥零件,以去除金属和塑料碎片以及切削液的痕迹。之后,这个部分将被放置在一个封闭的柜子里,那里没有自然光,并且控制这个部分的背景和位置,以去除不必要的旋转和平移以及背景的反射。

为了降低对硬件的要求和成本,本文的视觉系统将许多环境因素留给摄像机和图像处理算法来处理。这增加了算法的复杂性,降低系统的鲁棒性,但同时也降低了硬件成本和系统配置耗费的时间。当然,这也需要更多地编程成本,这就是为什么我们总是要找到一个平衡点。(译者注:成本和头发,只能选一个)

2.1 相机

相机显然是任何依赖图像的视觉系统的关键组成部分。多年来,许多不同类型的成像设备被开发出来,每一种都有自己的优点和缺点,它们都有最适合的应用领域。对于本文的课题任务,有三种类型的相机可供参考。

  • 相机类型
    第一种是线扫描相机,它具有只有一行像素的成像传感器,图像是通过移动相机或相机下的零件并组合所有像素行生成最终图像。这样,图像理论上就可以在一个二维线扫描相机中具有无限大小,这通常用于传送带速度非常高、一次性拍摄非常长的零件等普通相机难以实现的情况。行扫描相机允许图像的连续处理,这在某些应用领域可以提供显著的速度优势。虽然,在这个本课题中,线扫描相机没有明显的优势,因为最大的零件尺寸只有250mm,并且传送带不能连续移动。此外,行扫描摄像机还带来了额外的复杂性,比如控制运动速度,图像上每条线的曝光可能不同,图像的某些部分可能会丢失。

第二种成像系统是一种结构光系统,原理上可以生成零件的三维图像。其明显的优点是可以测量缺陷的深度,从而更好地估计缺陷的严重程度和零件是否存在缺陷。像线扫描相机一样,结构光系统需要在部件和相机之间进行相对运动,这就产生了使用工业机器人或线性轴系统的需要。或者,可以利用零件的移动,但经过观察,移动的速度不能够被精确控制。另一个缺点是,与其他成像设备相比,这种成像系统的价格较高。

第三种选择是使用常规阵列传感器相机,可以一次捕捉整个零件。这种类型的系统是最容易实现的,较上面两种方式,它价格最低。缺点是,它需要的工作距离(译者注:应该是比较占用空间吧,毕竟得调焦距啥的)也是最大的,更容易产生扭曲和缺乏图像锐度(译者注:畸变和模糊),只使用一幅图像时,不能测量缺陷的深度。尽管有缺点,但是本论文中的视觉系统选择这种相机类型。

  • 选择指定相机
    在此必须提及的是,本文的检测系统将不需要高帧率(FPS)照相机,往往工业相机在设计的时候也不要求高帧率。事实上,一个普通的静态相机就足够了,这意味着有大量合适的工业和消费相机可供选择。

除了通常的高帧率之外,工业相机有广泛的专业镜头选择,控制和数据传输接口,环境密封(防尘和防潮),高耐振性,它们可以很好地为特定的视觉检查任务定制,以达到最好的可能结果。此外,它们通常有一个全局电子快门,这意味着相机中没有活动部件。工业相机的缺点通常是较高的价格或类似的价格,它们通常有一个较低的传感器分辨率和感应距离短(译者注:原文是sensor is physically smaller 应该是这个意思吧)。后者通常意味着较差的图像质量,需要使用广角镜头,以避免大的工作距离。这个问题在镜头这一章进行了进一步的讨论。

消费相机,即单反相机的优点是价格更低,分辨率更高,测量距离更远(在价格相同的情况下)。此外,单反相机通常在曝光测光和自动对焦方面很出色,如果有必要的话。消费型相机最大的缺点是(通常情况下)它们的机械快门、缺乏适合工业应用的接口。此外,数码单反专用镜头的选择非常有限,如远心镜头。最后,消费型相机更容易被新型号所取代,这可能会在需要替换相机时造成可用性或向后兼容性问题。

测试系统使用的是一款相当老旧的800万佳能20D单反,没有其他具体原因,只是因为它的分辨率合适,密封性好,可以在本系统中使用。800万像素的分辨率意味着每像素约为0.0875~ 0.1mm,这刚好能够保证系统找到操作员探测到的最小气孔。

  • 相机的自动触发
    消费和工业相机可用于各种解决方案。后一种相机的触发要容易得多,因为它们通常有24V数字输入,通常它们被设计为远程触发。

对于消费型相机来说,情况就有点复杂了,这取决于相机的选择。远程触发单反更容易,因为它们通常至少可以通过四种方式触发:红外遥控、带有物理按键或传感器的有线遥控(例如:激光或接近传感器)过WIFI与专用设备(TriggerTrap®Ada™,Cactus®LV5™),或USB电缆/ WIFI与PC(使用传感器输入或基于软件的运动检测[16])。紧凑型系统或紧凑型相机可能具有同样的功能,但它们通常缺乏专用的远程触发端口,有时也缺乏适当的PC远程控制软件,因此可以使用智能手机或平板电脑进行控制。最后,定制软件/硬件解决方案总是可能的。

例如,用激光触发的基本原理是激光束被到达的零件打断进而触发相机。然后传感器被重置。后者可能不是直接了当的,因为零件流是连续的,而且零件之间没有间隙。一种解决方案是将激光传感器垂直放置,使激光束可以穿过它。尽管如此,放置位置必须确保传感器不会被滴落的切削液和脱落的碎片污染。

图14 Cactus®LV5™激光相机触发器

2.2 镜头

为机器视觉系统选择一个镜头可能是一项棘手的任务,因为它是影响整个系统的设计和性能的重要组成部分。对于更复杂的视觉系统,如具有测量能力的视觉测量系统,镜头的参数和质量对系统的性能起着至关重要的作用。特别是,如果使用了一个特殊的远心透镜。

虽然,在这个视觉系统中,镜头没有那么重要,但它仍然是系统的重要组成部分。镜头与相机的成像传感器的尺寸一起定义了工作距离,以及从零件表面到相机的最小距离,整个零件在图像中有一些额外的空间用于零件平移和旋转。锐度和失真也是镜头的关键特性。值得一提的时候,因为相机的镜头要求精密工程和制造,高质量的镜头往往是昂贵的硬件,它们会迅速推高整个系统的成本。

镜头越广,工作距离越短。短的工作距离反过来允许紧凑的系统设计,这是一个理想的性质。另一方面,更宽的镜头必须有更高的光学质量,以避免严重失真和锐度损失。虽然失真可以通过软件减少或几乎消除,一个好的光学质量仍然是非常重要的。另一个可能的缺点是,除了被检查的零件,广角镜头捕捉到的画面中还会有一个很大的一个很难去掉的背景区域。这种背景会导致零件表面与背景的对比度较低,增加了算法稳定提取边缘的难度。

基于上述因素,在视觉系统中,我们选择了标准的佳能50mm F/1.8 II镜头。该镜头的光学性质比一些高端镜头,如Carl Zeiss PlanarT 50mm f/1.4 ZE或佳能50mm f/1.4 USM的光学性质好的多,而且这些高端镜头的成本高达7倍以上。但是,50mm f/1.8的外壳是由基本塑料制成的,其制造质量相对较差。它的最大光圈也比同类的小。

镜头通常在中心周围锐度最高,从中心向边缘去锐度会逐渐降低。畸变同理,距离透镜中心越远畸变越严重。DxOMark对佳能EOS 20D上所选镜头的测试表明,当镜头停在f/4时,镜头的清晰度最高,而f/4是视觉系统设置相机曝光参数时考虑的因素。不过,将镜头从f/1.8调到f/ 4需要较慢的快门速度,这会使系统更容易发生震动,这在后面会讨论到。

佳能EOS 20D的传感器为APS-C型,焦距转换率为1.6。这意味着当50mm的镜头安装在EOS 20D上时,其视场与安装在全帧传感器的相机上的80mm镜头大致相同。这增加了0.7m的工作距离,但另一方面,有一个更小的传感器更能从所谓的镜头centor sweet-spot中获益,这通常通常比前面讨论的透镜边缘具有更好的光学性能。


图15 佳能EOS 20D 50mm镜头对比 来源:www.DxOMark.com


图16 锐度与孔径。来源:www.DxOMark.com

2.3 光照设置

一个正确的照明方式是机器视系统成功的关键,我们必须在这方面进行细致考虑[5]。周到的照明在图像的处理和系统的鲁棒性上发挥重要作用。

我们可以通过选择合适的光谱、不同的光源(类型、形状、强度)、不同的工艺(LED,卤素灯,氙气灯,荧光灯等)、光源得到角度和尺寸或者使用灵敏度和照明光源光谱匹配的传感器来生成不同的照明方案。因此我们必须对各种设备进行多方面考虑和测试。

视觉系统的光源设置必须满足以下三个重点:

  1. 关键区域高对比
  2. 其余区域低对比
  3. 系统鲁棒性强

为了说明不同光照方式所造成的影响,以下是其他视觉系统应用的一些例子。

图17 不同灯光设置下的相同对象。来源:[18]


图18 不同灯光设置下的相同物体。来源:[18]

在开发系统的过程中,由于不同的光源、滤镜使用受限,且一般不遮挡环境光(受限于成本、空间、简化),只能对不同设备进行有限的调查和测试。因此,并不能说我们最后选择的照明方式是这种情况下最好的。

本视觉系统选择的照明方案的原理是使用一个几乎垂直于相关物体表面的光源,使光照均匀覆盖整个部分形成明场照明(图19)。当垂直的光线落在平坦的表面上时,它会直接反射回相机,但当光线照在表面上的缺陷或光线不垂直表面时,它将不会会反射回相机。这种结果会导致平坦的表面会表现得明亮,接近纯白,而缺陷处会根据缺陷的种类呈现出灰色,灰黑色或者纯黑。这种亮度水平(对比)的差异可以用来通过阈值或边缘检测来检测缺陷。

理论上使用半反射镜上的同轴光源(图20)是一个更好的选择,这样光线就会真正垂直,从而进一步增强缺陷的对比度。但由于该光源的尺寸限制,这种照明装置将会十分昂贵,因此这个想法被放弃了。另一个有趣的选择是使用暗场照明(图21),这种方法能仅照亮缺陷,而使表面的其余部分是仍为黑暗。不过,这种方法需要对环境光进行过滤或屏蔽。此外,这只适用于寻找表面缺陷,不适合检查轮廓的差异,但这可以通过拍取两个有不同照明设置的图像来解决。


图19 单光源亮场照明。来源:[19]


图20使用半反射镜的同轴照明。来源:[19]


图21暗场照明。来源:[19]
本文研究了从聚光灯、阵列灯和环形灯组合到各种相机闪光灯的光源。不过,只测试了环形灯和标准闪光灯。后一种是一个有趣的选择,因为它们的强度可以很容易地由相机控制(取决于使用的是哪种相机),而且理论上,一个强大的闪光灯可以发出高强度的光脉冲(频闪),这会冲淡所有的环境光。我们测试了一个安装在单反相机上的标准佳能430EX外置==闪光灯,原则上效果很好,但光照不均匀,闪光灯正下方的表面过度曝光。==此外,光线不是垂直于整个零件的表面,不然的话在一些区域的缺陷的对比度可以更好。

使用闪光灯的另一个缺点是照明不是连续的,因此可能会对附近的操作人员造成干扰,因为使用50mm镜头时,工作距离为相对较高的0.7米。此外,大多数用于单反的廉价闪光灯都不能完全独立于电池。虽然闪光灯本身可以交流供电,但闪光灯的控制电路仍然需要电池,因此需要偶尔更换电池,这是不便的,并不是一个特别稳定的解决方案。

因此,本视觉系统选用交流LED环形灯(F&V HRD-300)作为单光源。环形灯的直径并不理想,因为它比零件的最大尺寸略小,但使用较大的环形灯会导致成本大幅增加。有高质量的环形灯用于视频拍摄和视觉系统的特殊用途的灯,甚至可以通过USB或以太网控制,但这些价格点要高得多。

  • 环境光
    照明的一个重要因素是环境光,工厂里有很多窗户,环境光变化很大。环境光以不受控制的强度从所有可能的方向照亮该部分。因此,它降低了缺陷的对比度,使得缺陷更难以检测。另一方面,这也可以看作是一种优势,因为浅层缺陷比较深、较严重的缺陷显得更轻,允许根据深度对气孔进行粗略分类。这主要可以用来将边缘有轻微剥落和轮廓包含缺陷这两种情况分开。

光的水平、角度和色温取决于时间和天气,因此成为一个变化的主题。在多云的中午和晴朗的日出或日落时,工厂的照明有很大的不同。

因此,如果在视觉系统中没有使用遮光(或其他方法,如过滤或频闪),照相机必须能够在所有条件下准确测量曝光,最好是LED照度应该是可调或自调的。本系统使用的LED环形灯必须手动调整,但在本系统测试期间,由于相机曝光测光基本正确,因此不太需要手动调整。

如果进一步的测试表明,在某些条件下,外界光线会对视觉系统造成很大的干扰,那么可以使用窗帘来屏蔽光线。

  • 反射
    另一个与照明有关的因素是来自零件本身和输送组件的各种反射。事实上,在某些情况下,传送带的辊子的反射是如此强烈,在如此糟糕的位置,以至于图像分割不能成功地找到气缸盖的轮廓。通过调整算法中的参数和用简单的黑色遮盖胶带遮盖辊与产品不接触的部分,解决了这一问题。(译者注:真机智啊))

此外,传送带的一些明亮的表面会反射从LED环灯到零件侧面的光,这偶尔会造成困难,在边缘检测。解决办法是在一些特定的位置使用遮盖胶带。虽然这个问题可以用软件来解决,但是屏蔽带是一个非常简单和健壮的解决方案。

  • 扩散器
    来自环形光源的直射光默认是无漫射的,因此它会非常刺眼。这倾向于创建具有非常高的对比度和强烈的反射的图像。因此,在环形光上安装了一个自制的漫射器,它可以软化发射出来的光,以减少不需要的反射和高对比度的区域。结果是一个更甚至照明在整个表面的缸盖。漫射光也创造了一个效果,浅层的缺陷轻于陡峭的。即使在没有漫射光的情况下,这种效果也存在,但是漫射光增强了这种效果,对于算法来说,这有益于使用该信息将浅气孔和深气孔分开。

2.4 相机支架

当相机、镜头和照明被选择后,需要与之匹配的相机支架。所需工作距离在700mm左右,相机、镜头和环形光源的重量合计不超过2kg。在调整相机的位置时,支架必须有全部的六个自由度,以便相机可以直接在传送带上方的部分。

图22 视觉系统原型图解(图中无PC、监视器和电刷系统)

相机支架使用了45mm的铝型材和一个三向的三脚架头,可以让相机在三个轴上旋转。该支架固定在其中一个输送带腿上,而且45度的三角板在保持系统刚性的同时,容易进行平移调整。

​ 第一次测试之后,发现了很明显的设计缺陷,就是系统容易振荡。因为在传送带上的部件有一个惯性时刻,==当开启或关闭生产线上的流动时,有一个强烈的机械冲击,使相机和支架产生振荡,这将导致图像模糊,==并容易抖动镜头,导致对焦环改变位置,在一定时间内逐渐失去焦点。

​ 不过,这个问题很容易解决,只要把支架的顶部固定在附近的一根柱子上就可以了。自然而然地,如果相机支架没有完全固定在传送带上,而是自己站在支撑腿上,设计会好得多。

2.5 PC

该系统的计算能力来自一台配有27英寸显示器的笔记本电脑,该笔记本电脑配置了频率为2.3GHz的第二代Intel®Core™i5-2410M CPU ,集成Intel®显卡和4GB内存。以今天的标准来看,它是一个相当普通的处理器,但是在生产速度限定的时间下,它能够运行这个特定的算法(没有彻底的优化)。

​ 相机可以通过佳能自己的EOS工具软件从PC端远程控制。EOS实用软件对相机来说是免费的,当然也可以使用更先进的远程控制软件,因为相机没有实时查看能力,更先进的软件没办法证明自己在这个具体情况下可以使用。我们使用的EOS实用软件可以触发相机和改变相机的所有主要参数,如光圈、快门速度、ISO、曝光补偿、测光模式等。

有一个无所谓的困难,EOS 20D只能在Windows XP上远程控制使用EOS实用程序。基于这个原因,一个虚拟机被创建来处理PC到相机的通信,然后图像被发送到Windows 7, 由MATLAB自动读取图像文件并处理它。虽然MATLAB本身有直接的图像采集工具箱可以与许多工业和网络相机通信,但它不支持与大多数单反通信,包括这一个。

2.6毛刷系统

正如在预研究中所述,气缸盖可能被切削液和金属或塑料碎片高度污染。为了提高系统的可靠性和减少可能的误报,需要在检查前对零件的状况进行改善。

​ 为此,开发了一种毛刷系统,该系统使用三个合成刷的组合固定在一个微小的角度,以确保有效地去除碎屑而不损害零件的表面。毛刷系统的高度是可调的,以找到最佳的压力,去消除所有污染物,而不造成太多的摩擦。

​ 测试表明,毛刷系统工作良好,污染很少或没有留下。一个浮现的问题是,输送带上的单个部件可能会卡在刷子下面。尽管如此,当下一个到达并推动它时,该部分也会被释放。这不是一个理想的结果,如果在线上有一个产品类型的开关,它可能是一个问题。幸运的是,电刷正好位于操作员的工作场所附近,所以没有出现严重问题。解决这个问题的可能方法是将三个电刷分开,这样可以减少同时发生的摩擦。此外,单个部件偶尔也会卡在输送机的其他部件上,所以操作人员知道这个问题,并在生产停止或产品类型改变时予以注意。

图 23 开盖的毛刷系统

2.7系统成本

视觉系统的总成本取决于许多因素,从软件的选择、硬件的质量和所需的支持系统的数量开始。后者包括控制输送带上的流量的自动化系统,缺陷部件的排出系统,获得必要的认证等。传送带附近有现有的气动执行器,可以重新定位和编程,与视觉系统一起工作。因此很难估计这些成本,所有这些支持系统都被排除在价格估计之外。

系统最大的成本来源是软件。测试系统中的算法在MATLAB®中实现,使用Image Processing Toolbox™v 8.4实现,其中包含用于数字图像处理的各种功能。MATLAB®之所以被选中,是因为它易于使用,而且它是一个完善的开发工具,具有完善的文档和支持社区。虽然,由于价格高,它不是一个适合的低成本系统的软件选择,这就是为什么选择免费的OpenCV作为MATLAB®或或开源图像处理库的替代品,OpenCV将被用于最终的算法。根据初步的观察,性能上,OpenCV比Matlab相当甚至更好,而且是免费的。OpenCV的另一个好处是它基于初级编程语言,如c++、Java或Python,因此可以有比MATLAB®更低的算法执行时间。

表1 原型视觉系统的大致预算。所有成本都是预估的。

里列出的所有价格都是初步观察得出的近似价格。值得一提的是,原型系统是基于一台现有的笔记本电脑,27英寸的显示器和一个摄像头。因此,预算表中所列的成本并不能反映实际支出的资金。

尽管是一个工业环境,它对硬件没有很高的要求,但由于视觉系统必须能够每天24小时/一周7天运行,基于低成本的消费硬件和组件必须仔细选择。

PC机和工业PC机为了高可靠性,应该有有一个SSD硬盘驱动器,但没有必要是个无风扇系统,因为环境不是特别要求。PC应该能够与自动化系统通信,控制弹出机构和输送带上的工件流。这可以通过专用的24数字I/O实现,或者通过使用例如TCP套接字通信的局域网实现。基于无源NUCs(如Logic Supply ML-320或Habey bi -6922)的Intel®Core™处理器是一个比较适合的pc机,根据配置不同,它们的价格都在1100美元左右[20,21]。

图24[a,b,c] Habey -6922被动式工业PC (a,b)。Intel D54259 NUC Kit ©

图25 [a,b,c] Baumer LX系列高分辨率工业相机(a).尼康D7100单反相机(b).尼康1j2紧凑型系统相机©. Baumer LX系列高分辨率工业相机(a).尼康D7100单反相机(b).尼康1j2紧凑型系统相机©。

相机可以选择消费型数码单反相机(即尼康D7100或佳能70 d)或一个紧凑的系统相机——与环境密封、有电子快门(例如尼康1系列、松下G系列),这样能消除每一年或两年就要更换相机快门机构或更换整个相机或的问题,这也取决于生产水平。或者,可以使用专用的机器视觉摄像机。取决于相机的最终选择,可以选择更贵一点的镜头,因为价格和性能相匹配的镜头不适配于所有的镜头接环。(译者注:便宜没好货呗,适配性差)

3. 算法部分

如前所述,系统的图像处理算法是在MATLAB®R2013a中使用image processing Toolbox™8.4编写的。代码是在Matlab自带函数和专门为这个系统开发的自定义函数的混合基础上构建的。一些定制函数是或基于来自[23]、Mathworks文件交换(在BSD许可下)和Peter L. Ekberg的第三方代码。这个算法大约有4000-5000行代码(示例参见附录1),但是它有几个部分非常相似,可以进一步开发成定制函数,从而使代码更紧凑、更容易理解。由于这是算法的beta版本,所以还没有进行更简单和更快的调试。该代码是Scania的一个特性,虽然大部分重要的方法都在论文中讨论,但不能包含在本文中。

算法分为四个部分:

  1. 图像分割、掩膜、滤波
  2. 轮廓验证和发现轮廓缺陷
  3. 发现表面缺陷
  4. 结果分析展示

上述四步循环运行,处理图像,显示和保存结果,然后等待下一个图像。所有的主要零件都被进一步划分为几个面,如果没有发现缺陷,可以在中间跳过每个面。也可能出现算法的第一部分失败的情况,在这种情况下,它会显示一个可能的原因的错误消息,保存结果并等待下一个图像。在接下来的章节中,将讲述算法的最重要的部分。

3.1 图像分割和去除噪声

这是第一步也是整个算法中起决定性作用的一步。这一步中从输入图片中将零件的轮廓和可能是气孔的地方找到并且提取出来。该算法建立在可靠的边缘检测和去除图像中所有不相关目标的基础上。如果这一步失败了,算法剩下的部分就不能成功执行,检测在初期就失败了。

  • 边缘检测
    图像分割或边缘检测是最基本的一种图像处理技术之一,从图像处理早期到今天,人们进行了大量的研究。MATLAB®IPT有几个用于边缘检测的自带函数,所有这些函数都在本算法中进行了测试。这个工具箱(v8.4)中目前最先进的边缘检测器或算子是Canny算子,该算子最早由Canny在1986年提出。它一共有四步:开始进行高斯滤波降噪。然后计算每个图像点的局部梯度和边缘方向,如果一个点在梯度方向上局部强度最大,则认为该点是边缘点。然后对剩余的边缘像素进行非最大阈值处理。超过阈值的点为强边缘点,在两个阈值水平之间的点为弱边缘点。最后一步是使用8连通性将弱边点连接到强边点。[23]

使用Canny算子的结果是,在相邻像素对比度较强的图像中,得到了具有较细轮廓线的图像。Canny检测器具有较高的准确率和鲁棒性,因此选择Canny检测器作为算法的检测方法。与被检测零件的真实轮廓同时检测出大量的假边缘,但最重要的是,被检测零件的轮廓大部分是连续的,只有在低对比度区域偶有间断。


图26 Canny edge算子检测到的所有边。注意除了零件的轮廓还有很多额外的边缘被发现。
这里重要的是正确设置两个阈值。当设置得太低时,即使对比度很弱的物体也会被检测出来,这样得到的图像中就会有很多不相关的轮廓,这些轮廓可以连接到该部分的主轮廓上,这就使得图像的进一步处理变得非常困难。另一方面,当阈值设置过高时,检测到的噪声很小,但轮廓可能有明显的缺口。

有新的替代边缘检测算法可用,具有亚像素精度。其中的Sobel-Zernike矩算子是一个两步的算法,首先使用Sobel算子寻找候选边,然后使用Zernike矩寻找最终轮廓[9]。但本系统尚未测试亚像素边缘检测算法,其在应用中的优势和可靠性还有待研究。

此外,一种非常简单但有时有效的图像分割技术是阈值化,即根据灰度图像的像素强度将其设置为0或1。如果强度高于某个阈值,则设置为1,否则设置为0。或者,可以使用更高级的自适应局部阈值,检查邻近像素的强度,然后决定输出图像中的像素应该设置为1还是0。阈值化的主要优点是速度快。

  • 形态学操作
    由于轮廓可能会出现不连续,特别是在右下角,未加工表面逐渐变成加工表面的地方,所以前一次操作检测到的边缘必须进一步加工。有几种方法可以填补空白。一种选择是使用形态学处理,即放大,这是一个图像与一个结构化元素(即3x3平方)卷积的过程。元素在整个图像上被递增移动,以便结构化元素的中心访问每个像素。然后,如果在这个位置上,3x3正方形中的任何一个像素与一个为1(不是0)的图像像素重叠,那么在输出图像中,当前位于正方形中心的那个像素被设置为1。

    图27 使用3x3平方结构元素膨胀后的边缘。
    这样图像中所有的物体都会变厚,如果轮廓中存在一个或两个像素的间距,膨胀时这些间距像素会被设置为1。膨胀不仅会填补空白,也会使所有的轮廓线变宽,这取决于情况,可能有积极或消极的影响。积极影响是,它连接了所有方向的缝隙,但消极影响,因为细节丢失了。

当然,结构化元素可以是任何大小的任何类型的元素。虽然,在计算上,方形结构元素应该更快,而且由于丢失细节的风险,结构元素应该尽可能小。

  • 去除噪声
    一旦轮廓被关闭,噪声和无关物体的去除就开始了。有几种方法可以实现这一点,并且具有不同程度的健壮性。如果存在小噪声,并且所有感兴趣的边缘都被正确找到是高度确定的,那么在理想情况下,人们可以简单地根据其长度或像素数选择轮廓。这种方法可以很好地适用于较大的轮廓,也就是外部轮廓,但只有当图像是在受控背景下拍摄的,并且零件槽中心没有液体或污染时,这种方法才会很有效。后者可以被检测为具有很长的轮廓的物体,因此在像与像之间存在很大的差异。(译者注:其实就是轮廓分析,根据轮廓的长度和面积对轮廓进行筛选,这里需要配合findcontours函数一起使用)

形态学开操作时先膨胀后腐蚀。前者在某种程度上是与膨胀相反的过程,在膨胀中,像素被设置为0,如果该像素位置的结构元素不完全在一个对象内部(例如,blob或轮廓线)。结果,所有的对象都变小了,通过细截面或线连接的对象被分离(图28b),之后它们就可以被单独移除或处理了。


图28 [a,b;c,d;e,f]掩膜顺序。填充所有闭合轮廓线(a).形态学腐蚀(b).所有小成分去除©.形态扩张(d).掩蔽区域图(绿色)(e).最终结果(f)。

(译者注:感觉论文这里少了几张图片)

实际的掩膜是将之前膨胀过的轮廓与Mask相乘(应该是bit_and操作)。结果是,所有不在掩膜下的像素都被设为零,因此掩膜图像(图28f)只有被检查的零件部分及其内部对象的轮廓。


图29 [a,b]掩模(a)和掩模(b)后的轮廓

3.2 轮廓缺陷

当从原始图像中提取出所有轮廓后,该算法继续对轮廓进行分析。这可以通过下面描述的两个主要步骤来完成:

  1. 验证所有主要轮廓线的存在
  2. 检查所有轮廓线是否有缺陷
    第一步是创建图像中所有发现对象的数据库,并找到它们的周长。该零件有五个明显的主轮廓,六个加工孔的轮廓是相同的。因此,在这个阶段,每个被检查的部分应该至少有11个物体在图像中。这个信息可以用来验证算法是否能够提取出所有的轮廓。

如果一些轮廓相互连接,使两个轮廓看起来像一个,就会出现问题。该算法有一些内置的措施来识别这种情况。必须说说的是,假定错误不是由于未能提取的轮廓部分造成的,如果这种情况发生,那么该零件是100%缺陷的。

通常这种轮廓连接在一起的情况发生在任意六个钻孔的位置(图30b)。另一个和这六个钻孔有关的问题是,偶尔一些表面缺陷和这六个孔一样大或更大。因此,需要采取措施可靠地检测出钻孔的轮廓,并将其与大缺陷区分开来。

图30 [a,b;c,d]影响钻孔轮廓外观和性能的各种缺陷。如果表面缺陷连接到孔(a,b),则孔的周长可以大大增加。孔可以连接到另一个轮廓(c,d)

  • 检查轮廓是否有缺陷
    零件轮廓的鲁棒性检测无疑是该算法开发过程中最困难的挑战之一。对几种方法进行了调查和测试,取得了不同程度的成功。这些困难是由零件可能会有的复杂的轮廓形状和/或者或各种不同的缺陷导致的。通常,一种方法如果比较擅长发现大的缺陷就会忽略小的缺陷,反之亦然。此外,由于形状复杂,一种方法在不同的轮廓区域上会有不同程度的精度。此外,由于零件之间或零件与图纸局部轮廓偏差较大,使得任务更加复杂。
  • 中心特征
    有一组很有潜力的方法是shape signatures,即中心特征法(原文centroidal profile)。该方法的基本原理如下。首先,通过对像素坐标进行平均或使用模板图像中得到的中心点来找到轮廓的中心点。然后,中心到轮廓的距离以指定的角度步长[0,2π ]或[0,- π;0,π]测出。(译者注:感觉和霍夫圆变换里边 指定r, 步长\theta的方法来找圆的方法有点类似)其结果是二维曲线的一维表示,使进一步的轮廓分析更加快速和简单。

    图31 一个有缺陷的圆形零件及其心廓线。同一部分与一个大的闭塞和其中心点移动的中心轮廓。来源:[8]

形状特征方法是一种已知的基本形状描述符,用于模板匹配和寻找形状偏差。尽管其简单、健壮性和许多其他优点,但在将其用于此任务之前,仍有一些已知的缺陷需要解决。影响当前任务的两个主要因素如下:

  1. 如果中心由于严重的遮挡而移位,则特征会发生显著变化。
  2. 特征可能是多值的,使其成为一个2D图形[8]
    第一个提到的中心偏移的主要问题主要影响较小的轮廓线。在这种情况下,有问题的轮廓线是中心的两个孤立区域和六个钻孔。第二个问题比较难解决。当质心特征基于极坐标时,特征对于相同的角度值会有两个或更多的距离,使特征成为二维图形。一个解决方案是当每个角度有多个值时,使用最小距离值。这在检测大的缺陷时很管用,但是缺点是检测不到缺陷背后区域的特征。换句话说,如果在第一个缺陷后面还有另一个缺陷,它是不会被发现的。在大多数情况下,这不会是一个问题,因为有大的缺陷时,就可以判定此零件有缺陷,但情况总有例外。

如果轮廓线的形状是自相交的,例如外轮廓线和第二大轮廓线,问题会更加严重。在这种情况下,基于极坐标的心距函数始终是一个二维函数,使得该方法不适合作为单一方法[23]。因此,本系统中必须对特征方法进行调整,以克服其已知的缺点,并最好与其他方法一起使用。

  • 找到缺陷位置
    用这种方法寻找缺陷的原理是找到从中心到轮廓的距离大于(或小于,取决于轮廓)的点,根据理想零件的特征。虽然该方法能较好地估计出缺陷的大小,但也存在形状复杂和轮廓局部变化的问题,好消息是这些问题能够被不同程度地解决。

    图32 一个轮廓的中心线特征。红线=当前零件,绿线=理想轮廓线。


图33 从中心特征中发现的缺陷点并绘制绘制在零件的轮廓线上

  • 替代方法
    另一种解决方案是使用一种不同类型的形状签名(感觉翻译为签名、标签、特征都可以)称为[s,ψ] 绘图,它不使用中心点,而是通过计算在每个轮廓点[24]的切线和参考线(应该是从标准零件中获取)之间的角度来创建签名。另一个可能的问题可能是用这种方法度量缺陷的大小。尽管看起来很有希望,但由于时间有限,没有对[s,ψ]做进一步的研究 ,它的优点和缺点有待于进一步研究。

3.3 表面缺陷和结果展示

在表面上发现缺陷的方法是相当直接的,不需要任何特殊技术。它依赖于一个良好的灯光设置来最大化缺陷的对比度,然后尽可能准确地找到这些缺陷的轮廓。如果上述方法工作良好,表面缺陷将出现在零件的轮廓之中。

但是,有些情况会使查找缺陷变得更加困难。首先,如前所述,表面缺陷有时可能非常接近轮廓,使其成为轮廓缺陷,因此更难发现。在其他情况下,缺陷可能非常大,如果不采取措施避免这种情况,可能会把缺陷和钻孔混淆。此外,之前提到过的,在某些情况下缺陷可能对比度非常低,进而很难获取它的确切尺寸。更糟糕的情况是,气孔可能检测不到。最后,零件是否有缺陷取决于缺陷的尺寸。因此,该算法必须能够准确地将零件与有效的检测标准进行比较。

  • 缺陷尺寸检测
    除了测量气孔大小和与标准件进行比较外,还提出了解决问题的其他方法。有几种方法可以用来估计缺陷的大小。一种方法是估计缺陷的总面积。这可以通过计算小孔下的所有像素来实现,因为每个像素对应的面积是已知的(0.01mm2),所以总面积可以很容易地计算出来。另一个选择是测量缺陷的长度。

  • 与标准件进行比较

    图34 待检零件与标准零件进行对比 把比较明显的缺陷以及其大小绘制在图像上。

该算法将缺陷的大小和位置与检测标准进行比较,并确定其大小(和位置)是否超过最大允许范围。然后判断零件是否有缺陷,并将缺陷类型和尺寸一起输出。

  • 显示结果
    除了上面的演示之外,算法还有另外两种运行模式。第一种模式是显示找到的所有轮廓和缺陷,而不管缺陷的大小或是否足够严重。这种模式有利于快速故障排除,即知道算法是否能够检测到有问题的气孔,是否漏检或者完全就检测不到。除此之外,该算法可以在不与标准进行比较的情况下运行,将发现的缺陷全部显示出来,并输出零件是否有缺陷来进行质量分析。

本软件自动保存所有缺陷部件的结果,便于故障排除和以后参考。此外,还计划添加功能,用于在检查中最经常发现缺陷的地方,以及它们的大小和其他计算参数,生成各种统计数据。这种数据库将有助于提高产品质量。

图35 与图44 相同的图像,但是用不同的方式检查,所有明显的缺陷都显示出来。注意,发现的缺陷轮廓中有两个被忽略了,因为它们对性能没有影响


图36 所测孔洞种类。注意一些表面缺陷是如何在加工过程中由于与轮廓非常接近而成为轮廓的一部分,从而被发现为轮廓缺陷。另外,注意两个表面缺陷是如何低于设定的检测阈值,因此被忽略。


图37 [a,b]检测孔洞与检测标准比较。(a)上没有突出显示的缺陷对组件的性能没有影响,因此可以被允许。

4. 系统标定和与人工检测的比较

原型系统建立后,在一周内进行150次检查,对其进行校准和算法测试。这个数字本可以更高,但由于在算法中发现了bug,时间就浪费了。

尽管最初的理解(测试前),该算法接近准备好准确的初始测试表明它缺乏鲁棒性各地区发现毛孔,在很多情况下它无法提取图像的轮廓由于不同的因素从错误的照明,可怜的曝光和坏的倒影输送机和附近的对象。发现了现有方法的各种缺陷,需要加以修正以提高系统的鲁棒性。

此外,该系统的参数被校准,以尽可能接近标准,但经过与运营商长时间的讨论后,发现在某些地方,标准不够详细。因此,第一个测试是通过挑选出一组系统声明有缺陷的不同部件,并将它们交给不同的操作人员来检查和评论。在此基础上,对系统算法进行了改进和重新校准。该系统被校准得比正常情况下稍微敏感一些,以便找到小缺陷和大缺陷的良好混合物,以创建测试的良好样品。

4.1 盲法实验

在这一阶段,该算法被认为可以与人工检查进行比较。为了在不影响生产的前提下尽可能客观地测试系统,计划并进行了以下盲测实验。

  1. 系统连续运行,将被判断为有缺陷的零件从传送带移除,并和从判断为合格的零件中随机选择的零件进行混合。
  2. 当收集到总共50个不合格品和50个认可的零件时,这些零件被随机地给予从1到100的唯一ID号,而不显示它是否被宣布为不合格品或被系统认可
  3. 然后由三名不同的质检人员分别对这些零件进行检验,他们在这100个零件中把发现的不合格零件的编号写在一张图纸上。所有部件以两种方式进行检验;一是“所有区域都不允许有气孔”,二是使用常规检查标准。
  4. 对结果进行了分析和可视化,并对系统进行了进一步的改进和校准,使之与人体检测相匹配。
    该视觉系统在一周内进行了多次操作,检查了大约500个部件。此外,在测试期间不允许更改软件或硬件。
  • 测试的目的
    这个测试被设计来获得更好的理解什么是人工检查人员实际认为的缺陷。研究表明,铸造后的零件会产生许多有害的缺陷,如边缘剥落、浅划痕以及铸造后的轮廓偶尔出现的尺寸不准确等。此外,根据对系统的初步测试和与不同操作人员的讨论,发现每个人对缺陷的大小有略微不同的看法,从而使该部件真正具有缺陷。换句话说,什么是真正的缺陷,什么不是,阈值水平多少是主观的,因此很难校准系统。

此外,测试表明,该算法在某些方面存在精度不足的问题。

  • 实验观察
    测试表明人类检查员如何检查零件,可以得出结论,每对于每个零件,首先可能的候选缺陷被发现,然后这些候选缺陷被从不同的角度检查,然后通常用指尖、指甲或钢笔等工具探测,以更好地估计其严重程度。

对这100个零件的人工目视检查是在一个与质量检查相似但不完全相同的位置进行的(为了避免停产)。单次检查需要60-90分钟,其中包括一些提升和偶尔的强制中断,很好地模拟了实际情况生产环境。另外,100个零件的样本量已经够累人的了,可能会使检验员在整个测试过程中无法保持注意力的巅峰状态,进一步模拟真实情况中的检测条件。

由于测试是盲法实验,操作人员不知道他们所检查的部件是否被系统批准或宣布有缺陷,因此心理影响被保持在最低限度。

  • 结果
    实验给出了非常有趣的结果,并在改进算法中得到了很好的应用。下面的图表(图38)是为了显示视觉系统认为有缺陷的部分中有多少是有缺陷的,根据质量检验员的判断(平均)。类似地,它说明了系统批准的部件中有多少被审查员批准了。第一个测试是使用自定义的质量标准“所有区域都不允许有缺陷”来完成的。


图38 统计平均值的盲法实验结果。

可以看出,该系统比检查员发现了更多的缺陷部件,这表明该系统可能过于敏感。此外,检验员宣布有缺陷的部分,视觉系统批准。(译者注:即回收率高,但正确率低,但还可以接受吧,只有一个缺陷零件漏判了)


图39 系统和检查人员发现的缺陷的总数

有缺陷的零件可能有不止一个缺陷,这使得情况更加复杂。因此,在某些情况下,视觉系统发现3个缺陷,而检查员发现2个,有趣的是,反之亦然。虽然,必须指出的是,当一个零件同时有多个缺陷时,检验员并不总是标记单个的缺陷,而是只画一个符号。此外,其中一名检验员没有记下9个零件的缺陷位置,这就是为什么该检验员被排除在上述统计之外。

上面的数字是发现的每种错误类型的总数,可以包含以下两种情况:

  1. 系统发现缺陷,检查员没有
  2. 检查员发现了缺陷,系统没有

因此,视觉系统并没有发现操作员所发现的34个轮廓缺陷。由于上述所有原因,在与检验员进行进一步的分析和讨论以澄清之前,对上述关于发现缺陷总数的统计必须有所保留。若由此得出结论,则系统对轮廓缺陷的敏感性要高于表面缺陷。

下图是按照正常检验标准进行测试的结果。正如预期的那样,检测到的缺陷部件的总数大大降低了。尽管如此,视觉系统还是比检查人员多发现了三个缺陷零件。据了解,系统判定零件存在缺陷的一个原因是由于其无法准确提取的轮廓,这是算法的缺陷,已被修复。尽管如此,这种假阴性仍然包含在统计中,因为即使在系统完全实现的情况下,理论上也可能发生类似的事件。

我们还知道,系统宣布有缺陷的两个零件是由于这些零件的表面缺陷正好位于一个稍后要钻的孔的边缘——检查员没有注意到这一事实。


图40 符合正常检验标准时的实验结果在100个中发现的缺陷部件的数量。

  • 结果分析
    盲法实验表明,视觉系统发现的轮廓缺陷比视障者多,而表面缺陷较少。这说明在测试过程中,系统可能被配置为对轮廓缺陷过于敏感,因此发现的缺陷太小,且不影响零件性能,且视觉外观明显。由于该算法对切削液污染进行了主动滤波处理,使得系统在发现表面缺陷时性能较差。==与最初的预期相反,由于液体并不是真正的问题,==多亏了毛刷系统,这部分算法可以从视觉系统中排除或减少,大大提高了准确率和检测率。

人工检查被认为要优于视觉系统检查,因为后者不能测量出缺陷的深度,或者从多个角度分析,这也是为什么对于被视觉系统给出不同的判断的零件会被进行进一步的分析,并且对系统进行重新校准来更加符合人工检测。

5. 总结与讨论

设计一种低成本的全视觉系统,用于所述零件的全自动质量检测,是一项非常具有挑战性的任务。其主要原因是铸造件在不同位置可能出现的缺陷种类较多,零件的轮廓形状复杂,铸造件自然变化较大。设计低成本系统的目的进一步增加了对算法的要求,因为它必须处理一些在理论上可以用硬件解决的因素,并在整个检查中使用不同的设置。这些因素包括分离零件,充分控制照明,去除背景噪声和最重要的清洗零件。

使用软件处理上述的要求需要进行广泛的测试,因为可能有许多可能的情况,其中一部分算法可能失败。本论文的测试周期较短,共计700次左右的检测。随着算法(不包括实验时间)的不断改进,应该考虑的更少。因此,对700幅图像进行了不同算法的测试。根据IEE的指导方针,一个视觉系统应该在beta测试期间至少测试1000次,并在最终批准[8]之前达到10万次。

测试结果表明,该算法在不同的检测条件下都有较好的检测效果,可以发现大量的缺陷,且检测精度令人满意。盲法检实验表明,该系统可以与人工检测进行比较。然而,由于缺乏深度信息,使用单张图像的系统在理论上永远不会超过人工检查。

测试还表明,该系统可以在几乎所有领域进行改进。改进的最大机会是在某些轮廓区域的精度范围内,更准确地捕捉缺乏对比度的表面缺陷的大小。进一步发展算法的边缘检测和掩膜部分,可以更精确地提取轮廓信息,同时减少细节的偶然丢失,从而提高系统的整体鲁棒性。此外,用更高分辨率的图像测试该算法,看看它是否能显著提高性能,这将是很有趣的。

本文提出了各种改进的建议,可以肯定的说,改进算法只是投入更多的时间和进一步的测试算法而已。本文建立了一个近700幅图像的数据库,可以用于离线测试和开发。另外,如果使用原生语言,比如C++版本的OpenCV库来移植本算法的话,算法的性能还能进一步提高。

该系统及其图像处理算法仍处于原型阶段,但作为生产线的永久组成部分,它们离实现已经不远了。然而,关于所需的支持系统的细节并没有在本文中讨论。

  • 参考文献
    参考文献就不放了,博客提供了原文链接,感兴趣的可以自取。

DEVELOPMENT OF A LOW-COST VISION SYSTEM FOR FINDING CONTOUR AND SURFACE DEFECTS ON CAST IRON ENGINE相关推荐

  1. px4报dangerously low battery! shutting system down.

    这两天用px4突然开始报dangerously low battery! shutting system down.,从px4 github项目上看到是因为telem接口中的tx和rx相连了,mavl ...

  2. IBM AIX RISC System/6000 Error: 110: Media surface error错误处理

    Oracle备库alert日志中有如下报错: lave exiting with ORA-1115 exception Errors in file /u01/app/oracle/diag/rdbm ...

  3. Android进程优先级architecture : low memory killer (/system/core/lmkd/lmkd.c)

    更新 ActivityManagerService.updateOomAdjLocked 保存 /proc/pid/oom_adj /proc/pid/oom_score_adj /proc/pid/ ...

  4. matlab vision工具箱使用手册,matlab-Computer Vision System ToolBox的系统对象使用

    在MATLAB中,调用计算机视觉工具箱中的vision.GeometricScaler可实现对输入图像的缩放变换. vision.GeometricScaler的具体使用方法如下: vision.Ge ...

  5. UVA 1048 Low Cost Air Travel 最短路

    以(i,j) 为结点建图,其中i表示目前已经到过行程单上的前i个城市,j是目前在哪个城市. 注意 1.起点是行程单上的第一个城市 2.城市的编号会很大,要重新编号. //#pragma comment ...

  6. 计算机视觉英文翻译,计算机视觉(机器视觉)系统,computer vision (machine vision)system,音标,读音,翻译,英文例句,英语词典...

    补充资料:计算机视觉中的结构光法 计算机视觉中的结构光法 structured light method in computer vision 避免复杂的对应点匹配间题,更是成为研究的热点,研究成果不 ...

  7. 【论文解读--力控电机+四足机器人载体设计】(Cheetah mini)A Low Cost Modular Actuator for Dynamic Robots

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.简介 二.电机执行器类型 1.力控电动电机执行器 2.液压执行机 ...

  8. 机器视觉表面缺陷检测综述

    转自:http://www.cjig.cn/html/jig/2017/12/20171202.htm#b22 机器视觉表面缺陷检测综述 <中国图像图形学报> Tang B, Kong J ...

  9. 2017-12-16 机器视觉表面缺陷检测综述

    机器视觉表面缺陷检测综述 转载自:http://www.cjig.cn/html/jig/2017/12/20171202.htm#top <中国图像图形学报> Tang B, Kong ...

  10. 论文整理——用于跟踪散养猪的实时计算机视觉系统的开发

    论文简介 论文中文翻译:<用于跟踪散养猪的实时计算机视觉系统的开发> 论文名称:<Development of a real-time computer vision system ...

最新文章

  1. python与excel做数据可视化-我在工作中是怎么玩数据的—数据可视化系列教程—Python篇...
  2. NOIP2018 模拟 9.11
  3. java 查看变量类型
  4. Nexus安装及配置
  5. python为text添加滚动条_Python GUI编程(Tkinter)7、带滚动条的Text
  6. druid不能close mysql连接_alibaba druid mysql连接问题
  7. 12月25晚-12月29日做的两个网页
  8. ICDAR发票识别冠军(文字检测Corner)
  9. OpenCV编译时提示错误“ Built target libprotobuf”
  10. 易筋SpringBoot 2.2 | 第三十二篇:Redis Docker入门
  11. 高频电子线路实验箱QY-JXSY25
  12. 图片片转换成位深度为1的单色bmp照片
  13. 《计算机组网试验-DNS域名服务协议 》杭州电子科技大学
  14. SaaS ToB产品的易用性设计2
  15. 精练战略云 VS “华丽“战术云
  16. 蚂蚁金服面试经历(内含大量干货)
  17. ps切图(8)——精准切图
  18. 7种工具帮助你审查代码
  19. MySQL保存特殊字符及表情符
  20. 2021-02-26构造函数

热门文章

  1. jsp汽车4S店维修管理系统
  2. NetSetMan Pro专业网络设置管理器
  3. 基于K—近邻的车牌号识别小实验
  4. SpringMVC使用AJAX上传图片
  5. unity 导入STL格式模型(STL 文本ASCII码格式文件)
  6. 关于TSP问题的几种解决办法
  7. Iconfont阿里矢量图库结合css3属性font-face的使用
  8. u盘和计算机捆绑,不要再使用乱七八糟的捆绑PE了——教你制作最纯净的PE系统维护U盘!...
  9. 基于QT框架的离线词典应用程序
  10. matlab2019b的gui界面在哪_MATLAB(3)——GUI界面设计入门