具体实施方式
为了便于理解本申请,下面结合附图和具体实施方式,对本申请进行更详细的说明。需要说明的是,当元件被表述“固定于”另一个元件,它可以直接在另一个元件上、或者其间可以存在一个或多个居中的元件。当一个元件被表述“连接”另一个元件,它可以是直接连接到另一个元件、或者其间可以存在一个或多个居中的元件。本说明书所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本说明书中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
下面结合说明书附图具体阐述本申请的技术方案:
请参阅图1,图1是本申请实施例提供的一种应用环境的示意图;
如图1所示,该应用场景100,包括图像采集装置10、被测物体20、载具30以及运动控制装置40。
图像采集装置10,通信连接运动控制装置40,例如:通过总线连接,用于获取被测物体20的图像,例如:采集印制电路板的图像,或者,获取待测元件的图像。在本申请实施例中,图像采集装置10包括但不限于工业相机。优选地,该图像采集装置10为12MP工业相机,分辨率为10μm,镜头为远心镜头,采用的光源为RGBW四色光源。
被测物体20,放置于载具30上,该被测物体20中具有相应的特定元件,用于提供待检测的楔形焊点的信息,在本申请实施例中,被测物体20包括具有楔形焊点的印制电路板,例如:具有IGBT模组在打线过程中形成的楔形焊点的印制电路板。
载具30,为一平台,用于放置并固定被测物体20,在本申请一些实施例中,载具30可以包含传感器系统,快速获取被测物体20的长度以及宽度,或者,响应于运动控制装置40的控制而移动,帮助图像采集装置10采集相应的图像。
运动控制装置40,通信连接图像采集装置10,例如:通过总线连接,用于控制图像采集装置运动到预设位置,或者,执行本申请任一实施例中的楔形焊点的检测方法。在本申请实施例中,运动控制装置40包括但不限于具有逻辑运算能力的电子设备。
在本申请实施例中,运动控制装置40还包括机械臂,运动控制装置40可以通过机械臂控制图像采集装置10运动到预设位置,并控制图像采集装置10采集固定于载具30之上的被测物体20的图像,同时通过总线连接图像采集装置10,图像采集装置同样通过总线结构向运动控制装置40反馈相应信息,以使得运动控制装置40更好地调整图像采集装置10的位置。
在本申请实施例中,运动控制装置40是一个集成多种功能的系统装置平台,而不仅限定于某个单一结构设备。其既可以由多种相互之间建立有通信连接,分别用于执行不同的功能的设备组件组成,也可以是将多个功能模块集成在同一台设备。
在本申请实施例中,运动控制装置40还包括运动控制卡和/或可编程逻辑控制器(Programmable Logic Controller,简称PLC),用于控制图像采集装置10运动到预设位置。运动控制装置40还可以包括储存器以及一种或者多种不同的交互装置,该储存装置用于存储相关的数据信息,该交互装置用以采集用户指令或者向用户展示和反馈相关信息。这些交互装置包括但不限于:输入键盘、显示屏、触摸屏以及扬声器等。
在本申请的一些实施例中,该运动控制装置40可以配置有显示屏和输入键盘,用户可以通过该显示屏了解当前正在执行的检测流程,或者,下达相应的用户指令以暂停检测流程。
应当说明的是,图1所示的应用环境仅用于示例性说明。本领域技术人员可以根据实际情况的需要,添加或者减省其中的一个或者多个设备,而不限于图1所示。
请参阅图2,图2是本申请实施例提供的一种楔形焊点的检测方法的流程示意图;
其中,该楔形焊点的检测方法,应用于运动控制装置,具体的,该楔形焊点的检测方法的执行主体为运动控制装置的一个或至少两个处理器。
在本申请实施例中,运动控制装置连接图像采集装置,运动控制装置用于控制图像采集装置运动到预设位置,图像采集装置用于采集印制电路板的图像。
如图2所示,该楔形焊点的检测方法,包括:
步骤S201:获取待测元件的图像;
具体的,在运动控制装置控制图像采集装置运动到待测元件在印制电路板中的位置后,运动控制装置控制图像采集装置拍摄待测元件的图像,并接收图像采集装置发送的待测元件的图像,其中,待测元件位于印制电路板上,待测元件包括至少一个楔形焊点。
请参阅图3,图3是本申请实施例提供的一种控制图像采集装置运动到待测元件在印制电路板中的位置的流程示意图;
在本申请实施例中,在获取待测元件的图像之前,该楔形焊点的检测方法还包括:控制图像采集装置运动到待测元件在印制电路板中的位置。
如图3所示,该控制图像采集装置运动到待测元件在印制电路板中的位置的流程,包括:
步骤S301:控制图像采集装置运动到印制电路板的预设位置拍摄图像,得到初始图像;
其中,印制电路板包括至少一个校正点,可以理解的是,校正点(又称MARK点或基准点)为表面贴装工艺中的所有步骤提供共同的可测量点,优选形状为直径为1mm(±0.2mm)的实心圆,材料为裸铜(可以由清澈的防氧化涂层保护)、镀锡或镀镍,其颜色与周围的背景色有明显区别。
具体的,校正点处于预设位置的正中心,印制电路板的预设位置是固定的,即对于每一印制电路板,其预设位置以及校正点的位置在印制电路板上的位置都是相同的,且该印制电路板的预设位置与校正点的圆心位置均预先存储于运动控制装置的存储器中。运动控制装置控制图像采集装置运动到印制电路板的预设位置拍摄图像,得到初始图像,该初始图像包括至少一个校正点。
步骤S302:通过图像算法识别初始图像内的校正点,并计算校正点的中心点的偏移坐标与旋转角度;
可以理解的是,由于印制电路板的材质、载具、印制电路板与轨道摩擦力等因素,造成印制电路板通过轨道到达载具上的指定位置时可能会产生偏移或一定程度的旋转,从而导致校正点的中心点发生偏移与旋转。
具体的,该图像算法包括但不限于基于卷积神经网络的图像识别算法,具体的,基于卷积神经网络预先建立校正点识别模型,该校正点识别模型用于识别初始图像内的校正点,通过构建损失函数以及获取大量的包括校正点的印制电路板的图像对该模型进行训练,得到训练后的校正点识别模型,基于卷积神经网络建立识别模型并对模型进行训练的具体方法为现有技术,在此不再赘述。
进一步地,调用训练后的校正点识别模型,对初始图像进行识别,识别出初始图像内的校正点,确定该校正点的中心点的实际坐标,并根据预先存储在运动控制装置的存储器中的校正点的中心点的原坐标,计算得到校正点的中心点的偏移坐标与旋转角度,其中,校正点的中心点的偏移坐标的横坐标值=实际坐标的横坐标值-原坐标的横坐标值,校正点的中心点的偏移坐标的纵坐标值=实际坐标的纵坐标值-原坐标的纵坐标值。
在本申请实施例中,若初始图像内有一个校正点,则该校正点的中心点的旋转角度为零。
在本申请实施例中,校正点的中心点的坐标以及偏移坐标均处于同一坐标系,该坐标系的原点位于印制电路板的左上角。
步骤S303:根据校正点的中心点的偏移坐标与旋转角度,确定待测元件在印制电路板中的位置;
具体的,若初始图像内有一个校正点,则待测元件在印制电路板中的位置的横坐标值=印制电路板的预设位置的横坐标值+校正点的中心点的偏移坐标的横坐标值,待测元件在印制电路板中的位置的纵坐标值=印制电路板的预设位置的纵坐标值+校正点的中心点的偏移坐标的纵坐标值。
例如:初始图像内有一个校正点,该校正点的中心点的原坐标为
,该校正点的中心点的实际坐标为/>
,印制电路板的预设位置/>
,该校正点的中心点的旋转角度为零,则校正点的中心点的偏移坐标为/>
,待测元件在印制电路板中的位置为/>
。
请参阅图4,图4是本申请实施例提供的一种校正点偏移的示意图;
如图4所示,
、/>
分别为预先存储在运动控制装置的存储器中的校正点mark
1和校正点mark
2的中心点,/>
、/>
分别为图像采集装置运动到印制电路板的预设位置拍摄得到的初始图像内的校正点mark
1和校正点mark
2的中心点,/>
为预先存储在运动控制装置的存储器中的校正点mark
1的中心点/>
与校正点mark
2的中心点/>
的连线和纵坐标轴之间的夹角,/>
为初始图像内的校正点mark
1的中心点/>
与校正点mark
2的中心点/>
的连线和纵坐标轴之间的夹角。
可以理解的是,
、/>
即发生偏移后的校正点mark
1和校正点mark
2的中心点。
在本申请实施例中,根据校正点的中心点的偏移坐标与旋转角度,确定待测元件在印制电路板中的位置,还包括步骤(1)-步骤(3),具体如下:
步骤(1):若校正点的数量为两个,则根据两个校正点的中心点的偏移坐标确定第一旋转角度;
具体的,第一旋转角度通过反余切函数计算得到。
若校正点mark
1的中心点的原坐标为
,校正点mark
1的中心点的偏移坐标为/>
,校正点mark
2的中心点的原坐标为/>
,校正点mark
2的中心点的偏移坐标为/>
;
或者,若校正点mark
1的中心点的原坐标为
,校正点mark
1的中心点的实际坐标为/>
,校正点mark
2的中心点的原坐标为/>
,校正点mark
2的中心点的实际坐标为/>
;
在本申请实施例中,方法还包括:
若校正点的数量为两个,则根据两个校正点的中心点的偏移坐标确定第一平均偏移坐标。
具体的,第一平均偏移坐标的横坐标值为两个校正点的中心点的偏移坐标的横坐标的平均值,第一平均偏移坐标的纵坐标值为两个校正点的中心点的偏移坐标的纵坐标的平均值。
例如:若校正点mark
1的中心点的原坐标为
,校正点mark
1的中心点的实际坐标为/>
,校正点mark
2的中心点的原坐标为/>
,校正点mark
2的中心点的实际坐标为/>
,则校正点mark
1的中心点的偏移坐标为/>
,校正点mark
2的中心点的偏移坐标为/>
,则第一平均偏移坐标为
。
步骤(2):根据第一旋转角度计算得到第一实际偏移坐标;
具体的,第一实际偏移坐标根据如下公式计算得到:
其中,
为第一实际偏移坐标,/>
为初始图像中心点与第一基准点之间的距离,/>
为初始图像中心点相对于第一基准点的角度,/>
为第一旋转角度,/>
为第一基准点的坐标,/>
为初始图像中心点的坐标,第一基准点为两个校正点中纵坐标的值最大的校正点。
具体的,第一基准点为两个校正点mark
1和mark
2中纵坐标的值最大的校正点,可以理解的是,第一基准点可以为图像采集装置运动到印制电路板的预设位置拍摄得到的初始图像内的校正点mark
1和校正点mark
2的中心点的纵坐标的值最大的校正点,
为第一基准点的中心点的坐标,/>
为初始图像中心点的坐标,初始图像中心点与第一基准点之间的距离/>
。
在本申请实施例中,初始图像中心点相对于第一基准点的角度
的计算方法与步骤(1)中确定第一旋转角度/>
的计算方法相似,在此不再赘述。
步骤(3):根据预设位置的坐标与第一实际偏移坐标,确定待测元件在印制电路板中的位置;
具体的,待测元件在印制电路板中的位置的横坐标值=印制电路板的预设位置的横坐标值+第一实际偏移坐标的横坐标值,待测元件在印制电路板中的位置的纵坐标值=印制电路板的预设位置的纵坐标值+第一实际偏移坐标的纵坐标值。
在本申请实施例中,根据校正点的中心点的偏移坐标与旋转角度,确定待测元件在印制电路板中的位置,还包括步骤(4)-步骤(6),具体如下:
步骤(4): 若校正点的数量至少为三个,则通过仿射变换算法计算得到第二旋转角度;
具体的,仿射变换(Affine Transformation或Affine Map)是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的平直性(即直线经过变换之后依然是直线)和平行性(即二维图形之间的相对位置关系保持不变,平行性依然是平行线,且直线上点的位置顺序不变)。仿射变换可以通过一系列原子变换的复合来实现,其中包括:平移、缩放、旋转、翻转和错切,这五种变换由原图像转变到变换图像的过程,可以用仿射变换矩阵进行描述。而这个变换过程可以用一个2*3的矩阵与原图进行相乘得到。
在本申请实施例中,可以通过图像识别领域opencv的仿射变换算法中的estimateAffinePartical2D与estimate RigidTransform算法计算得到第二旋转角度。
在本申请实施例中,还可通过estimateAffinePartical2D与estimate RigidTransform算法计算得到第二平均偏移坐标,第二平均偏移坐标为至少三个校正点的偏移坐标的平均值。
步骤(5):根据第二旋转角度计算得到第二实际偏移坐标;
具体的,第二实际偏移坐标根据如下公式计算得到:
其中,
为第二实际偏移坐标,/>
为初始图像中心点与第二基准点之间的距离,/>
为初始图像中心点相对于第二基准点的角度,/>
为第二旋转角度,/>
为第二基准点的坐标,/>
为初始图像中心点的坐标,第二基准点为至少三个校正点中纵坐标的值最大的校正点。
具体的,第二基准点为至少三个校正点中纵坐标的值最大的校正点,可以理解的是,第二基准点可以为图像采集装置运动到印制电路板的预设位置拍摄得到的初始图像内的至少三个校正点的中心点的纵坐标的值最大的校正点,
为第二基准点的中心点的坐标,/>
为初始图像中心点的坐标,初始图像中心点与第二基准点之间的距离
。
在本申请实施例中,初始图像中心点相对于第二基准点的角度
的计算方法与步骤(1)中确定第一旋转角度/>
的计算方法相似,在此不再赘述。
步骤(6):根据预设位置的坐标与第二实际偏移坐标,确定待测元件在印制电路板中的位置;
具体的,待测元件在印制电路板中的位置的横坐标值=印制电路板的预设位置的横坐标值+第二实际偏移坐标的横坐标值,待测元件在印制电路板中的位置的纵坐标值=印制电路板的预设位置的纵坐标值+第二实际偏移坐标的纵坐标值。
步骤S304:控制图像采集装置运动到待测元件在印制电路板中的位置,以获取待测元件的图像。
具体的,运动控制装置控制图像采集装置运动到待测元件在印制电路板中的位置,以获取待测元件的图像。
步骤S202:根据待测元件的图像,确定待测元件在图像中的位置;
具体的,通过抽色处理确定待测元件在图像中的位置,包括:
对待测元件的图像进行颜色抽色处理,提取待测元件的特征色;
根据特征色对待测元件的图像进行标记;
对标记后的待测元件的图像进行二值化处理,得到待测元件的二值图,其中,二值图中每个像素的灰度值都有明确数值;
根据预先设定的灰度值图像,识别出待测元件的具体轮廓,对二值图进行轮廓提取,最大轮廓的区域即为待测元件在图像中的位置。
在本申请实施例中,还可以通过模板匹配确定待测元件在图像中的位置,包括:
对待测元件的样品图中压接焊点、压接线所在区域提取模板并保存;
根据模板对待测元件的图像进行模板旋转以及缩放匹配操作,得到待测元件在图像中的区域位置以及角度。
步骤S203:根据待测元件在图像中的位置,对楔形焊点进行定位,确定楔形焊点的位置与尺寸;
具体的,在焊点搜索窗内通过抽色处理或模板匹配对楔形焊点进行定位,确定楔形焊点的位置与尺寸,其中,焊点搜索窗为半导体AOI软件编程模块中的一个基本功能,用于确定在印制电路板哪个位置搜索该焊点。
在本申请实施例中,通过抽色处理或模板匹配对楔形焊点进行定位,确定楔形焊点的位置与尺寸的方法与通过抽色处理或模板匹配确定待测元件在图像中的位置的方法相似,在此不再赘述。
请参阅图5,图5是本申请实施例提供的一种楔形焊点的示意图;
如图5所示,楔形焊点包括顶部区域、压接区域A、压接区域B与切割区域C。其中,顶部区域位于楔形焊点的中间,压接区域A与压接区域B是焊点两侧压接形成的区域,切割区域C是线尾切割后形成的区域。
请参阅图6,图6是本申请实施例提供的一种楔形焊点的实物示意图;
如图6所示,区域1为楔形焊点的切割区域,区域2为楔形焊点的压接区域,区域3为楔形焊点的顶部区域,区域4为楔形焊点的颈部区域。
在本申请实施例中,在确定楔形焊点的位置与尺寸之后,方法还包括:
确定楔形焊点的方向。
具体的,楔形焊点的方向为楔形焊点的切割区域的尾部所在的方向,按照左上右下分别对应1234进行定义,例如:1表示楔形焊点的切割区域的尾部在左方,2表示楔形焊点的切割区域的尾部在上方,3表示楔形焊点的切割区域的尾部在右方,4表示楔形焊点的切割区域的尾部在下方。
请参阅图7,图7是本申请实施例提供的楔形焊点的方向示意图;
如图7的a部分所示,该楔形焊点的切割区域的尾部在下方,此时,楔形焊点的方向定义为4。
在本申请实施例中,若楔形焊点是倾斜的,则将楔形焊点旋转到0度后再确定楔形焊点的方向,其中,以竖直方向表示0度,楔形焊点旋转到0度时的方向如图7的a部分所示,此时,楔形焊点的方向定义为4。
如图7的b部分所示,该楔形焊点相对于竖直方向发生了倾斜,倾斜角度为15度,此时,该楔形焊点的切割区域的尾部在右下方。
在本申请实施例中,需要将图7的b部分所示的楔形焊点反向旋转15度,使得楔形焊点旋转到0度时再确定楔形焊点的方向,其中,图7的b部分中的楔形焊点反向旋转15度后的图像与图7的a部分中的楔形焊点相似,即楔形焊点的切割区域的尾部在下方,方向为4。
步骤S204:根据楔形焊点的位置与尺寸,对定位后的楔形焊点进行局部分割,确定楔形焊点的顶部区域与压接区域;
具体的,请参阅图8,图8是图2中的步骤S204的细化流程示意图;
如图8所示,该步骤S204:根据楔形焊点的位置与尺寸,对定位后的楔形焊点进行局部分割,确定楔形焊点的顶部区域与压接区域,包括:
步骤S241:获取定位后的楔形焊点的原图图像;
具体的,在焊点搜索窗内的定位后的楔形焊点的原图图像为RGBA四通道图像,其中,RGBA代表Red(红色)、Green(绿色)、Blue(蓝色)和Alpha的色彩空间,Alpha为不透明度参数。
请参阅图9,图9是本申请实施例提供的一种原图图像、第一图像的示意图;
其中,该图9的a部分的图像为原图图像;
如图9的a部分所示,该原图图像为RGBA四通道图像。
步骤S242:对原图图像进行图像格式处理得到第一图像;
具体的,可以通过OpenCV(开源的计算机视觉库)中的Mat结构对原图图像进行图像格式处理,或者使用Python图像库PIL (Python Image Library)中的 Image.convert函数对原图图像进行图像格式处理得到第一图像,其中,第一图像为BGR三通道图,三个通道按照顺序依次为:Blue(蓝色)、Green(绿色)、Red(红色)。
请再次参阅图9,图9是本申请实施例提供的一种原图图像、第一图像的示意图;
其中,该图9的b部分的图像为第一图像;
如图9的b部分所示,该第一图像为BGR三通道图。
步骤S243:根据第一图像,创建初始掩模图;
具体的,通过OpenCV(开源的计算机视觉库)创建一张初始掩模图,其中,初始掩模图与第一图像的尺寸相同,初始掩模图为单通道图且背景亮度即灰度值为0,即一张纯黑色图。
步骤S244:根据楔形焊点的位置与尺寸,对初始掩模图进行像素二值化操作,得到第一掩模图;
具体的,根据楔形焊点的位置与尺寸,对初始掩模图内楔形焊点所在的区域进行像素二值化操作,填充初始掩模图内该区域的图像亮度值(即灰度值)为255即白色,得到第一掩模图。
具体的,图像像素二值化就是将图像上的所有像素点的灰度值设置为0或255,从视觉上看就是将整个图像转化为明显的黑白效果图。图像像素二值化的作用是为了大幅减少图像中的数据量,从而凸显出目标的轮廓。
请参阅图10,图10是本申请实施例提供的一种第一掩模图、第二掩模图的示意图;
其中,该图10的a部分的图像为第一掩模图;
如图10的a部分所示,该第一掩模图为一张前景色为白色,背景色为黑色的图。
步骤S245:根据第一图像与第一掩模图,分割出楔形焊点的顶部区域与压接区域。
具体的,请参阅图11,图11是图8中的步骤S245的细化流程示意图;
如图11所示,该步骤S245:根据第一图像与第一掩模图,分割出楔形焊点的顶部区域与压接区域,包括:
步骤S2451:对第一图像进行灰度处理得到灰度图;
请参阅图12,图12是本申请实施例提供的一种灰度图、第二背景图、第一骨架图的示意图;
其中,该图12的a部分的图像为灰度图。
在本申请实施例中,在BGR三通道图中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255,当灰度为255的时候,表示最亮(纯白);当灰度为0的时候,表示最暗(纯黑)。
在本申请实施例中,灰度处理包括但不限于最大值法、平均值法和加权平均法,进行灰度处理的好处是:相较于彩色图像灰度图像占内存更小,运行速度更快,灰度图像后可以在视觉上增加对比,突出目标区域。
步骤S2452:根据自适应阈值分割算法对灰度图与第一掩模图进行处理,得到自适应阈值;
具体的,采用大津法(OTSU算法)对灰度图与第一掩模图进行处理,得到自适应阈值。
具体的,大津法是一种图像灰度自适应阈值分割算法,大津法按照图像上灰度值的分布,将图像分成背景和前景两部分看待,前景就是我们要按照阈值分割出来的部分。背景和前景的分界值就是我们要求出的阈值。遍历不同的阈值,计算不同阈值下对应的背景和前景之间的类内方差,当类内方差取得极大值时,此时对应的阈值就是大津法(OTSU算法)所求的阈值。
步骤S2453:提取灰度图中亮度值大于自适应阈值的区域得到第一背景图,并对第一背景图进行像素二值化取反操作,得到第二背景图;
请再次参阅图12,图12是本申请实施例提供的一种灰度图、第二背景图、第一骨架图的示意图;
其中,图12的b部分的图像为第二背景图。
在本申请实施例中,通过阈值分割提取灰度图中亮度值大于自适应阈值的区域得到第一背景,并对第一背景图进行像素二值化取反操作,得到第二背景图,其中,像素二值化取反操作就是对图像进行像素二值化操作后,再对其进行反转操作,将灰度值为0的像素点设置为灰度值255,将灰度值为255的像素点设置为灰度值0。像素二值化取反操作在像素二值化的基础上增加一步反转运算即可实现。
步骤S2454:通过图像细化算法对第二背景图进行骨架提取操作,得到第一骨架图;
请再次参阅图12,图12是本申请实施例提供的一种灰度图、第二背景图、第一骨架图的示意图;
其中,图12的c部分的图像为第一骨架图。
在本申请实施例中,图像细化算法(ImageThinning),就是寻找图形的中轴线或骨架,以其骨架取代该图形,在遵循对图像的细化要保持图像连通性的最基本原则的前提下,细化之后的图形的像素宽度为1,其细化过程就是对图像逐层剥落的过程,随着细化的进行,图像有规律地缩小。用骨架表示图像能够有效减少数据量,降低图像的存储难度和识别难度,减少图像处理的计算开销。
步骤S2455:通过轮廓提取算法对第一骨架图进行外轮廓提取操作,得到关键骨架图;
请参阅图13,图13是本申请实施例提供的一种关键骨架图、楔形焊点的顶部区域的示意图;
其中,图13的a部分的图像为关键骨架图。
在本申请实施例中,可以通过Canny边缘检测算法对第一骨架图进行外轮廓提取操作,得到关键骨架图,其中,Canny边缘检测算法包括5个步骤,依次是高斯滤波、像素梯度计算、非极大值抑制、滞后阈值处理和孤立弱边缘抑制。
在本申请实施例中,轮廓提取算法包括但不限于Canny边缘检测算法、阈值分割、提取傅里叶变换的高频信息、蚁群算法等。
步骤S2456:通过区域生长算法确定关键骨架图中的区域生长种子;
具体的,区域生长(region seedsgrowing, RSG)算法是一种串行区域分割的图像分割方法,其基本思想是将有相似性质的像素点合并到一起。对每一个区域要先指定一个种子点作为生长的起点,然后将种子点周围领域的像素点和种子点进行对比,将具有相似性质的点合并起来继续向外生长,直到没有满足条件的像素被包括进来为止,这样一个区域的生长就完成了。
具体的,关键骨架图中的区域生长种子的选取可以采用人工交互的方式实现,例如:在python中基于OpenCV(开源的计算机视觉库)人工使用鼠标选取种子,或者,自动选取的方式实现,例如:通过阈值分割算法将关键骨架图划分为不同区域,在关键骨架图的不同区域提取不同的内部点作为区域生长种子。
步骤S2457:根据区域生长种子对关键骨架图进行分割处理,得到楔形焊点的顶部区域。
具体的,根据区域生长种子对关键骨架图进行分割处理,得到楔形焊点的顶部区域,具体包括:
步骤1、根据区域生长种子对关键骨架图顺序扫描,找到第1个还没有归属的像素,设该像素为(x0,y0);
步骤2、以(x0,y0)为中心,考虑(x0,y0)的8邻域像素(x,y),如果(x0,y0)满足生长准则,将(x,y)与(x0,y0)合并(在同一区域内),同时将(x,y)压入堆栈;
步骤3、从堆栈中取出一个像素, 把它当作(x0, y0)返回到步骤2;
步骤4、当堆栈为空时,返回到步骤1;
步骤5、重复步骤1-4直到图像中的每个点都有归属时,生长结束,得到楔形焊点的顶部区域。
请再次参阅图13,图13是本申请实施例提供的一种关键骨架图、楔形焊点的顶部区域的示意图;
其中,图13的b部分的图像为楔形焊点的顶部区域的示意图;
如图13的b部分所示,位于图像的中间部分且被矩形框包围的区域即为楔形焊点的顶部区域。
请参阅图14,图14是本申请实施例提供的一种分割出楔形焊点的压接区域的流程示意图;
如图14所示,该分割出楔形焊点的压接区域的流程,包括:
步骤S1401:对第一掩模图进行像素二值化取反操作得到第二掩模图;
具体的,将第一掩模图中灰度值为0的像素点设置为灰度值255(即白色),将灰度值为255的像素点设置为灰度值0(即黑色),得到第二掩模图。
请再次参阅图10,图10是本申请实施例提供的一种第一掩模图、第二掩模图的示意图;
如图10的b部分所示,该图10的b部分的图像为第二掩模图,该第二掩模图为一张前景色为黑色,背景色为白色的图,该第二掩模图的大小与图10的a部分的第一掩模图的大小相同。
步骤S1402:对第二掩模图进行格式转换,得到第三掩模图;
具体的,通过OpenCV(开源的计算机视觉库)将第二掩模图的格式转换为CV_32S格式,得到第三掩模图,其中,第三掩模图为单通道图,每个坐标位置的亮度用int表示,int值类型能表示的数值更大(2的32次方)。
可以理解的是,将第二掩模图的格式转换为CV_32S格式主要是因为步骤S1403中需要用到分水岭算法,此算法计算数值会超过byte类型(最大255),要求传入的图像是一张CV_32S格式的图像。
请参阅图15,图15是本申请实施例提供的一种第三掩模图、第一分水岭图像、第一压接区域图的示意图;
其中,图15的a部分的图像为第三掩模图;
如图15的a部分所示,该第三掩模图由于图像格式为CV_32S,肉眼看上去为黑色,实际有像素信息。
步骤S1403:根据关键骨架图中的区域生长种子的位置,通过分水岭算法对第三掩模图进行处理,得到第一分水岭图像;
具体的,分水岭(watershed)算法是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明:在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
具体的,分水岭的计算过程是一个迭代标注过程,分两个步骤,一个是排序过程,一个是淹没过程。首先对每个像素的灰度级进行从低到高排序,然后在从低到高实现淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。
请再次参阅图15,图15是本申请实施例提供的一种第三掩模图、第一分水岭图像、第一压接区域图的示意图;
其中,图15的b部分为第一分水岭图像;
如图15的b 部分所示,该第一分水岭图像由于图像格式为CV_32S,肉眼看上去为黑色,实际有像素信息。
步骤S1404:对第一分水岭图像进行格式转换,得到第二分水岭图像;
具体的,通过OpenCV(开源的计算机视觉库)将第一分水岭图像的格式转换为CV_8U格式,得到第二分水岭图像,其中,第二分水岭图像为单通道图,每个坐标位置的亮度用byte类型表示(最大255)。
可以理解的是,CV_8U格式的图像中每个坐标亮度值用byte类型表示,CV_32S格式的图像中每个坐标亮度值用int表示,二者的区别主要是数值范围的区别,int值类型能表示的数值更大。
步骤S1405:对第二分水岭图像进行像素二值化取反操作,得到第三分水岭图像;
具体的,将第二分水岭图像中灰度值为0的像素点设置为灰度值255(即白色),将灰度值为255的像素点设置为灰度值0(即黑色),得到第三分水岭图像。
步骤S1406:提取第三分水岭图像中亮度值大于预设亮度阈值的区域,得到第一压接区域图;
具体的,通过OpenCV(开源的计算机视觉库)进行阈值分割,提取第三分水岭图像中亮度值大于预设亮度阈值的区域,得到第一压接区域图,其中,预设亮度阈值可以为250。
请再次参阅图15,图15是本申请实施例提供的一种第三掩模图、第一分水岭图像、第一压接区域图的示意图;
其中,图15的c部分的图像为第一压接区域图;
如图15的c部分所示,该第一压接区域图中的两个白色区域即为楔形焊点的两侧压接区域。
步骤S1407:通过轮廓提取算法对第一压接区域图进行轮廓提取操作,确定楔形焊点的压接区域的轮廓;
具体的,对第一压接区域图进行轮廓提取操作,可以采用轮廓提取算法中的掏空内部点法:如果第一压接区域图中有一点为黑,且它的8个相邻的点都为黑,则将该点删除,由此确定楔形焊点的压接区域的轮廓。
或者,通过OpenCV(开源的计算机视觉库)中的轮廓提取函数findContours对第一压接区域图进行轮廓提取操作,确定楔形焊点的压接区域的轮廓。
步骤S1408:根据楔形焊点的压接区域的轮廓,得到楔形焊点的压接区域。
具体的,楔形焊点的压接区域的轮廓包括左侧轮廓和右侧轮廓,楔形焊点的压接区域包括左侧压接区域与右侧压接区域,楔形焊点的压接区域的左侧轮廓形成的封闭区域为左侧压接区域,楔形焊点的压接区域的右侧轮廓形成的封闭区域为右侧压接区域。
步骤S205:根据楔形焊点的顶部区域与压接区域,判断楔形焊点的质量是否合格。
具体的,请参阅图16,图16是图2中的步骤S205的细化流程示意图;
如图16所示,该步骤S205:根据楔形焊点的顶部区域与压接区域,判断楔形焊点的质量是否合格,包括:
步骤S2051:根据楔形焊点的顶部区域与压接区域,计算得到楔形焊点的评价参数;
具体的,楔形焊点的评价参数包括:顶部区域的宽度与长度、压接区域的平均宽度与平均长度、焊点整体的宽度与长度、压接区域的面积占焊点整体面积的比例。
在本申请实施例中,计算得到楔形焊点的评价参数,具体包括:
计算压接区域的平均宽度与平均长度;
根据压接区域的平均宽度与平均长度以及高斯面积公式计算得到压接区域的面积;
将楔形焊点的顶部区域与压接区域拟合得到楔形焊点的整体轮廓;
根据楔形焊点的整体轮廓,计算楔形焊点的整体面积;
根据压接区域的面积与楔形焊点的整体面积,计算得到压接区域的面积占楔形焊点的整体面积的比例。
具体的,通过行列扫描分别计算左侧压接区域和右侧压接区域的宽度与长度,例如:找到轮廓的中轴线,然后首尾两端进行一定比例的去除,根据设置的宽度上下限,自动滤除异常部分,然后对剩余部分进行行扫描,通过width=sum(rowWidth)/row函数, 计算得到左侧压接区域和/或右侧压接区域的宽度,这样计算出来的宽度更加接近压接区域的真实宽度;同理,根据设置的长度上下限以及列扫描,计算得到左侧压接区域和/或右侧压接区域的长度。
在本申请实施例中,还可以通过最小外接矩形算法计算顶部区域的宽度与长度、压接区域的平均宽度与平均长度,其中,最小外接矩形算法包括等间隔旋转搜索方法,即将图像物体在90°范围内等间隔地旋转,每次记录其轮廊在坐标系方向上的外接矩形参数,通过计算多个外接矩形面积求取最小外接矩形,得到两侧压接区域分别对应的两个最小外接矩形的长度与宽度,对两个最小外接矩形的长度与宽度分别求平均值得到压接区域的平均宽度与平均长度。
进一步地,结合高斯面积公式,即交叉相乘相应的坐标找到包围该多边形的区域,并从周围的多边形中减去该区域以找到其中的多边形的区域,计算得到压接区域的面积;同理,可求得顶部区域的面积。
进一步地,通过OpenCV(开源的计算机视觉库)中的轮廓外接矩形求取函数boundingRect与minAreaRect,对楔形焊点的顶部区域与压接区域进行轮廓拟合,得到楔形焊点的整体轮廓,通过最小外接矩形算法确定焊点整体的宽度与长度,结合高斯面积公式计算得到楔形焊点的整体面积,然后计算压接区域的面积占楔形焊点的整体面积的比例。
在本申请实施例中,焊点整体的宽度与长度还可通过图像识别模型识别得到,其中,该图像识别模型为卷积神经网络模型,卷积神经网络模型的建立与训练方法为现有技术,在此不再赘述。
步骤S2052:判断评价参数是否满足第一条件;
具体的,第一条件包括顶部区域的宽度与长度在第一评价区间内,和,压接区域的平均宽度与平均长度在第二评价区间内,和,焊点整体的宽度与长度在第三评价区间内,和,压接区域的面积占焊点整体面积的比例在第四评价区间内。
其中,第一评价区间、第二评价区间、第三评价区间与第四评价区间预先设置于运动控制装置的存储器内,可由本领域技术人员对多个人工识别为质量合格的楔形焊点进行测量并取平均值得到。
在本申请实施例中,若评价参数满足第一条件,则进入步骤S2053:确定楔形焊点的质量合格;若评价参数不满足第一条件,则进入步骤S2054:确定楔形焊点的质量不合格。
步骤S2053:确定楔形焊点的质量合格。
步骤S2054:确定楔形焊点的质量不合格。
在本申请实施例中,通过提供一种楔形焊点的检测方法,包括:获取待测元件的图像;根据待测元件的图像,确定待测元件在图像中的位置;根据待测元件在图像中的位置,对楔形焊点进行定位,确定楔形焊点的位置与尺寸;根据楔形焊点的位置与尺寸,对定位后的楔形焊点进行局部分割,确定楔形焊点的顶部区域与压接区域;根据楔形焊点的顶部区域与压接区域,判断楔形焊点的质量是否合格。
通过对楔形焊点进行定位以及局部分割,确定楔形焊点的顶部区域与压接区域,并根据楔形焊点的顶部区域与压接区域,判断楔形焊点的质量是否合格,本申请能够更快速、准确地对楔形焊点进行定位与局部分割,从而判断楔形焊点的质量是否合格,摆脱依靠抽检在显微镜下人工目检的方式进行辨别的繁琐性、低效率和不准确性。
请再参阅图17,图17是本申请实施例提供的一种运动控制装置的结构示意图;
如图17所示,该运动控制装置170包括一个或多个处理器171以及存储器172。其中,图17中以一个处理器171为例。
处理器171和存储器172可以通过总线或者其他方式连接,图17中以通过总线连接为例。
处理器171,用于提供计算和控制能力,以控制运动控制装置170执行相应任务,例如,控制运动控制装置170执行上述任一方法实施例中的楔形焊点的检测方法,包括:获取待测元件的图像;根据待测元件的图像,确定待测元件在图像中的位置;根据待测元件在图像中的位置,对楔形焊点进行定位,确定楔形焊点的位置与尺寸;根据楔形焊点的位置与尺寸,对定位后的楔形焊点进行局部分割,确定楔形焊点的顶部区域与压接区域;根据楔形焊点的顶部区域与压接区域,判断楔形焊点的质量是否合格。
通过对楔形焊点进行定位以及局部分割,确定楔形焊点的顶部区域与压接区域,并根据楔形焊点的顶部区域与压接区域,判断楔形焊点的质量是否合格,本申请能够更快速、准确地对楔形焊点进行定位与局部分割,从而判断楔形焊点的质量是否合格,摆脱依靠抽检在显微镜下人工目检的方式进行辨别的繁琐性、低效率和不准确性。
处理器171可以是通用处理器,包括中央处理器(CentralProcessingUnit,CPU)、网络处理器(NetworkProcessor,NP)、硬件芯片或者其任意组合;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器172作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态性计算机可执行程序以及模块,如本申请实施例中的楔形焊点的检测方法对应的程序指令/模块。处理器171通过运行存储在存储器172中的非暂态软件程序、指令以及模块,可以实现上述任一方法实施例中的楔形焊点的检测方法。具体地,存储器172可以包括易失性存储器(volatile memory,VM),例如随机存取存储器(random access memory, RAM);存储器172也可以包括非易失性存储器(non-volatile memory,NVM),例如只读存储器(read-only memory, ROM),快闪存储器(flash memory),硬盘(hard disk drive, HDD)或固态硬盘(solid-state drive, SSD)或其他非暂态固态存储器件;存储器172还可以包括上述种类的存储器的组合。
存储器172可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器172可选包括相对于处理器171远程设置的存储器,这些远程存储器可以通过网络连接至处理器171。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器172中,当被一个或者多个处理器171执行时,执行上述任意方法实施例中的楔形焊点的检测方法,例如,执行以上描述的图2所示的各个步骤。
在本申请实施例中,运动控制装置170还可以包括其他用于实现设备功能的部件,在此不做赘述。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括一条或多条程序代码,该程序代码存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该程序代码,处理器执行该程序代码,以完成上述实施例中提供的楔形焊点的检测方法步骤。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来程序代码相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory, RAM)等。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。