基于OTSU遗传算法的核桃表面裂纹检测
2021-01-07殷文俊张新伟易克传
殷文俊,张新伟,易克传
(1.滁州城市职业学院 网络信息中心,安徽 滁州,239000;2.安徽科技学院 机械工程学院,安徽 凤阳,233100)
随着经济的快速发展,人们对商品核桃的品质要求越来越高[1]。核桃品质主要分为外部品质和内部品质。所谓外部品质是只外壳完好,不存在裂纹或果壳破损等肉眼可见的缺陷;内部品质是指核桃是否存在空壳无仁、果仁干瘪、果仁变坏、发黑发霉等。如果核桃表面存在裂纹或破损,则加工过程中某些物质(如脱皮过程中的清洗水)就会进入核桃内部,使其内部果仁受到污染,发黑发霉,甚至产生致癌的黄曲霉毒素[2],所以核桃外部品质对其内部品质有直接影响。要想提高核桃的品质,就必须首先对外部存在裂纹或破损的核桃进行前期分选。
核桃的外部品质检测已引起重视并取得一定成果,如张新伟等[3]采用6尺度数学形态学方法对核桃表面裂纹进行检测,通过实体加权融合与信息熵结合的融合方法对核桃图像进行融合,试验发现多尺度数学形态学方法的总体检测准确率为94%;刘军等[4]建立基于贝叶斯、神经网络和SVM的核桃外部缺陷模型。试验发现,基于径向基的SVM识别模型效果最为理想,对裂纹、破壳和黑斑这3类缺陷的识别准确率依次为93.06%、88.31%和89.27%,对核桃外部缺陷的总体识别率为90.21%;李成吉等[5]采用RC和SPA方法优选参数并建立PLS模型,试验发现,对正常、黑斑和破裂3类核桃的识别准确率依次为88.9%、83.3%和94.6%,总体判别率为88.9%。
研究发现,现有的缺陷检测方法存在检测精度低、过分割以及程序运行时间长等问题。最大类间方差阈值分割方法是在传统的最小二乘法原理基础上发展起来的一种方法,其检测精度较高,已得到广泛应用[6-14],但计算量非常大[15]。遗传算法是非线性求解的过程,对于每一个染色体其评价函数的求解是分开的,其遗传运算相对独立,这一点适应于并行运算,可满足实时性的要求[16-18]。所以,本研究采用最大类间方差阈值法为主要方法,同时引入遗传算法以解决其计算量大的缺陷,实现对核桃表面裂纹的快速检测。
1 材料与方法
1.1 试验材料与设备
试验核桃为温宿185。
试验设备主要由计算机(联想天逸pro510,酷睿i7-9700,SSD+2T机械硬盘,GT730独立显卡,21英寸显示器)和SMZ800体视显微镜组成,用于对核桃表面裂纹进行肉眼观察以及裂纹图像的采集。
1.2 试验方法
试验流程如下:
1.2.1 图像预处理 将待检测的核桃图像下采样为640像素×480像素,保存格式为JPG。采用卡尔曼滤波方法对待处理的核桃图像进行处理,为下一步的核桃表面裂纹检测做准备。
1.2.2 核桃表面裂纹检测 运用OTSU与遗传算法相结合的方法对核桃表面存在的裂纹进行检测操作。
裂纹检测准确率采用文献[3]中的计算方法。
1.2.3 核桃图像后处理 为提高裂纹的检测准确率,采用形态学方法对检测后核桃图像进行数据点连接操作。
2 基于OTSU遗传算法检测核桃表面裂纹的原理与步骤
2.1 检测原理
OTSU算法是由日本的大津展在上世纪80年代由最小二乘法原理推导得出,其基本的思想是将图像的直方图以某一灰度为阈值,将图像分成两组并计算两组的方差,当被分成的两组间的方差最大时,就以这个灰度为阈值分割图像[19-20]。
设一幅图像的灰度值为m个,灰度值为i的像素数为ni,则得到的总像素数为:
(1)
各灰度值的概率为:
(2)
C0和C1组的平均灰度值为:
(3)
(4)
整体平均灰度值为:
(5)
式中,阈值为k时灰度的平均值为:
(6)
采样的平均灰度值为d(k)=w0(u0-u)2+w1(u-u1)2,并将式(5)代入其中,得到
d(k)=w0w1(u1-u2)2
(7)
在1~m范围内改变k值,求k’,使得d(k')=max(d(k));然后,以k’为阈值分割图像,这样就可以得到最佳的分割效果,但是要想得到式(7)的最大值d(k’),就必须要对1~m范围内的所有灰度值进行方差计算,最后比较得到最大的方差。上述操作的计算量是巨大的。本研究引入遗传算法[21],利用其收敛速度快的特点,解决大计算量的问题。
2.2 检测步骤
本研究利用OTSU算法在解空间中查找到一个最优解,使得其方差最大,再利用遗传算法非线性快速查找最优解k’用最大的方差。查阅参考文献[22-23],检测步骤如下:
(1)编码并生成染色体,为下一步种群的初始化做准备。
(2)初始化种群。本研究中设置染色体长度为8,种群大小为10,最大代数为150。
(3)解码。将OTSU得到的方差作为每一个染色体的适应函数。根据公式(7)依次计算出所有染色体的适应值。以最大值对应的染色体作为遗传种子。
(4)遗传运算。本研究中采用双点交叉方法,杂交概率为0.7,变异概率为0.4。
3 结果与分析
为比较本研究方法的有效性,选用OTSU、遗传算法、改进分水岭以及本研究方法依次对核桃表面裂纹进行检测处理。采用的评价指标参见文献[24]。所有算法均是在matlab 2017b环境下进行,不同检测方法的评价指标如表1所示。
表1 核桃表面裂纹检测指标对比
通过表1发现,本研究方法的检测准确率最高,为96%,超出改进分水岭算法11%,比单独的OTSU高出24%,可见将OTSU与遗传算法相结合,可以有效地提高核桃表面裂纹的检测准确率;从交叉熵指标来看,本研究方法最小,为0.0318,与单独的OTSU方法较为接近,但远小于改进分水岭;从形状测度维数指标来看,本研究方法最高,为0.9293;从运行时间来看,本研究方法检测同一张核桃图片的运行时间最短,为0.54 s,较单独的OTSU方法减少0.44 s。可见,在OTSU方法检测核桃表面裂纹过程引入遗传算法可以有效地缩短检测时间,主要是由于遗传算法对最大方差的求解速度进行快速收敛,从而缩短了OTSU算法的运行时间。
不同方法检测核桃表面裂纹的效果如图1所示。
图1 不同方法检测核桃表面裂纹的效果对比
从图3可以看出,改进分水岭算法出现了过分割现象(如图3b所示),检测结果与文献[21]相同。与改进分水岭方法相比较,OTSU方法没有出现过分割的问题,但在核桃图片中产生椒盐噪声(如图3c所示),产生原因可能是因为核桃图像二值化处理过程中的阈值选择不够精确。与其他检测方法相比,本研究方法的检测效果最为理想(如图3d所示),其既不存在过分割的问题,同时检测后的核桃图片上也不存在明显的椒盐噪声,并且视觉效果与表1中的试验数据前后一致。原因是遗传算法在反复的繁衍过程中,随着新种群的出现,不断产生新的遗传算子,从而使得遗传算法在不断的繁衍中得到最大方差的最优解。
4 结论
本研究针对核桃表面裂纹的检测问题进行研究,得到如下结论:
(1)根据OTSU的最大方差以及遗传算法并行计算、收敛速度快的特点,将OTSU与遗传算法相结合,实现对核桃表面裂纹的检测,检测准确率为96%。
(2)OTSU结合遗传算法的裂纹检测方法的交叉熵、形状测试维数评价指标依次为0.0318和0.9293,优于改进分水岭、单独的OTSU方法。
(3)本研究方法检测一幅核桃图像的时间为0.54 s,运行时间最短。