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

Python 请求指导:使用计算机视觉对小而薄的金属环轴进行质量控制时应遵循什么方法?,python,deep-learning,computer-vision,iot,Python,Deep Learning,Computer Vision,Iot,我是计算机视觉领域的新手,希望得到您的指导,以确定解决以下情况的方法: What approach to follow to do Quality Control on small and thin metal rings using Computer Vision 下面是详细的要求,这是我能分享的最好信息: 首先,我附上了我们需要做QC的戒指的照片 环直径=3英寸 我们需要进行以下检查: 1.环的表面涂层剥落 2.环削掉的部分 3.环表面有划痕 4.环的宽度不均匀 5.戒指上的凹痕 6.环的

我是计算机视觉领域的新手,希望得到您的指导,以确定解决以下情况的方法:

What approach to follow to do Quality Control on small and thin metal rings using Computer Vision
下面是详细的要求,这是我能分享的最好信息:

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

环直径=3英寸 我们需要进行以下检查:

1.环的表面涂层剥落

2.环削掉的部分

3.环表面有划痕

4.环的宽度不均匀

5.戒指上的凹痕

6.环的整个表面与平面不完全水平; 可能是由于某些凹痕,环的一部分位于平面上,形成1或2度角 我已在所附图片中将6号标记为“凹凸不平的表面”

我还附上了另一张图片,标明在随机戒指上发现的质量问题

情景:

一个单环可能有上述6种缺陷中的一种或多种

问题1和3可能发生在环的任何一个表面,我们需要检查两个表面

我们需要一次对一个环进行质量控制

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

该工作站将有多少台摄像机,摄像机的角度是多少

由于我们需要检查环的两侧,我们需要决定是否:

我们将把戒指放在一个透明的表面上并拍照 或

我们需要在一边拍摄完图像后翻转戒指

下一个挑战是我们应该采用什么计算机视觉技术来识别所有这些问题

目前,我们正在围绕opencv的背景减法方法进行一些研究

这将有助于从你那里获得一些见解
什么应该是更好/可行的方法

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

人脸检测

面对齐和规范化

特征提取

将特征与模式进行比较


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

由于这是一个学生项目,我将强调图像处理,而不是应用程序的其他方面。有关实际应用程序的注意事项,请参见底部部分

除此之外,还有一个一般性意见:实施质量控制QC愿景很难做到正确。如果要检查的产品价格便宜,例如一个戒指、一个小塑料制品,并且如果视觉检查的结果是合格/不合格或不确定,则可以拒收该零件。如果要检查的零件很昂贵,例如拖拉机的大型总成、单个CPU、生产线末端附近的医疗设备,则必须有非常明确的规格,并且系统需要尽可能坚固

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

机器视觉与计算机视觉 当你在线搜索工业自动化视觉的算法、设备和技术,包括生产线上零件的质量控制时,英语网站倾向于使用机器视觉,而不是计算机视觉

机器视觉是图像处理+摄像机+照明+的通用行业术语。。。工业用途。虽然不同的人可能会使用不同的术语,而且术语没有学习技术重要,但是通过搜索机器视觉,你会找到很多资料。计算机视觉这一术语通常用于非工业应用和学术研究,尽管在英语以外的语言中,机器视觉和计算机视觉这两个术语可能是相同的。相比之下,医学成像类似于机器视觉,但涉及图像处理在医学应用中的应用

照明

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

有专门为特定应用而设计的机器视觉灯,例如在有光泽的表面上寻找划痕,使有光泽的表面看起来不那么有光泽,以背光照亮我们需要的零件 用于尺寸测量、从低角度照亮零件等。了解不同类型的照明

与其花很多钱在特殊的灯上,您可以模拟它们:

LED手电筒或单个LED作为点光源 强光+半透明塑料片,用于背光照明 在强光前使用白色薄纸或其他扩散材料 ... 照明的重要性不可低估。控制照明条件可以提高成功的机会,并且通常是实现真实环境中所需的测量精度或通过/失败评估所必需的

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

例如,如果环上缺少芯片,则可能是致命缺陷。环是否用于某些安全关键应用?如果是这样的话,QC的视觉检查必须非常稳健

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

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

更宽松地说,使用术语“精确”意味着视觉系统获得了正确的测量和/或发现了我们知道的缺陷。您所读过的最精确的机器学习算法的精度是多少?或者至少,对于机器学习来说,什么才算是令人印象深刻的准确度呢?95%? 98%

如果您在生产线上对机器零件进行测量,那么您通常希望尺寸测量和缺陷检测的精度达到99%或更高。对于高价值产品和对缺陷高度敏感的电子元件等产品,精度可能需要达到99.999%或更高。这样想吧:如果一个制造商正在生产数千或上万个零件,他们不希望垃圾零件一天几次通过你的视觉系统

机器学习用于图像处理已经有很长一段时间了。处理速度、内存和训练集大小都有所提高,算法也有所改进,但需要注意的是,机器学习只适用于某些应用程序,在其他应用程序中会失败得很惨

技巧

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

用于质量控制的环

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

从一张图片上看,不可能太具体地描述一个缺陷可能看起来像什么,同一个零件可能在不同的工厂有不同的缺陷,甚至在同一工厂的不同生产线上,但我们可以做出一些猜测

1.环的表面涂层剥落

从一张图片上看,不清楚表面涂层应该是什么样子,或者下面是什么。您必须提供至少一个良好零件的图像,以及每种类型缺陷的至少一个图像

什么是表面涂层?阳极氧化?油漆搪瓷塑料干酪不管是什么情况,了解它是什么材料,以及这种材料是如何降解的,都会提供一些线索,说明什么样的视觉设置可能有助于检测涂层的问题。涂层质量的变化会影响表面纹理,例如边缘含量、亮度/暗度、颜色、光泽度等

目前,假设涂层剥落改变了未涂层表面相对于剩余涂层表面的亮度或纹理。然后,图像处理可能如下所示:

确定图像中是否有戒指 从背景中分割圆环。也就是说,使用算法(如连接组件OpenCV的FindContentours、SIFT或其他技术)从背景中识别已知大小和形状的刚性对象的存在和位置。 将进一步处理隔离到仅与零件表面对应的像素。 使用一些技术找到不同纹理差异、亮度差异等的簇。这是需要更好地描述涂层的地方。如果照明和镜头参数是固定的,可以考虑在图像0中生成亮度值直方图=黑色,255=白色,然后比较好部分和坏部分的直方图是否存在一定的统计差异?或者你可以用 已连接的组件再次查找多边形以聚集不同颜色的像素,假设缺少涂层会改变零件的外观颜色:可能涂层为棕色,零件为银色。 如果没有照片和/或更具体的涂层描述,很难猜测什么技术与此相关。希望这能清楚说明规范的重要性

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

当缺陷的大小和形状难以预测,但缺陷与图像强度、像素亮度或颜色的差异有关时,请探索以下想法:

生成一个边缘图像,在其中可以找到亮度/颜色转换。从灰度或彩色图像开始,然后使用Sobel或Canny或其他算法生成边缘强度的图像。 应用统计方法确定图像的边缘度。边缘强度大于S的像素是否超过N个或所有像素的5%以上? <> P>一旦你有一些基本的算法来识别好的零件和零件之间的差异,那么你就可以考虑用机器学习来复习大量的批次。有助于确定最佳参数化的样本数。例如,您如何知道边缘像素数或边缘像素强度应被视为不好

2.环削掉的部分

这取决于芯片是否仅从零件轮廓可见。例如,如果您将零件放置在一个光桌上,也称为背光,您是否总能看到被视为芯片的缺陷?或者芯片可能只是在面向相机的顶面上

为了在边缘找到芯片,将零件放在背光上可以大大简化事情

确定零件的位置和方向,例如使用连接组件、标准化相关性、SIFT或任何适合零件的算法以及所需的位置精度。 查找与零件外圈和内圈对应的边。 使用Hough圆拟合、RANSAC圆拟合或meh最小二乘圆拟合(参数化为已知尺寸,以外圈和内圈直径的像素为单位)将圆或近似圆椭圆拟合到边缘点。 对于用于圆拟合的点,找到点到圆或点到椭圆的最短距离。这个距离越大,你就越有可能有一个芯片或丢失的区块。 为了确保你找到ID,芯片,或任何东西,而不仅仅是单独的噪声边缘点,检查点顺时针或逆时针,只考虑一系列周界点作为缺陷,如果n个连续点有一个中位数或可能的平均点到边缘的距离大于N。 一种更简单的方法是将黑白掩模(表示良好零件的模板)与待检查零件的当前位置和旋转相匹配。如果模板和样本零件非常精确地对齐,并且如果执行图像减法,那么您可能很幸运地获得了存在缺陷的簇或像素。但这种方法相当粗糙,很难使其具有鲁棒性

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

3.环表面有划痕

有关不同类型的照明,请参见上面的链接。您需要尝试几种不同的照明配置,以找出适合您的部分的照明配置

但是,一般来说,划痕在亮度和边缘度方面可能与零件的其他部分存在差异。如果你幸运的话,划痕可以显示出不同的颜色

划痕在外观、面积和形状上可能有很大差异,因此很难通过参数化算法将其全部捕捉到。同样,对边缘内容、亮度和颜色的统计分析也很有用

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

4.环的宽度不均匀

这几乎是尺寸测量或光学测量的一个例子。如果你只是在寻找不平衡,你不一定需要 d以工程单位(如毫米)测量直径:您可以只测量像素。但确保像素测量准确所需的努力通常会导致以毫米为单位进行测量

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

确定零件的位置和位置 从查找零件的算法,或从识别边缘像素的后续算法(如Sobel、Canny等)中,仅查找环外径的边缘像素。 对边缘像素执行圆/椭圆拟合,并消除实际上不属于圆/椭圆的异常像素。 让算法从与外径对应的边缘像素列表中的第一个像素开始。 从第一个像素开始,找到距离最远的边缘像素。理想情况下,这一点正好相反。 循环遍历所有像素,查找到最远像素的距离。这在速度方面不是最优的,但编码更简单。 生成所有距离的直方图。 根据点到点距离的直方图确定好/坏。 在以下一种或多种情况下,您可以将零件称为坏零件:

至少N个点到点距离超过P个像素的距离 点到点距离的标准偏差超过某些阈值T ... 距离的测量取决于图像中不同位置的点到点距离的一致性。如果您执行精确的距离测量,您会注意到,固定长度的对象的长度似乎随其在图像中的位置而变化:如果对象位于图像的中心,则其长度可能为57.5像素,但在图像的一个角落,其长度可能为56.2像素

要纠正这些不规则,您可以

执行非线性平面度校正。这也将纠正相机与零件的非法线对齐,尽管您可能希望以相机光轴作为垂直于零件表面的法线开始。 进行一些快速测量,以估计测量值的变化程度。 5.戒指上的凹痕

6.环的整个表面与平面不完全水平;可能是由于某些凹痕,环的一部分靠在 产生1或2度角的平面,我已将6号标记为 附图中的“凹凸不平的表面”

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

如果将摄像头直接放在头顶上,1到2度的差异可能很难检测出来。如果幸运的话,您可以检测到零件的外边缘是椭圆形而不是圆形,但检测能力取决于零件的颜色和厚度。此外,您不一定能够区分残缺的零件和以一定角度放置的零件,但对于某些检查来说,这是可以的,因为两者都是缺陷

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

我还附上了另一张图片,标明发现的质量问题 在随机环上。带有标记QC问题的高架视图

图像不够清晰。把这个部分放在一个更简单的背景上,修改灯光,使其更明显地区分好与坏

依次运行一个算法。在运行每个算法或更确切地说,每个算法链之前,您可能还必须打开和关闭不同的灯光

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

这是视觉的另一个方面:你可能会开始思考解决问题所需的算法和照明,但你也会花大量时间找出可能出错的一切,并编写软件来检测这些情况,以确保不会产生错误的结果。例如,如果灯熄灭会发生什么?如果有两个戒指呢?如果戒指不完全在视野内怎么办?如果零件所在的表面沾上灰尘怎么办?如果镜头变脏了怎么办

一些原则:

在考虑算法最佳工作之前,为图像处理提供最佳图像。 了解必要的准确率/成功率,并对其进行测量。 尽可能多地获取样本:如果可能,成百上千。有机会在实际生产中进行在线测量是很有帮助的。 实际应用程序 如果它是一个真实的应用程序,也就是说 你专业地进入了视野,还有许多步骤看起来不那么困难,但结果证明是至关重要的:

吊环如何进入视野或进站:在移动的输送机上?由机器人放置?在某个容器里? 触发环视觉检查的因素-可编程逻辑控制器、环穿过的光幕,或者视觉系统本身是否必须确定环何时准备好进行检查。 如何将结果传达给其他设备。这可能是一个巨大的麻烦,如果通信设计和实施不当,客户可能会拒绝使用其他良好的视觉系统。 是否保证一次只能看到一个戒指
这并不是说大学不是真实的世界:只是如果你碰巧忽略了一些事情,你可能不会损失几万或几十万欧元/磅/美元。

谢谢你的回答。你的意思是要识别圆形金属环上的凹痕,我可以采用与人脸检测相同的方法?第一步:更好地说明在这种情况下,质量控制意味着什么。尺寸?外貌是否有划痕?凹痕?@Rethunk:是质量控制,用于识别凹痕、划痕和指定尺寸的任何变化。你现在能解释一下这个方法吗?你的说明还不够清楚。您需要列出并量化要检测的每种类型的缺陷或质量。从该列表中,您可以确定哪些视觉方法可能是相关的。没有这个列表,你就不会成功。收集规范是生存下来的公司在该领域的标准实践,无论如何,未能收集规范的项目通常会失败和/或赔钱。您的帖子需要按照StackOverflow标准进行编辑,并提出更具体的问题。如果这是一个现实世界的问题,你需要更加具体。没有捷径。@Rethtill注意到关于规范收集的建议。尽管如此,我相信我对需求的描述给出了我正在寻找的解决方案的概述。如果您能够提供任何高水平的方法来解决此类问题声明,我们将不胜感激。如果您有任何问题,我将尽力提供帮助,而我已经做了几十年的这项工作,因此请理解,当我建议写下规范时,我不会轻率地这样做。您提到了一种方法,但这里没有一种方法是有效的:每种类型的缺陷都可能需要自己的方法。如果这是一个学生项目,我可以给你一些快速的指导。如果这是针对客户的,那么如果不编写规范,您将无法成功。至少更新您的问题,以包括要查找的缺陷列表、通过/失败标准的一些量化,以及演示每种类型缺陷的一张图像。
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