1.简介
字符缺陷检测算法顾名思义是一种用于缺陷检测的算法,该算法会利用若干张OK图像训练一个缺陷检测模型,该模型中存储了训练图像的平均图像,检测时将逐像素比对检测图像与平均图像之间的差异,当差异较大时,则会将该像素点标记为NG,后文中将对如何在VM中使用此模块,以及相关算法参数的含义及调节方式进行介绍说明,以期使读者能够更加好地使用VM中的字符缺陷检测模块。
首先我们从VM的采集面板中拖出图像源,然后从缺陷检测面板中拖出字符缺陷检测,构成一个简单的方案如图2.1所示。接下来我们打开字符缺陷检测模块,点击图2.2所示字符模板面板下的模板训练按钮,便可以进行字符缺陷检测模型的训练工作,训练的第一步是导入基准图像并设置定位的基准,设定基准时可以使用界面上提供的roi工具及掩膜区域,完成基准设置后的界面如图2.3所示。
图2.1 字符缺陷检测方案示意图
图2.2 字符模板训练界面
图2.3 导入基准图并设置基准的界面
接下来我们将在基准图像中选择出希望进行缺陷检测的区域,完成此工作我们可以使用软件自带的字符分割功能,也可以由用户手动框选roi来实现。软件自带的字符分割功能包含三种模式,第一种为文本行分割,其分割效果如图3.4所示,第二种为单词分割,其效果如图3.5所示,第三种为字符分割,其效果如图3.6所示。不同的分割方法应对于不同的使用场景,此功能主要为了增加产品的易用性,在需要检测的区域较多时,能够自动分割出感兴趣区域中字符所在的区域。接下来将对字符分割的相关参数进行简单的介绍,字符分割是基于对原图进行二值化完成的,在分割效果不理想的情况下,我们应该首先打开显示二值图的开关,观察二值化提取的前景点是否正确,对二值化效果影响较大的参数有字符极性,二值化阈值以及二值化窗口大小。当字符极性选择错误的时候,二值图会与真实情况存在较大偏差,如图3.7所示。二值化阈值参数的作用为利用阈值剔除掉灰度值高于或低于该阈值的前景点,举例来说,当字符极性为白底黑字,二值化阈值为128时,将会从二值图中去除掉灰度值高于128的前景点,因此,当降低此值时,前景点会不断减小,如图3.8所示。需要注意的是,当字符极性为黑底白字时,去掉的是灰度值低于阈值的前景点。另一个对二值化结果影响较大的参数是二值化窗口大小,一般而言,窗口越大,提取出的前景点也就越多,示例如图3.9所示。有的时候,算法自动分割出的检测区域并不是很理想,此时,用户可以在面板的第三步-设置精定位中对第二步中分割出的roi区域进行手动调节以满足自身需要。
在使用字符分割完成了检测区域的提取之后,我们可以采用
图3.4 对选中区域进行文本行分割的结果
图3.5 对选中区域进行单词分割的结果
图3.6 对选中区域进行字符分割的结果
图3.7 字符极性错误时的二值图
图3.8 二值化阈值太小时,提取出的前景点会偏少
图3.9 二值化窗口较大时,提取出的前景点会比较多,一般推荐略大于单个字符宽度的二值化窗口大小
首先讲讲进行精定位的原因,精定位的目的在于准确定位到待检测区域在当前图像中的位置,以便以对齐的方式完成缺陷检测模型的训练以及缺陷检测的工作。为了进行精定位,我们首先需要为所有的检测区域进行建模处理,一般情况下,用户只需点击训练模板按键就可以完成此步骤,无需对其余参数进行调节,如图4.1所示。但是在某些情况下,当拍摄物体存在较大的位置与尺度变化时,在第5步统计训练的过程中可能会出现如图4.2所示的精定位失败的情况,图中的红框为根据粗定位的结果修正后的精定位检测区域,精定位的宽度方向容忍与高度方向容忍参数会将精定位检测区域进行进一步的扩大,举例来说,宽度/高度方向容忍值为1.2时,会将每个精定位检测区域的宽度与高度变为原来的1.2倍,但是对于图4.2中内容来说1.2倍仍旧无法满足需求,当我们将宽度/高度方向容忍值修改为3.0时,精定位成功,结果如图4.3所示,另外两个与精定位关系较大的参数为图4.4中所示的X尺度范围与Y尺度范围,当图像之间存在尺度变化时,我们便需要打开X尺度范围与Y尺度范围参数,该参数默认为1.0,即不开尺度。
图4.1 训练检测区域,以完成检测区域的精定位,该界面中需要注意宽度
方 向容忍参数与高度方向容忍参数,该参数设置的过小容易导致精定位失败
图4.2 当图像间存在较大的尺度变化时,根据粗定位结果确定的精定位搜索区域与实际位置存在较大差异时,
需要调大图4.1中的宽度方向容忍与高度方向容忍参数
图4.3 调节图4.1中的宽度方向容忍参数与高度方向容忍参数为3.0后,精定位成功
图4.4 当图像存在较大尺度变化时,需要开启X尺度范围与Y尺度范围参数,否则会出现定位失败的情况
在完成了精定位配置后,便可以进行缺陷检测模型的统计训练了,训练时可以导入若干(1-N)张OK图像。对于每张图像,软件界面上会显示出每个检测区域的精定位结果,当用户点击统计当前图像时,界面上会展示出统计训练的结果如图5.1所示
图5.1 训练完成后,检测区域的基准图会被展示在界面右下角
训练阶段无需进行参数调节,用户只需简单地选择是否使用当前图像进行训练即可。
与缺陷检测相关的参数列表如图6.1所示,接下来将对这些参数进行简要的介绍,首先是缺陷类型,缺陷类型分为三种:亮缺陷,暗缺陷,亮暗缺陷。亮缺陷指的是图像中亮度高于正常值的缺陷,暗缺陷指的是图像中亮度低于正常值的缺陷,亮暗缺陷指的是亮缺陷与暗缺陷。
亮缺陷阈值与亮缺陷尺度是针对亮缺陷的两个参数,而暗缺陷阈值与暗缺陷尺度是针对暗缺陷的两个参数。当缺陷类型为亮暗缺陷时,这四个参数同时发挥作用,否则只有对应的参数发挥作用。缺陷阈值与缺陷尺度之间的关系如公式(1)所示,公式(1)中指的是缺陷阈值,指算法内部自动为每个像素计算得到的可接受变化范围,指的是缺陷尺度,为最终的亮度变化可接受范围,当前像素与基准图对应像素间的灰度变化超过时,该像素点就会被判定为缺陷点。
图6.1 字符缺陷检测相关参数列表
最后我们给出一张有缺陷的图像以及使用字符缺陷检测算法得到的缺陷检测二值图来结束本文。图6.2所示为一张有缺陷的图像,图6.3所示为使用字符缺陷检测算法得到的缺陷二值图。
图6.2 一张有缺陷的原始图
图6.3 图6.2中所示内容进行缺陷检测得到的结果