请求指导:使用计算机视觉对小而薄的金属环轴进行质量控制应遵循什么方法?

Requesting Guidance: What approach to follow to do Quality Control on small and thin metal ring shafts using Computer Vision?

我是计算机视觉领域的新手,正在寻求您的指导以确定解决以下情况的方法:

What approach to follow to do Quality Control on small and thin metal rings using Computer Vision

把详细要求放在下面(这是我能分享的最好的):

首先,我附上了我们需要做 QC 的戒指的图片。

Ring_for_QC

我们需要做以下检查:

1.Surface戒指涂层脱落

2.Portion 戒指被削掉

3.Scratch 在环的表面

4.Width环不齐

5.Dent上环

6.Entire环面与平面不完全水平; 可能是由于一些凹痕,环的一部分搁在平面上,形成 1 或 2 度角 (我在附图中把6号标为'uneven surface')

我还附上了另一张图片,标明随机戒指上发现的质量问题。elevated view with marked QC issues

场景:

挑战: - 需要设置一个工作站来捕获每个正在检查的环的图像或视频

目前我们正在研究opencv的背景扣除方法

从您那里获得一些见解将会很有帮助 better/feasible 方法应该是什么

您可以看到如何进行人脸识别。

  1. 人脸检测。

  2. 面部对齐和归一化。

  3. 特征提取。

  4. 比较特征与模式。

但在您的情况下,您可以跳过第 3 段并将第 2 段与参考图像进行比较。根据条件,可能需要额外的过滤。

因为这是一个学生项目,所以我将强调图像处理而不是应用程序的其他方面。请参阅底部部分以了解 real-world 应用程序的注意事项。

除此之外,一般性评论:实施质量控制 (QC) 愿景很难做到正确。如果要检查的产品很便宜(例如戒指,塑料小东西),如果视觉检查的结果是临界值pass/fail,或者不确定,您可以拒绝该零件。如果要检查的部件很昂贵(例如,拖拉机的大型组件、单个 CPU、生产线末端附近的医疗设备),那么您必须有非常明确的规范,并且系统需要尽可能坚固尽可能。

通常,您希望针对每种类型的缺陷优化成像。例如,用于检测划痕的相机位置、镜头和照明可能与尺寸测量所需的完全不同(a.k.a。尺寸测量)。

机器视觉与计算机视觉 当您在线搜索特定于工业自动化视觉的算法、设备和技术时,包括生产线上零件的质量控制,然后对于 English-language 网站喜欢术语 "machine vision" 而不是 "computer vision."

https://en.wikipedia.org/wiki/Machine_vision

机器视觉是工业用图像处理(+ 相机 + 照明 + ...)的通用行业术语。虽然不同的人可能使用不同的术语,术语不如学习技巧重要,但是通过搜索 "machine vision." 会发现很多 material 术语 "computer vision" 往往是用于 non-industrial 应用程序和学术研究,尽管在英语以外的语言中,术语 "machine vision" 和 "computer vision" 可能相同。相比之下,"medical imaging"类似于机器视觉,但涉及图像处理应用到医学应用。

灯光

最重要的是,你必须控制光线。环境照明,例如台灯、顶灯等,不仅对视觉系统在生产中检查零件毫无用处,而且通常会干扰图像处理。有时您可能会发现 一些 光线控制不佳的缺陷,但要生成最一致的结果,您需要在特定位置设置灯光,运行 特定位置的灯光,可验证的强度,并让您的视觉系统检测到照明出现问题的时间。

有 "machine vision lights" 专为特定应用而设计,例如在光亮表面寻找划痕、使光亮表面看起来不那么光亮、背光部件(这对尺寸测量很有用)、从低角度照亮部件, 等等。了解不同类型的照明。

https://smartvisionlights.com/

https://www.vision-systems.com/content/dam/VSD/solutionsinvision/Resources/lighting_tips_white_paper.pdf

与其花很多钱买特殊的灯,不如模拟一下:

  • LED 手电筒或单个 LED(作为 "point" 光源)
  • 强光+半透明sheet塑料(用于背光)
  • 白纸巾或其他一些漫射material在强光前
  • ...

照明的重要性不可低估。控制照明条件可以提高成功的机会,并且通常是实现 real-world 环境中所需的测量或 pass/fail 评估的准确性所必需的。

准确性、正确性、实用性 在某些时候,您可能想知道机器学习对于应用程序是否有用或必要。要问自己(或客户)的问题是:需要检测多少百分比的缺陷?

例如,如果戒指上缺少芯片,则可能是致命缺陷。环是否在某些 safety-critical 应用程序中使用?如果是这样,QC 的视觉检查必须非常稳健。

即使您熟悉术语 "accuracy" 和 "precision,",在考虑图像处理问题时也要确保它们具有非常明确的含义:

https://en.wikipedia.org/wiki/Accuracy_and_precision

那么,需要找出多少百分比的芯片缺陷? 90%? 95%? 98%?

使用术语 "accurate" 更宽泛地表示 "the vision system gets the measurement correct and/or finds the defects we know are there," 您读过的最准确的机器学习算法的准确度是多少?或者至少,什么才算是机器学习的相当令人印象深刻的准确性? 95%? 98%?

如果您在生产线上测量机器零件,那么您通常希望尺寸测量和缺陷检测的准确度达到 99% 或更高。对于 high-value 产品,以及对缺陷高度敏感的电子元件等产品,准确率可能需要达到 99.999% 或更高。可以这样想:如果制造商正在制造数千或数万个零件,他们不希望垃圾零件每天多次通过您的视觉系统。

用于图像处理的机器学习已经存在很长时间了。处理速度、内存和训练集大小都得到了改进,算法也有了改进,但需要注意的是,机器学习只对某些应用是 suitable,而在其他应用上会惨败。

技巧

To begin with, I have attached a picture of the ring we need to do QC of.

Ring_for_QC

Ring diameter = 3 inch

获取准确的直径,包括公差。如果标称直径为 3.000 英寸,则公差可能以千分之一英寸表示。对于学生项目,您可能不需要知道这一点,但如果您要为工厂所有者提出解决方案,您甚至不想在没有完整的零件规格和大量样品的情况下建议交货的价格或时间表部分。

从一张图片来看,不可能太具体地说明一个缺陷可能是什么样子——同一个零件在不同的工厂可能有不同的缺陷,甚至在同一工厂的不同生产线上——但我们可以做一些猜测。

1.Surface coating of the ring peeled off

从一张图片看不清楚表面涂层应该是什么样子,或者下面是什么。 您必须至少提供一张合格部件的图片,并至少提供每种缺陷的一张图片。

什么是表面涂层?阳极氧化?画?搪瓷?塑料?起司?无论如何,了解 material 它是什么,以及 material 如何退化,将提供一些线索,说明哪种视觉设置可能有助于检测涂层问题。涂层质量的变化会影响外观纹理(例如边缘含量)、brightness/darkness(强度)、颜色、光泽度等。

目前,我们假设涂层剥落改变了未涂层表面相对于剩余涂层表面的亮度或纹理。然后你的图像处理可能看起来像下面这样:

  1. 判断图片中是否有戒指
  2. 从背景中分割环。也就是说,使用连通分量(OpenCV 的 findContours())、SIFT 或其他一些技术等算法,从背景.
  3. 将进一步处理隔离到仅对应于零件表面的那些像素。
  4. 使用一些技术来找到不同纹理差异、亮度差异等的聚类。这是需要更好地描述涂层的地方。如果照明和镜头参数是"fixed," 你可以考虑生成图像中亮度值的直方图(0 = 黑色,255 = 白色),然后比较好部分和坏部分的直方图 - 是否存在一些统计差异?或者您可以使用连接的组件(再次使用 findContours())来聚集不同颜色的像素,假设缺少涂层会改变零件的外观颜色:可能涂层是棕色而零件是银色。

如果没有照片 and/or 更具体的涂层描述,很难猜出什么技术在这里是相关的。希望这能说明为什么规格很重要。

涂层可能以不同的方式缺失:剥落、小的缺失(空隙)、部分刮掉等。很难提前预测缺失涂层的形状和大小。

当缺陷的大小和形状难以预测,但缺陷与图像强度(像素亮度)或颜色的差异相关时,探索这些想法:

  • 生成一个 "edge image",您可以在其中找到 brightness/color 个转换。您从灰度或彩色图像开始,然后使用 Sobel 或 Canny 或其他算法生成边缘强度图像。
  • 应用统计方法来确定图像 "edgy" 的情况。是否有超过 N 个像素(或超过所有像素的 5%)的边缘强度大于 S?

一旦您有了一些基本算法来识别良好部件和缺少涂层的部件之间的差异,那么您可以考虑使用机器学习来检查大量(大量!)样本以帮助确定最佳参数化。例如,你怎么知道应该考虑多少边缘像素或边缘像素强度"bad"?

2.Portion of ring chipped off

这取决于芯片是否仅从零件轮廓可见。例如,如果您将零件放在灯 table (a.k.a. "backlight") 上,您会 总是 看到被认为是缺陷的缺陷吗? "chip"?或者芯片可以只在面向相机的顶面上吗?

要查找边缘芯片,将零件放在背光灯上会大大简化问题。

  1. 确定零件的位置和方向(例如,使用连接组件、归一化相关、SIFT 或任何适用于零件 a 的算法tabled 要求位置的准确性)。
  2. 查找与零件的外环和内环对应的边。
  3. 使用 Hough 圆拟合、RANSAC 圆拟合或(meh)最小二乘圆拟合将圆或近似圆椭圆拟合到边缘点,参数化为外环和内径的已知尺寸(以像素为单位) .
  4. 对于用于圆拟合的点,找到point-to-circle(或point-to-ellipse)最短距离。这个距离越大,你就越有可能有碎片或丢失块。
  5. 为确保找到标识、芯片或其他任何东西,而不仅仅是单个 "noise" 边缘点,请按顺时针或逆时针方向检查点,并且仅将一系列周边点视为缺陷,如果N 个连续点的中位数或平均 point-to-edge 距离大于 N.

一种更简单的方法可能是将一个 black-and-white 掩码(一个模板)表示一个良好的零件到要检查的零件的当前位置和旋转。如果模板和样品部分非常精确地对齐,并且如果您执行图像减法,那么您可能足够幸运地在有缺陷的地方得到簇或像素。但是这个方法比较粗糙,很难做到稳健。

有机器学习技术可以识别边缘芯片,但您需要大量零件样本来训练这些技术。或者,如果您没有足够的样本,您可以使用稍微修改光照、在图像中的不同位置、手动添加缺陷等的样本样本来帮助训练算法。但这完全是另一个讨论。

3.Scratch on the ring's Surface

请参阅上面的 link,了解不同类型的照明。您需要尝试几种不同的照明配置,以确定适合您的部分。

不过,一般来说,划痕可能会在亮度和 "edginess"(图像边缘内容)方面与其余部分存在差异。如果幸运的话,划痕可以显示出不同的颜色。

划痕在外观、面积和形状上可能千差万别,因此很难对算法进行参数化以捕获所有划痕。再一次,边缘内容、亮度和颜色的统计分析往往是有用的。

总的来说:要获得特定 QC 检查的最佳结果,您需要专门为零件设计一个系统。您的视觉系统可能是可配置的,对于不同类型的 QC 检查,可以有不同的灯光和相机组合,但对于任何特定的缺陷检测,您都希望尽可能地控制零件的外观。依靠软件来完成所有工作会产生一个不太健壮的系统,客户通常会把它扔掉。

4.Width of the ring is uneven

这几乎是尺寸测量或光学测量的一个例子。如果您只是寻找不均匀性,则不一定需要以毫米等工程单位测量直径:您可以只测量像素。但是,确保像素测量准确所需的努力通常会导致您无论如何都以毫米为单位进行测量。

假设光学设置正确并且(或多或少)经过校准(我将在下面描述),这是一个基本过程:

  1. 确定零件的位置和位置
  2. 从查找零件的算法,或从识别边缘像素(例如 Sobel、Canny 等)的 follow-on 算法中,仅针对环的外径查找边缘像素。
  3. 对边缘像素进行circle/ellipse拟合,剔除不属于circle/ellipse的离群像素。
  4. 让您的算法从对应于外径的边缘像素列表中的第一个像素开始。
  5. 从第一个像素开始,找到最远的边缘像素。理想情况下,这将是截然相反的点。
  6. 循环遍历所有像素,找到最远像素的距离。 (这在速度方面不是最优的,但更易于编码。)
  7. 生成所有距离的直方图。
  8. 根据point-to-point距离的直方图确定good/bad。

如果出现以下一种或多种情况,您可以调用部件 "bad":

  • 至少 N point-to-point 距离超过 P 像素的距离
  • point-to-point距离的标准差超过某个阈值T
  • ...

距离的测量取决于图像中不同位置的 point-to-point 距离的一致性。如果您对距离进行准确、精确的测量,您会注意到固定长度的物体的长度似乎会根据其在图像中的位置而变化:如果物体位于图像的中心,它可能看起来是 57.5像素长,但在图像的一角可能显示为 56.2 pi很长。

要纠正这些违规行为,您可以...

  • 执行非线性平坦度校正。这也将校正相机与零件的 non-normal 对齐,尽管您希望从相机的光轴正常(垂直)到零件表面开始,如 possib.e.
  • 进行一些快速测量以估计测量值的变化程度。

5.Dent on the ring

6.Entire surface of the ring is not completely horizontal to the plane; may be due to some dent a part of the ring is resting on the plane surface creating some 1 or 2 degree angle (I have marked no.6 as 'uneven surface' in the attached picture)

使用相机从侧面成像。确保背景简单。

1 到 2 度的差异可能很难使用放置在头顶上方的摄像头检测到。如果幸运的话,您可以检测到零件的外边缘更椭圆而不是圆形,但是检测到这种情况的能力取决于零件的颜色和厚度。此外,您不一定能够区分畸形零件和倾斜放置的零件——但对于某些检查来说这没关系,因为两者都是缺陷。

但是,在 real-world 应用程序中,如果您拒绝了其他方面都不错但恰好倾斜了一个小角度的部件,客户可能会不高兴。机械夹具可能会通过确保零件平放来解决问题。

I have also attached another picture marking the quality issues found on a random ring.elevated view with marked QC issues

图片不够清晰。将零件放在更简单的背景上并修补灯光,使好与坏之间的区别更加明显。

One single ring can have one or more than one of the above mentioned 6 defects

运行 一个接一个的算法。在 运行 使用每个算法(或者更确切地说,每个算法链)之前,您可能还必须打开和关闭不同的灯。

Issue 1 & 3 can occur at either surface of the ring and we need to check both the surfaces

We need to QC on one single ring at a time

您可能需要编写一种算法来检测是否恰好存在多个环。即使您没有被特别要求这样做,这种情况也会在生产中发生,您的教授可能会让您大吃一惊。至少知道如何检测多个环的存在。

这是视觉的另一个方面:您可能会开始考虑解决问题所必需的算法和光照 "the problem,",但您也会花费大量时间找出所有可能出错的地方,并编写软件检测这些条件以确保您不会产生错误的结果。例如,如果灯熄灭会怎样?如果存在两个环怎么办?如果戒指不在视野范围内怎么办?如果零件所在的表面沾上灰尘怎么办?如果镜头变脏(它会变脏)怎么办?

几个原则:

  • 提供图像处理的最佳图像您考虑哪种算法最有效之前。
  • 了解 accuracy/success 速率是必要的,并对其进行测量。
  • 获得尽可能多的样本:如果可能的话,成百上千。有机会测量 "online"(在实际生产中)是有帮助的。

Real-world 应用程序 如果它是一个 real-world 应用程序——也就是说,如果你进入专业视野——还有更多的步骤看起来不那么困难,但事实证明它们很关键:

  • 环如何进入视野(或进入 "station"):在移动的传送带上?由机器人放置?在某个容器中?
  • 是什么触发了戒指的视觉检查——可编程逻辑控制器,"light curtain" 戒指通过,或者视觉系统本身是否必须确定戒指何时准备好进行检查。
  • 如何将结果传送到其他设备。 (这可能是一个巨大的麻烦,如果沟通设计和实施不当,客户可能会拒绝一个原本不错的视觉系统。)
  • 是否保证一次只看到一个环

这并不是说大学不是真实的世界:只是如果您碰巧忽略了什么,您可能不会损失数万或数十万Euros/pounds/dollars。