石龙杰, 周 扬, 岑 岗, 刘铁兵, 施 秧,陈正伟, 黄 俊, 汪凤林, 岑跃峰
(浙江科技学院 信息与电子工程学院,浙江 杭州 310012)
中国的淡水珍珠产量连续多年位居世界第一,高峰期总产量约占全球产量的95%,但销售额却不到世界珍珠销售额的10%,质量与产量严重脱节[1],故全面推进珍珠产业提质增效具有重要的现实意义[2]。在提质增效的具体实施中,珍珠的产后无损检测尤为重要。现有检测方法多是通过对珍珠的尺寸、形状、光泽等指标进行检测分级[3]。近年来,机器视觉技术发展迅速,马丹丹等利用机器视觉技术以条码尺为基准精确定位了落纱小车在轨道上的位置[4]。张竟月等通过结合激光和机器视觉技术,并采用数字处理技术,提取图像特征,完成了玻璃容器中液体体积的高精度测量[5]。机器视觉技术也应用于珍珠外在质量的检测,文献[6,7]中分别设计了珍珠的机器视觉检测装置,使用相机从不同角度获取珍珠的图像并利用特征融合的方法,基于大小、形状、光泽、瑕疵和颜色等对珍珠进行自动分级。但对于珍珠内部质量的检测,尤其是对珍珠内部品质无损的检测却鲜见文献报道。
在淡水无核珍珠的生长过程中,其内部主要成分是碳酸钙(CaCO3),存在同质多相现象。大量研究证实,淡水珍珠质层碳酸钙物相主要是文石,含有少量的方解石、霰石以及微量有机质(蛋白质)和微量元素。优质珍珠的质层是由文石堆叠而成,呈砖墙结构[8],而方解石和霰石主要存在于劣质淡水珍珠中[9]。霰石是碳酸钙的不稳定相,但在淡水无核珍珠中却很少被发现,因此,方解石是淡水无核珍珠内部缺陷的主要成分,其与有机物混合会造成珍珠颜色呈黄色,降低珍珠的品质。因此,建立一种无损识别淡水无核珍珠内部方解石缺陷层的方法尤为必要。
鉴于OCT成像技术在珍珠内部质量检测方面的独特优势,董俊卿利用OCT成像技术对海水珍珠的内部缺陷进行了成像,但对缺陷的识别仅限于人工分析图像,操作过程费时费力[22]。Zhou Y等提出一种利用图论的方法来自动分类缺陷珍珠和非缺陷珍珠的自动化算法[23],将缺陷层上下边界的灰度均值作为分类依据,分类依据单一,不具有普适性,分类性能有待进一步提高。因此,基于OCT图像淡水无核珍珠内部缺陷的自动化识别和分类方法具有研究价值。
综上,OCT成像技术已经能展现淡水无核珍珠的内部结构,但淡水无核珍珠产量极大,通过人工分析图像对每颗珍珠进行内部缺陷检测和分类耗时长,无法应用于实际工业生产,本文提出一种使用OCT成像技术对淡水无核珍珠内部缺陷自动识别的快速分类方法,通过提取珍珠OCT图像的特征并结合反向传播神经网络(back propagation neural network, BPNN)模型进行内部缺陷分类判别,实现全自动化的缺陷检测与分类。
珍珠样品由诸暨市淡水珍珠主要生产商之一的浙江阮仕珍珠股份有限公司提供,40个样品均为2015年采收的淡水无核珍珠。使用美国Thorlabs公司生产的TELSTO 1300V2型谱域OCT成像仪采集淡水无核珍珠的断层扫描图像,图像横向分辨率为10 μm,纵向分辨率为3.4 μm,信噪比为120 dB,扫描速度7.6 kHz,扫描范围6 mm,采集过程无需对珍珠样本进行预处理,所采集的图像尺寸为530×1 040。采集的40幅图像中,20幅是无缺陷的珍珠图像,20幅是有缺陷的珍珠图像,图1给出了典型淡水无核珍珠样本的OCT图像。
图1 典型淡水珍珠OCT图像Fig.1 OCT images of typical freshwater pearls
为了定位OCT图像中珍珠缺陷层的具体位置,缺陷识别方法分为图像预处理、特征提取与样本匹配度检测、分类模型训练及模型预测等4个主要步骤,方法流程如图2所示。图像预处理过程主要是为了消除图像中噪声对后续特征提取的影响,完成目标和背景的分割、目标对象的拉平变换和进行必要的裁剪,以便于后续的特征提取。特征提取主要根据珠层内部缺陷部位从“暗”到“亮”到“暗”的变化特点,从梯度变化和位置特征着手提取特征,样本匹配度检测是为了检测从样本中提取的特征是否对应样本的类型,确保训练BPNN模型的特征真实可靠。最后使用与样本类型相匹配的特征训练并测试BPNN模型,通过BPNN模型预测淡水无核珍珠质层内部是否存在缺陷,根据珍珠质层内部有无缺陷实现自动分类。
图2 缺陷识别方法流程图Fig.2 Flow chart of proposed method
2.2.1 图像预处理
图像预处理过程如图3所示,因OCT图像中共轭噪声集中分布在图像顶部区域,故珍珠目标在采集过程中,珍珠目标避免落在顶部区域,可对图像上部边缘(本设备涉及前30行)的像素灰度值清零,消除共轭噪声的影响。接着,对图像进行一次形态学开运算,消除图像背景中零星像素点,减少背景中散斑噪声的干扰。同时,因图像中背景和目标的分界线位置在图像上半部分,故对图像上半部分进行搜索,将像素灰度值不为零且都属于同一个八连通区域像素集合成为一个区域,逐一搜索各个区域,将总像素不超过40的区域内所有像素清零,去除无效区域对背景和目标分离过程中的影响。为了平滑目标的上轮廓,对图像进行一次形态学闭运算。最后使用canny算子对图像中珍珠目标进行边缘检测,将检测到的珍珠目标上边缘作为珍珠目标和背景的分界线。最后根据边界线在图中的所在位置,取未做任何处理的珍珠OCT原始图像,将边界上部像素灰度值清零,下部像素灰度值保持不变,用于后续步骤处理。
从表2可看出,胶塞在室温下1 h不成胶,现场有充足的时间进行泵注。随着温度的升高,胶塞的成胶时间缩短。现场施工时,需根据井筒封堵位置的温度,合理计算胶塞在地面的时间,使得胶塞注入井筒目的位置后可快速成胶。
图3 图像预处理流程图Fig.3 Flow chart of image preprocessing
由于淡水无核珍珠的珠层在成形过程中,呈年轮状结构,为了便于提取水平和垂直方向的梯度变换特征,随即对图像中的目标进行了拉平变换。以珍珠目标的上边缘为基准,对图像每列像素进行上移目标,使上边缘上的点都位于第一行。
OCT通过检测珍珠内部散射介质的背向单次散射光成像,散射光随着深度的增加而发生衰减,因此所采集到目标底部的灰度值较小,导致底部区域珍珠目标与背景的对比度过低,不能满足有效的特征提取。另一方面,采集图像时,OCT的焦点位于所采区域中心位置的上部,目标边缘区域信息相较于目标中心区域灰度值小,因此目标的中心区域更能反映不同类型珍珠之间的特征差异。同时,目标拉平后,目标边缘会变得模糊,为快速提取有效的特征,在不裁剪到缺陷区域的前提下,选择裁去上部边缘5%、下部边缘25%、左右边缘各25%的区域,裁剪后图像尺寸为318×520;最后,为减小目标内部散斑噪声对特征提取的影响,采用中值滤波对图像降噪,经过反复测试,[5×12]的模板有较好的效果。降噪后的图像作为提取特征步骤的输入。图像预处理步骤中的具体过程如图4所示。
图4 图像预处理过程中对应图3各步骤的图像Fig.4 Images corresponding to each step of image preprocessing processshowninfigure
2.2.2 特征提取与样本匹配度检测
方解石作为珍珠质层中的缺陷,同等成像条件下,在OCT图像中像素灰度值比文石层像素灰度值大,呈现出“亮”的突变,因此在OCT图像从上向下搜索过程中,跨过缺陷部位上边界时像素灰度值是由小到大突变的,跨过缺陷层下边界时是由大到小突变,即从图像上反映出“暗”到“亮”再到“暗”的变化特点,而内部无缺陷淡水无核珍珠OCT图像的像素灰度值沿着搜索方向像素灰度值呈现下降趋势。通过自定义卷积模板[-1 -1 -1;0 -1 0;0 0 0;0 1 0;1 1 1]对图像进行滤波,生成自定义梯度图像,再对自定义梯度图像中每个像素以自身为起始点的垂直方向5个像素灰度值求和生成待搜索梯度图像;把待搜索梯度图像每列灰度值最大的像素点作为缺陷层上边界的待拟合像素点,同时,从缺陷层上边界位置开始,将此列灰度值最小的像素点作为缺陷层下边界的待拟合像素点。在自定义梯度图像中找到上边界和下边界待拟合像素点所在的位置,分别求出上、下边界的灰度均值作为BPNN待输入的2个特征。
针对无缺陷样本,其OCT图像上缺陷位置无法单纯使用梯度变化来确定,即会有较大的纵向波动,在这种情况下,可能搜索到并非缺陷部位的真实边界。因此将图像每条边界上相邻点的纵向距离大于阈值10,即认为存在一次波动。在得出每幅图像缺陷层上、下边界的位置后,依次判断同一边界相邻两个边界点的纵向距离,分别统计上、下边界的波动次数作为另一组待输入的两个特征。
为保证训练出的BPNN模型具有良好的预测性能,需要确定从每个样本中所提取的特征与样本类型匹配,使用与样本类型相匹配的特征作为数据集训练和测试BPNN模型。本文选择K-means算法对样本与特征的匹配度进行检测,K-means作为一种无监督学习的聚类算法,根据相似性的原则,将具有相似度较高的样本划分至同一类。K-means算法在聚类类别少的数据集中聚类效果优,收敛速度快,本文所聚类类别为缺陷珍珠和非缺陷珍珠两类,使用K-means算法能够对样本进行有效聚类。
K-means算法聚类流程如下:
(1) 从数据集中随机选择两个样本,初始化聚类中心;
(2) 计算每个样本与聚类中心的欧式距离,分配给每个样本距离最近的聚类中心的类型,使用每个聚类样本的特征均值更新聚类中心;
(3) 重复步骤(2),直到聚类中心不在变化;
(4) 输出聚类中心和每个样本的类型。
聚类结束后,剔除数据集中与样本类型不匹配的特征,将余下样本的特征作为BPNN的输入,训练BPNN模型。
2.2.3 BPNN模型
BPNN是一种按照误差逆向传播算法训练的多层前馈神经网络,它主要通过梯度搜索技术对网络进行训练,使网络的预测结果更接近训练集样本真实值,是目前应用最广泛的网络之一,其优点如下:具有实现任何复杂非线性映射的功能、具备自学习的能力、网络具有一定的推广、概括能力,对于二分类问题,BPNN有准确的预测能力[25]。
典型的3层BPNN模型的拓扑结构如图5所示,BPNN的训练包括信号的前向传播和误差的反向传播两个过程。正向传播时,将样本特征作为输入信号通过隐藏层的各个神经元节点,经过非线性变换后通过输出层产生输出结果,将实际输出与期望输出结果对比,若实际输出与期望输出结果不同,计算实际输出与期望输出之间的误差。误差反向传播时,将误差通过隐藏层向输入层逐层传播,并分摊给各层中的所有神经元节点,从各层获得的误差信号作为调整各神经元节点之间连接权值的依据。通过调整输入神经元节点与隐藏层神经元节点的连接强度和隐藏层神经元节点与输出层神经元节点的连接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的权值和阈值。
图5 BPNN模型拓扑图Fig.5 The topology of BPNN model
创建BPNN模型分3个阶段,分别为设计、训练和测试阶段。设计阶段,使用Matlab自带工具箱完成对BPNN模型的创建,对神经网络的层数和各层的节点数、均方根误差MSE、迭代次数epoch、学习率Ir、各层神经元的传递函数和训练方法进行设置。在训练和测试阶段,将每个图像样本中提取的4个特征作为输入,采用留一法划分训练集和测试集后对网络进行训练,并使用均方根误差MSE评价网络的学习性能。最后的测试阶段,将绝对误差E作为检验BPNN模型预测结果准确性的依据,其计算公式为:
(1)
(2)
式中:M为输入层节点数,N为输出层节点数,a为 1~10 之间的调节整数。在BPNN模型的训练过程中MSE应该逐渐减小,但是由于内部缺陷珍珠和非缺陷珍珠提取的特征比较明显,MSE设定的大小对BPNN训练的速度影响不大,MSE设置的较小或者较大都能完成训练,且预测性能差距不大,BPNN的具体训练参数设置如表1所示,其他参数均采用Matlab的默认设置。
表1 BPNN模型训练参数的确定Tab.1 Determination of BPNN model training parameters
在对BPNN模型训练之前,量化BPNN的输出结果,内部无缺陷的珍珠标签为1,内部缺陷的珍珠标签为0。训练阶段,为避免过度学习和欠学习状态的发生,留一法用于检验网络的预测性能。
本文通过灰度突变和定位缺陷层在珍珠OCT图像中的位置来提取图像特征,为了展示图像的特征,图6给出了6种典型的珍珠样品的OCT图像及其特征提取过程,最终对缺陷层的上、下边界进行了准确定位,图6(a)是内部无缺陷的淡水珍珠OCT图像,图6(b)~图6(f)是内部有多种类型缺陷的淡水珍珠OCT图像。无缺陷淡水珍珠因没有缺陷层,在OCT图像中所提取出的上、下边界不是真实缺陷层的上、下边界,其同一边界水平相邻列的边界点纵向距离差距大,而对于内部缺陷的淡水珍珠OCT图像的缺陷层,处于同一边界上的相邻点的纵向距离差距小,所定位的缺陷层上、下边界较平滑,可见该波动特点是后续能够准确检测出淡水珍珠内部的缺陷的依据。表2给出了6个典型样本从OCT图像提取4种特征具体数值,保留小数点后面4位有效数字。
图6 6个典型样品的缺陷层位置图,缺陷类型与图1相对应。左列:目标被拉平后的负片图像;右列:目标被拉平后的垂直梯度图像Fig.6 Defect locations of six typical samples, Corresponding to each image in figure 1. Left column: negative image where the target is flattened and cropped; Right column: gradient image
通过表2对比了内部无缺陷珍珠和内部有缺陷珍珠的4种特征,可以看出无缺陷珍珠的上边界灰度均值小于缺陷珍珠的上边界灰度均值,而下边界灰度却呈现出相反的趋势。从波动性上分析,无缺陷珍珠上、下边界的波动次数相较于缺陷珍珠的上、下边界波动次数大,可见不同类型珍珠之间的4种特征存在显著差异,可作为分类判别的依据。
表2 不同类型珍珠的4种特征对比Tab.2 Comparison of four features of different types of pearls
为验证本文方法对提取特征的准确性,使用K-means算法分别根据样本的梯度特征和位置特征对样本进行聚类,如图7所示。图7(a)是所有淡水珍珠样本OCT图像的位置特征二维分布图,从图中可以看出,根据样本的上、下边界波动次数特征分布特点来看,样本主要分布在2个区域。图7(b)显示的是K-means算法对OCT图像位置特征的自动聚类结果。图7(a)结合图7(b)可以看出,K-means算法能够根据样本的上、下边界波动次数特征对两种类型的珍珠样本进行聚类,同一区域内均为同一种类型样本,再结合图7(c)中珍珠的真实类型与K-means算法聚类预测的类型对比,所有样本中的3个样本聚类的类型与珍珠的真实类型不相同,余下37个样本聚类的类型与珍珠的真实类型相同。图7(d)是所有淡水珍珠样本OCT图像的梯度特征二维分布图,从图中可以看出,上边界像素灰度均值较大的样本其下边界灰度均值相对较小。图7(e)显示的是K-means算法对OCT图像梯度特征的自动聚类结果,图7(d)结合图7(e)可以看出,K-means算法按照样本的上、下边界像素灰度均值特征也能完成两种类型珍珠的聚类,再结合图7(f)中珍珠的真实类型与K-means算法聚类的珍珠类型对比结果,其中3个样本聚类的类型与珍珠的真实类型不相同,余下37个样本聚类的类型与珍珠的真实类型相同。将图7(c)与图7(f)结合进行对比发现,3个样本按照位置特征和梯度特征进行聚类,聚类的类型与珍珠真实类型均不相同,其余37个样本按照位置特征和梯度特征进行聚类,聚类的类型与珍珠的真实类型均相同。结果显示聚类的匹配度为92.5%,表明可以将样本的上、下边界分别对应的边界点波动次数和上、下的像素灰度均值可以作为区分淡水珍珠内部有无缺陷的特征。
图7 K-means算法聚类分析图Fig.7 Clustering analysis results of K-means algorithm
剔除K-means算法聚类出的类型和真实类型不同的珍珠样本,使用K-means算法聚类出的类型与真实类型相同珍珠样本的特征训练BPNN模型,采用留一法检验BPNN模型的预测准确性,结果如图8所示,图8(a)给出了样本的真实类型与预测类型,图8(b)是每个样本真实类型与预测类型之间的数值绝对误差,根据绝对误差小于0.5即为预测正确的判断标准,从图8(b)中可以看出,所有样本的预测类型数值与真实类型数值之间的绝对误差均小于0.5,BPNN模型预测出的类型与真实类型相同,预测准确率达到100%。表明经K-means算法聚类分析所选择特征训练出的BPNN模型能够作为珍珠类型的预测模型,证明了本文所提出的方法能够自动检测珍珠内部缺陷,并实现淡水无核珍珠按照内部缺陷自动分类。
图8 BPNN预测结果图Fig.8 Prediction result of BPNN model
在珍珠内部缺陷检测的方法中,现有方法主要是通过专家经验人工判别、X射线法和光学相干层析成像法[26,27]。人工检测效率低,且准确性因人而异,X射线检测技术具有明显的缺陷,珍珠在长时间的X光照射下会失去光泽,导致其价值的损失。OCT成像技术能在微米级分辨率下无损的扫描并显示珍珠内部组织结构,除了无损的优点外,OCT还具有扫描速度快,操作简单,几乎对所有珍珠都具有普适性的优点。
OCT成像技术作为一种珍珠内部缺陷检测的新方法,现有的应用大多数都是基人工对图像进行观察和得出检测结论,这项工作耗时费力。本研究是图像处理技术和OCT成像技术的结合,提出了一种完全自动化的方法对淡水无核珍珠内部缺陷部位的检测并分类,该方法作为OCT成像技术在珍珠内部缺陷检测方面应用的补充,提高了分类的准确性和效率,为淡水无核珍珠内部质量检测与分类的产业化应用奠定了基础,并且在其他产品分类上具有推广价值。
本文提出了一种能够根据OCT图像进行淡水无核珍珠内部有无缺陷的自动分类算法,通过提取图像垂直梯度和珍珠内部缺陷位置的变化特征,通过K-means算法选择与样本类型匹配的特征训练BPNN模型,实现对淡水无核珍珠自动化检测分类。实验过程验证了淡水无核珍珠的OCT成像的有效性以及OCT成像技术在对淡水无核珍珠内部缺陷检测上的可行性。本文提出的方法能够对各种缺陷类型的珍珠有准确的识别能力,分类性能较传统方法有所提升,具有较强的普适性、准确性和执行速度。