发明内容
本发明提供一种基于图像处理的零件缺陷检测方法及系统,用于解决现有不能准确检测零件表面缺陷的问题,所采用的技术方案具体如下:
第一方面,本发明一个实施例提供了一种基于图像处理的零件缺陷检测方法及系统包括以下步骤:
获取多个光源入射角度下的零件表面灰度图像;
根据所述零件表面灰度图像判断零件表面是否存在凹陷区域,若存在,则根据各光源入射角度下凹陷区域对应的灰度图像得到凹陷区域中各像素点的灰度值、各像素点的像素坐标以及各像素点对应的光源入射角度;
根据所述各像素点的灰度值、各像素点的像素坐标以及各像素点对应的光源入射角度,得到凹陷区域中各像素点对应的各光源入射角度下的光照特征向量;
利用所述光照特征向量训练目标网络,得到各光照特征向量对应的反射特征;
根据所述反射特征得到凹陷区域的轮廓周长、轮廓面积以及各像素点对应的深度信息。
本发明还提供了一种基于图像处理的零件缺陷检测系统,包括存储器和处理器,其特征在于,所述处理器执行所述存储器存储的计算机程序,以实现上述的一种基于图像处理的零件缺陷检测方法。
本发明根据零件表面灰度图像判断零件表面是否存在凹陷区域,并根据各光源入射角度下凹陷区域对应的灰度图像得到凹陷区域中各像素点的灰度值、各像素点的像素坐标以及各像素点对应的光源入射角度,进而得到凹陷区域中各像素点对应的各光源入射角度下的光照特征向量;利用光照特征向量训练目标网络,得到各光照特征向量对应的反射特征,根据反射特征得到凹陷区域的轮廓周长、轮廓面积以及各像素点对应的深度信息。本发明将光照特征向量作为得到反射特征的依据,且每个像素点的反射特征对应一个法向量,通过法向量可以建立凹陷区域的三维曲面,因此本发明将反射特征作为得到凹陷区域的轮廓周长和轮廓面积的依据,将凹陷区域的三维曲面作为得到各像素点对应的深度信息的依据,能够减少检测的误差,能够相对准确的检测零件表面缺陷区域的轮廓信息和深度信息。
优选的,目标网络为全连接神经网络,所述目标网络的损失函数包括均值损失函数、邻域损失函数以及重构损失函数。
优选的,均值损失函数为:
其中,
为目标网络的均值函数,
为零件表面凹陷区域第个灰度图对应的光源的入射角度,
为灰度图上任意一个像素点,
为第
个灰度图上像素点
处对应的反射特征,
为该凹陷区域所有灰度图上像素点
处对应的反射特征的均值,
为光源的入射角度为
时像素点
处的干扰强度,
为与
角度的差值的绝对值在预设范围内的光源的入射角度对应的灰度图上像素点
处干扰强度的均值。
优选的,邻域损失函数为:
其中,
为目标网络的邻域损失函数,
为灰度图上任意一个像素点,
为零件表面凹陷区域第
个灰度图上与像素点处相邻的像素点集合,
为集合
中像素点的数量,
为集合
中第
个像素点,
为第
个灰度图上像素点
处对应的反射特征,
为第
个灰度图上集合中第
个像素点对应的反射特征,
为在光源的入射角度
下像素点
和
的之间灰度值的差异。
重构损失函数为:
其中,
为目标网络的重构损失函数,
为灰度图上任意一个像素点,
为光源的入射光强,
为光源的入射角度为
时像素点
处的干扰强度,
为凹陷区域对应的灰度图集合,
为灰度图集合上除了像素点
处的任意一个像素点位置,
为光源的入射角度为
时像素点
处的干扰强度,
为第
个灰度图上像素点处的灰度值。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,基于本发明实施例,本领域普通技术人员所获得的所有其它实施例,都属于本发明实施例保护的范围。
除非另有定义,本文所使用的所有的技术和科学技术语与属于本发明的技术人员通常理解的含义相同。
本实施例提供了一种基于图像处理的零件缺陷检测方法,详细说明如下:
如图1所示,该基于图像处理的零件缺陷检测方法,包括以下步骤:
步骤S001,获取多个光源入射角度下的零件表面灰度图像。
本实施例中,将零件平放在检测台面上,零件上方安装工业相机,相机俯视向下,零件处于相机视野中心,与相机光轴相距d的位置处有一个平行光光源,该光源以相机中心为圆心,沿着半径为d的圆形轨道上运动,光源在轨道上的运动始终是以固定的角度r照射零件表面,如图2所示,1为光源位置,2为相机位置,3为零件位置,光源运动的轨迹如双点划线所示。
本实施例中,光源在沿着圆形轨道做圆周运动时,该光源每转过一定的角度,相机就采集一张图像数据,所述光源每转过一定的角度相机就采集一张图像数据是指采集不同光照入射角度下对应的零件的图像数据,当光源运动一周后,相机可以采集到多张图像数据,所采集的图像为零件表面灰度图像;本实施例设置光源每次转动5度,相机就采集一张图像数据,当光源运动一周后,相机可以采集到72张图像数据,且d的大小需要根据实际情况进行设置。
作为其它的实施方式,也可以根据需求的不同设置不同的转动角度,但是光源转动一周所采集的次数优选在36到72之间,例如可以是当光源每次转动10度,相机就采集一张图像数据,光源转动一周总共采集36张图像。
本实施例中,当零件表面存在凹陷时,零件表面的反射以镜面反射为主,漫反射分量较低,因此会导致零件表面存在缺陷的地方对不同光照入射角度下的反射情况不同;并且本实施例不从一个光照角度入射采集零件表面的凹陷是由于从一个光照入射角度采集的灰度图像不能包含整个凹陷区域的信息,甚至无法确定凹陷的大致轮廓,因此需要采集不同光照入射角度下对应的零件表面灰度图像,进而获得零件凹陷的轮廓和面积,以及估计出凹陷的深度信息。
步骤S002,根据所述零件表面灰度图像判断零件表面是否存在凹陷区域,若存在,则根据各光源入射角度下凹陷区域对应的灰度图像得到凹陷区域中各像素点的灰度值、各像素点的像素坐标以及各像素点对应的光源入射角度。
本实施例中,将采集的各零件表面灰度图像利用3×3的高斯核进行高斯滤波,去除噪声;然后对各零件表面灰度图像进行阈值分割,大于第一阈值的像素的灰度值置为1,其他灰度值置为0,得到各零件表面灰度图像对应的二值图,且灰度值为1的区域表明对应的零件表面灰度图像是凹陷区域,灰度值为0的区域表明对应的零件表面灰度图像区域是平整区域;本实施例中将第一阈值设置为0.4,作为其它的实施方式,第一阈值需要根据实际情况进行设置。
本实施例中,各零件表面灰度图像对应的二值图用于表明灰度值大于第一阈值的像素区域,且表示零件表面的高亮区域,这些高亮区域就包含着零件表面的凹陷区域的部分信息;之后对各二值图进行处理,首先将该二值图进行闭运算,填充不粘连或有空洞的连通域,然后使用开运算去除孤立的、细长或噪点状的连通域,得到处理之后的二值图;将处理之后的二值图与处理之前二值图对应的零件表面灰度图像所对应的像素灰度值相乘,得到各光源入射角度下的零件表面灰度图像对应的第一图像,且第一图像包含着零件凹陷区域在一个光照角度下的光照信息,当然也包含着一些非凹陷的和平整区域的光照信息,本实施例将第一图像记为零件表面光照分布图。
本实施例中,通过上述的方法可以得到在不同光照角度下对应的零件表面光照分布图,本实施例中可以得到零件表面对应的72张光照分布图;且由于镜面反射的原因使得凹陷区域在特定角度的光源下只能呈现部分特征,所以零件表面对应的各光照分布图无法描述零件出现的所有凹陷区域的信息,因此需要融合零件的对应的各光照分布图才能获得缺陷区域,则本实施例中需要融合该零件的对应的72张光照分布图,得到融合之后的图像,记为该零件对应的零件表面光照分布图进而可以得到该零件上出现的所有凹陷区域。
在零件表面光照分布图上,所有灰度值大于0的像素点构成的多个连通域就是零件表面上存在的多个凹陷区域;本实施例将各凹陷在各零件表面光照分布图上的所有像素点组成各凹陷区域的光照分布图,且本实施例中一个缺陷区域会对应72张光照分布图和72个光照角度,72张光照分布图中相同像素点中的最大灰度值对应的是零件表面光照分布图上相同像素点的灰度值。
因此通过上述过程可以在零件对应的零件表面光照分布图上得到每个缺陷区域,且也有可能只有一个凹陷区域,但是零件表面光照分布图上的灰度值只能描述缺陷的大致位置和轮廓,不能得到每个凹陷区域的准确轮廓和深度信息;所以在后续过程中需要对每个凹陷区域进行分析获得每个凹陷区域的准确轮廓和深度信息。
当光源以一定角度照射到零件表面的一个位置上,本实施例中零件表面的一个位置指的是一个像素点的位置,该位置会对光源进行反射,然后相机采集到该位置反射的光照,根据反射光照的光强计算该位置像素点的灰度值;因此可以知道零件表面各位置的灰度值与光源的入射角度、各位置的反射特征、光源入射光强、相机的位置和各位置的相对关系有关。
本实施例中,光源是以固定角度俯视照射零件的,本实施例只是改变了光源在轨道的位置来改变光源的照射方向,因此光源的入射角度由光源的俯视角度以及在圆形轨道上转动的角度决定,但是光源的俯视照射角度是定值,因此本实施例将光源在轨道上转动的角度作为光源的入射角度;而各像素点的光源入射光强、相机的位置和各像素点的相对关系都与各像素点的像素坐标有关。
本实施例中,各像素点的反射特征与各像素点所在曲面的法向量有关,法向量决定了如何对光进行镜面反射;但是各像素点并非完全是镜面反射,还有漫反射和对光的吸收,由于金属表面对光的吸收取决于金属自身性质,且吸收可以忽略不记,因此本实施例不考虑光的吸收,而漫反射导致相机采集到的各像素点的光强并非各像素点对应的光源的入射光强,且零件表面的漫反射会产生扰动光强对各像素点的灰度值产生影响。
本实施例中,对于各缺陷区域,都对应72张光照分布图,且根据各光照分布图可以得到各光照分布图中的各像素点坐标、各像素点对应的灰度值以及各光照分布图对应的光源的入射角度;例如对于某个缺陷区域,可以得到72张光照分布图,构成该凹陷区域对应的光照分布图集合;其中对于光照分布图集合中的第
个光照分布图,可以得到第
个光照分布图中像素点
处的坐标位置、第
个光照分布图对应的光源的入射角度
以及像素点
对应的灰度值
。
步骤S003,根据所述各像素点的灰度值、各像素点的像素坐标以及各像素点对应的光源入射角度,得到凹陷区域中各像素点对应的各光源入射角度下的光照特征向量。
本实施例中,根据上述得到的第
个光照分布图中像素点
处的坐标位置、第
个光照分布图对应的光源的入射角度以及像素点
对应的灰度值
,构建第
个光照分布图上像素点处对应的光照特征向量,即:
其中,
为零件表面任意一个凹陷区域对应的第
个光照分布图中像素点
处对应的光照特征向量,
为第
个光照分布图对应的光源的入射角度,
为第
个光照分布图对应的光源的入射角度的
次方,
为第
个光照分布图中像素点
处对应的灰度值,
第
个光照分布图中像素点
处对应的灰度值的
次方,
为第
个光照分布图中像素点
处的坐标位置;本实施例中,
的取值为3,作为其它的实施方式也可以根据需求的不同为
设置不同数值,例如可以是
的取值为5;本实施例构建光照特征向量只是为了表明光照特征向量与光源的入射角度、像素点坐标位置以及像素点坐标位置对应的灰度值相关。
因此通过上述过程,可以得到该凹陷区域中各光照分布图中像素点
处对应的光照特征向量,则该凹陷区域中的各像素点对应的各光源入射角度下都对应一个光照特征向量;因此通过上述方式可以得到零件表面各凹陷区域中各像素点对应的各光源入射角度下的光照特征向量。
步骤S004,利用所述光照特征向量训练目标网络,得到各光照特征向量对应的反射特征。
本实施例中,当在给定检测装置下,通过上述过程可以得到各凹陷区域中各像素点位置的灰度值与光源的入射角度、各像素点的反射特征、各像素点的像素坐标以及各的像素点的干扰强度有关;而本实施例需要通过各像素点的反射特征,为后续确定各凹陷区域的三维曲面、各凹陷区域的面积、各凹陷区域准确的轮廓和各凹陷区域的深度信息提供基础。
本实施例中,对于零件表面的每一个凹陷区域都需要训练一个对应的目标网络,所述目标网络是全连接神经网络,由5层全连接层构成,网络的输入为各凹陷区域中各像素点对应的各光源入射角度下的光照特征向量,输出为各凹陷区域中各像素点对应的各光源入射角度下的反射特征和干扰强度;例如本实施例输入可以是零件表面第
个凹陷区域中第
个光照分布图中像素点
处对应的反射特征
和第
个光照分布图中像素点
处对应的光源的入射角度
的干扰强度
;其中
用于表示像素点
处的反射特征,表征该像素点对应的三维曲面的法向量,用于决定该位置如何反射光照;且干扰强度
与
和
相关,本实施例干扰强度的值要大于0小于1。
本实施例在目标网络训练的过程中,需要通过均值损失函数、邻域损失函数以及重构损失函数共同对目标网络进行监督训练,例如对于是零件表面第
个凹陷区域对应的目标网络的均值损失函数为:
其中,
为零件表面第
个凹陷区域对应的目标网络的均值损失函数,
为零件表面第
个凹陷区域中第个光照分布图对应的光源的入射角度,
为光照分布图上任意一个像素点,
为第
个光照分布图上像素点
处对应的反射特征,为该凹陷区域所有光照分布图上像素点
处对应的反射特征的均值,
为光源的入射角度为
时像素点
处的干扰强度,
为与
相近的光源的入射角度对应的光照分布图上像素点
处的干扰强度的均值。
本实施例中,不管光源的入射角度如何变化,同一像素点
处的反射特征都应该是一致的,即对于同一个凹陷区域中的各光照分布图上相同像素点处的反射特征应该相同,所以无论网络中输入的光照特征向量
中
取任何值,输出的反射特征
都应该是都是固定的;因此本实施例要求各光照分布图中各像素点对应的反射特征都趋近于各光照分布图中相同像素点位置对应的反射特征的均值,例如第
个光照分布图中在像素点
处对应的反射特征
要趋近于所光照分布图中像素点
处对应的反射特征的均值
。
其中,
为零件表面第
个凹陷区域中所光照分布图中像素点
处对应的反射特征的均值,
为零件表面第
个凹陷区域中第
个光照分布图上像素点
处对应的反射特征,
为光源的入射角度的个数,也是零件表面第
个凹陷区域中光照分布图的数量,本实施例中
的值为72。
本实施例中,根据各凹陷区域对应的光照分布图可以得到各像素点在72个光照分布图上的灰度值的均值和方差;当某一个像素点对应的均值大于0但方差趋近于0,表明该像素点在不同光照角度下对光的反射情况相同,说明该像素点对应的位置的零件的表面是平整的,而该像素点对应的反射特征的均值等于
,且
为平整的零件表面的法向量,本实施例中
。
本实施例中,
为光源的入射角度为
时像素点
处的干扰强度,因为当以与
差别不大的入射角入射时,获得的干扰强度是相似的;将获得的与
最接近的
个光源的入射角度的集合记为
,所述集合包括
,根据如下公式计算集合
对应的像素点
处干扰强度的均值:
其中,为与
较近的光源的入射角度对应的灰度图上像素点处干扰强度的均值,即与
差值的绝对值在预设范围内光源的入射角度对应的灰度图上像素点处干扰强度的均值,考虑到本实施例光源的转动角度,本实施例设置为
为与
差值的绝对值在0度到15度之间的对应的光源的入射角度,即本实施例的预设范围为0度到15度;
为与
较近的光源的入射角度的集合,
为集合中的数量,
为集合
中任意一个光源的
入射角度,
为与
对应的光照分布图上像素点
处的坐标位置,
为光源的入射角度为
时像素点
处的干扰强度。
本实施例零件表面第
个凹陷区域对应的目标网络的邻域损失函数为:
其中,
为零件表面第
个凹陷区域对应的目标网络的邻域损失函数,
为光照分布图上任意一个像素点,
为零件表面第
个凹陷区域中第
个光照分布图上与像素点
处相邻的像素点的集合,
为集合
中像素点的数量,
为集合
中第
个像素点,
为第
个光照分布图上像素点
处对应的反射特征,
为第
个光照分布图上集合
中第
个像素点对应的反射特征,
为在光源的入射角度
下像素点
和
的之间灰度值的差异;且本实施例中
为8邻域,作为其它的实施方式,也可以根据需求的不同为
设置不同的数值,例如可以是4邻域。
本实施例中,表示像素点
处的反射特征和其邻域像素点的反射特征的差异或相似性,当两个相邻像素点在相同光照环境下的灰度值一样,则这两个像素点的反射特征是相似的,但是当两个相邻像素点在相同光照环境下灰度值差别较大,则这两个位置的反射特征就不相似。
本实施例中,
为在
角度入射光的光照环境下像素点
和
的之间灰度值的差异;且
,其中,
为第
个光照分布图上像素点
处的灰度值,
为第
个光照分布图上像素点
处的灰度值,且像素点
和
的之间灰度值的差异越小表明对
与
之间的差异越关注;当
最小化时,相邻像素点的灰度值差异小的像素点处的反射特征越相似,相邻像素点的灰度值差异大的像素点处的反射特征越不相似。
本实施例零件表面第
个凹陷区域对应的目标网络的重构损失函数为:
其中,
为零件表面第
个凹陷区域对应的目标网络训练的重构损失函数,
为光照分布图上任意一个像素点,
为光源的入射光强,
为光源的入射角度为
时像素点
处的干扰强度,
为零件表面第
个凹陷区域对应的光照分布图集合,
为
上除了像素点
处的任意一个像素点的坐标位置,
为光源的入射角度为
时像素点
处的干扰强度,
为第
个光照分布图上像素点
处的灰度值。
本实施例中,将光源的入射光强记为
,当光照分布图中的任何一个像素点处进行镜面反射时,理想状态下任何一个像素点处反射的光强应该为
,但是由于漫反射的干扰,镜面反射的光强不是
;例如对于入射角度为
时像素点
处的镜面反射光强变为
,其中
为在漫反射干扰下入射角度为
时像素点处的镜面反射光强,
表示入射角度为
时像素点
处的干扰强度。
对于入射角度为
时像素点
处的灰度值
与
相关;除此之外,
还与其它像素点位置的漫反射相关,即其它像素点位置发生漫反射时对像素点
的灰度值也有影响;所以其它像素点的漫反射也会间接为像素点
提供光照,则其它像素点的对像素点
光照影响大小为
,其中
为所有的漫反射的干扰强度,
表示除去像素点
处外其它像素点的漫反射的干扰强度,因此
与
呈正相关;本实施例考虑到r的角度相对较大,且零件表面凹陷区域深度相对较浅,因此其它像素点的镜面反射基本不会为像素点
提供光照,因此本实施例不考虑其它位置像素点的镜面反射对位置
处灰度值的影响。
本实施例构建数学模型来约束
与呈正相关,令,其中
为已知的常数,需要根据实际情况设置。
本实施例中,
与
的真实关系并非由
准确描述的,只是利用
确保
与
呈正相关,而不是呈负相关或不相关的,目的是加强目标网络的特征提取能力,使得目标网络能够将输入的光照特征向量准确的拆分为反射特征和干扰光强。
因此,将零件表面第
个凹陷区域中各像素点对应的各光源入射角度下的光照特征向量输入到训练好的第
个凹陷区域对应的目标网络中,将输出各光照特征向量对应的反射特征和干扰强度;因此本实施例通过上述过程可以将各凹陷区域中各像素点对应的各光源入射角度下的光照特征向量输入到训练好的对应的各目标网络中,得到网络输出的各凹陷区域中各光照特征对应的反射特征和干扰强度;因此本实施例中,根据损失函数利用随机梯度下降算法训练目标网络,可以使得网络收敛。
步骤S005,根据所述反射特征得到凹陷区域的轮廓周长、轮廓面积以及各像素点对应的深度信息。
本实施例中,根据上述过程可以得到各凹陷区域中各像素点都对应的
个反射特征,将各像素点对应的
个反射特征求和之后求均值,得到各凹陷区域中各像素点对应的最终反射特征。
本实施例中,最终反射特征表示的是凹陷区域在各像素点的法向量,根据各凹陷区域中各像素点对应的最终反射特征与上述
之间的夹角,得到所有夹角小于第二阈值对应的所有像素点,这些像素点认为是平整的位置;之后获得各凹陷区域内所有的像素点,从这些像素中剔除这些夹角小于第二阈值的像素点,各凹陷区域剩下的像素点构成连通域,如果连通域有空洞就填充空洞,最终可以获得的各连通域的轮廓长度就是各凹陷区域的轮廓长度,各连通域的面积就是各凹陷区域的面积,且根据凹陷区域的三维曲面也可以得到凹陷区域不同像素点的深度信息;本实施例中第二阈值需要根据实际情况设置。
本实施例中,由于最终反射特征表示的是凹陷区域在各像素点的法向量,因此根据各凹陷区域中各像素点的法向量建立凹陷区域的三维曲面,大致方法是将每个像素点视为以该像素点为中心的一个四边形网格,该网格的朝向由每个像素点的法向量确定,相邻像素点的网格的公用同一个边,进而所有像素点的网格构成一个三维曲面;具体的根据各像素点的法向量建立三维曲面的方法是公知和常规技术,本实施例不作详细描述。
本实施例根据零件表面灰度图像判断零件表面是否存在凹陷区域,并根据各光源入射角度下凹陷区域对应的灰度图像得到凹陷区域中各像素点的灰度值、各像素点的像素坐标以及各像素点对应的光源入射角度,进而得到凹陷区域中各像素点对应的各光源入射角度下的光照特征向量;利用光照特征向量训练目标网络,得到各光照特征向量对应的反射特征,根据所述反射特征得到凹陷区域的轮廓周长、轮廓面积以及各像素点对应的深度信息。本实施例将光照特征向量作为得到反射特征的依据,且每个像素点的反射特征对应一个法向量,通过法向量可以建立凹陷区域的三维曲面,因此本实施例将反射特征作为得到凹陷区域的轮廓周长、轮廓面积的依据将凹陷区域的三维曲面作为得到各像素点对应的深度信息的依据,能够减少检测的误差,能够相对准确的检测零件表面缺陷区域的轮廓信息和深度信息。
本实施例的基于图像处理的零件缺陷检测系统包括存储器和处理器,所述处理器执行所述存储器存储的计算机程序,以实现上述基于图像处理的零件缺陷检测方法。
需要说明的是,上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣,在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。