LOG和Fisher算法的壳类食品表面裂纹检测方法
2020-11-02吴剑杰
吴剑杰
绍兴职业技术学院(绍兴 312000)
禽蛋是人们日常生活中不可或缺的一种食物,随着中国禽蛋行业的快速发展,人们对其品质的要求也越来越高[1-3]。以表面裂纹为例,该缺陷严重影响禽蛋品质,关乎食品安全问题。如何高效、准确地实现裂纹检测是保证禽蛋品质的关键环节。传统检测方式主要依赖人工敲击辨听,不仅检测效率低、劳动强度大,而且容易造成二次损伤[4-5]。因此,设计一种无损检测系统具有一定实用意义和实际应用价值。近几年,机器视觉技术发展十分迅速,利用机器视觉进行禽蛋外形和裂纹检测具有快速、准确、无损等优点[6-9]。通过对禽蛋图像的采集、处理、特征提取、缺陷识别,能够得到大小、扁平程度、裂纹等诸多品质指标,进而实现禽蛋的分级、筛选等操作[10-11]。关于机器视觉在禽蛋检测中的应用研究日趋广泛,如杜艳红等[12]认为鸡蛋外形为椭圆,可以利用椭圆曲线拟合的方式获取鸡蛋外形参数,建立一种关于鸡蛋长短轴像素值和真实值的数学模型,进而得到鸡蛋外形特征。彭辉等[13]提出一种禽蛋破损检测算法,主要以禽蛋图像的G分量为研究对象,通过梯度增强、投影变换获取图像内部有效数据,采用隶属度函数判断禽蛋破损程度。欧阳静怡等[14]利用计算机视觉技术获取鸡蛋表面图像,同时采用同态滤波、BET算法、Fisher算法等图像处理技术,提取裂纹特征并识别。结果表明,鸡蛋裂纹识别率可达98%。
以鸡蛋表面裂纹检测为研究对象,在介绍鸡蛋表面图像采集系统的基础上,重点论述图像处理算法,通过具体试验验证所述方法的准确性。
1 表面图像采集系统
鸡蛋表面图像采集系统如图1所示,主要包括计算机、图像采集卡、工业相机、暗箱、光源、传送装置、装置台等部分[15]。
图1 鸡蛋表面图像采集系统
工业相机可实时采集鸡蛋表面图片并将其传送至计算机,由于传送装置可使鸡蛋不停转动,可以捕捉到鸡蛋多个侧面的图像,以提高缺陷检测的正确率。从实际使用效果来看,装置可以满足整个系统对图像的要求。
光源的照明方式主要包括2种,即背向照明和前向照明。其中,背向照明要求将待测物体放置在光源和相机之间,其优点是可以清晰地勾勒出待测物体的边缘轮廓。通常情况下,鸡蛋受到光线照射具有一定的通透性,而且裂纹处和完好区域的通透性不同。因此,选用背向照明实现鸡蛋表面特征图像和边缘轮廓图像的采集。
暗箱顶端中间开孔用来固定工业相机。暗箱底端放置传送装置,另外,装置台的高度可以上下调节,满足不同物距条件下图像采集。为提高图片质量,暗箱内壁往往刷成乳白色,这样能够有效地减少镜面反射,增加漫反射。暗箱底部最好选用黑色,可以吸收发射光,将待测物体和背景严格区分开。
2 裂纹图像分析算法
鸡蛋表面裂纹检测采用背光照明方式,该照明方式会导致的问题:所获图像中鸡蛋表面微小裂纹并不明显,需要进行裂纹增强处理;背光照明会使鸡蛋表面暗斑变得比较明显,直接影响裂纹检测结果,因此需要选取合适裂纹识别方法。
2.1 裂纹增强
裂纹增强是指在减少噪声和其他干扰的前提下,通过相关算法实现图像预处理,尽量突出和保留裂纹固有特征信息,使其结构清晰化。一般情况下,鸡蛋表面细小裂纹会导致其图像的灰度值、纹理特征发生突变。因此,可采用边缘检测算法实现图像增强。常用的边缘检测算子主要包括一阶和二阶微分算子。综合考虑,选用LOG算子,利用二维高斯平滑算子实现图像预处理,去掉一部分噪声;通过Laplace算子完成边缘检测。
假设所选二维高斯平滑算子为G(x,y),其表达式为:
式中:x,y为图像坐标;σ为概率分布标准差,其数值和滤波器操作邻域大小呈线性正相关。为简化分析过程,远离算子中心的像素影响可忽略不计,以3σ为界。
对于二维图像f(x,y),Laplace算子可表示为:
综合式(1)和(2)可得图像f(x,y)的Laplacian公式:
考虑到卷积的微分性质,可事先对高斯函数求偏导,即先计算2Gσ;进行卷积求解,可以提高计算效率。具体表达式为:
式中:2Gσ为LOG滤波器,具体表达式为:
通过具体测试可以发现,负LOG算子对大面积薄斑的增强效果并不明显,而且可以有效增强极性相反、互相平行的裂纹,所以选用负LOG算子。对于负LOG算子,有2个参数比较重要,即尺度参数σ和模板尺寸。裂纹增强效果在很大程度上取决于尺度参数,如果数值选取得当,不仅能够凸显裂纹,而且可以抑制背景信息,防止裂纹分叉。后者主要影响像素检测精度,模板尺寸不宜过大。尺度参数设置σ=0.3,模板尺寸设置5×5,具体为:
2.2 图像阈值分割
定义经增强处理后的灰度图像为I(x,y),图内部的冗余信息比较多,无法满足裂纹识别要求。为解决此问题,采用阈值分割法实现增强图像的二值化处理。对于一个2×2邻域,可定义其内部点(x,y)在x方向的一阶偏导数为Kx(x,y),在y方向的一阶偏导数为Ky(x,y),具体表达式为:
同样,定义梯度方向为θ(x,y),其表达式为:
对于边缘点的判定依据可描述为:如果像素点(x,y)的梯度幅值不小于沿梯度方向的2个相邻像素点的梯度幅值,那么可认为该点就是可能边缘点。
针对非极大值抑制处理的图像,设定2个阈值:一个高,一个低。比高阈值大的点可视作强边缘点;比高阈值小但大于低阈值的点可视作弱边缘点;比低阈值小的点可直接舍弃。可定义两个边缘图像T1(x,y)和T2(x,y),其中T1(x,y)可通过高阈值获取,理想情况下T1(x,y)不含假边缘,不过轮廓有可能是中断的。双阈值算法的优点在于:可在T1(x,y)中将边缘连接成轮廓。低阈值边缘图像T2(x,y)可在其邻域范围内寻找可用于轮廓连接的边缘,通过反复不断地边缘搜索,直到将所有T1(x,y)的间隙连接完成。
采用双阈值法实现增强后鸡蛋图像的阈值分割处理。高阈值分割作用在于抑制大部分噪声,但是容易造成部分裂纹信息丢失;低阈值分割作用在于保留模糊裂纹像素。总体来说,以高阈值分割为基础,以低阈值分割为补充,这样就可以实现裂纹连接,进而获取比较理想的裂纹分割结果。参考相关文献,高阈值可设定为70,低阈值可设定为20,鸡蛋裂纹图像分割效果如图2所示。
图2 鸡蛋裂纹图像分割效果
2.3 裂纹识别
在清除鸡蛋边缘以后,就可以对裂纹进行识别。可选用MATLAB算法实现裂纹分析,具体分析过程可描述为:
第一步,选取一定数量的有缝鸡蛋和无缝鸡蛋作为样本,通过Fisher算法训练,可以得到投影参数V;
第二步,分别计算有缝投影中心值以及无缝投影中心值;
第三步,遇到新样本或未知样本时,可先计算其投影值,然后分别同有缝投影中心值和无缝投影中心值相比较,根据比较结果判断有缝还是无缝(接近有缝投影中心值,则认为有缝;接近无缝投影中心值,则认为无缝)。
可将MATLAB中的Fisher函数集成到计算机中进行学习判别。实际训练对比结果表明,识别准确度在98%以上。鸡蛋裂纹提取结果如图3所示。
图3 鸡蛋裂纹提取结果
3 检测结果与分析
为验证所述方法的可行性和有效性,进行相关试验研究。在相同试验条件下,挑选经过粗洗的200枚鸡蛋作为训练、测试样本,其中完好鸡蛋100枚、裂纹鸡蛋100枚。利用上述方法检测鸡蛋表面是否存在裂纹,检测结果如表1所示。
表1 检测结果
从试验结果可以看出,所述方法可以很好地实现对裂纹鸡蛋的检测,正确率达到99%,而完好鸡蛋的检测正确率可达98%。说明鸡蛋表面裂纹检测方法具有比较高的检测精度,鸡蛋表面图像处理算法可有效避免噪声等干扰影响,处理效果较好,可满足检测要求。
误检情况如图4所示,误检情况可以分为两类:一是将完好鸡蛋误认为裂纹鸡蛋,主要原因在于鸡蛋表面的花纹引入的噪声在预处理中不能完全去除,容易被检测成为裂纹,造成完好鸡蛋的误检;二是没有检测到鸡蛋裂纹,主要原因在于鸡蛋裂纹较小且靠近图像边缘,容易在去除鸡蛋外轮廓和像素点阈值处理中将裂纹当作外轮廓和噪声去除。虽然存在这2种误检情况,但是整体检测精度较高,可满足相关行业检测需求。
图4 误检效果图
4 结语
为提高禽蛋品质,以鸡蛋表面裂纹检测为研究对象,提出一种鸡蛋表面裂纹检测方法。重点论述鸡蛋表面图像处理算法,包括裂纹图像增强、裂纹图像阈值分割、鸡蛋表面裂纹识别等。试验结果表明,鸡蛋表面裂纹检测方法具有较高检测精度,鸡蛋表面图像处理算法可有效避免噪声等干扰影响,处理效果较好。所述方法不仅适用于鸡蛋表面检测,同样适用于其他禽蛋类表面裂纹检测。