基于PCA-KNN的金线莲种类识别

2022-01-05 11:48柯程扬刘丽桑林赫张荣升
福建工程学院学报 2021年6期
关键词:金线降维灰度

柯程扬,刘丽桑,林赫,张荣升

(1.福建工程学院 电子电气与物理学院,福建 福州 350118;2.工业自动化福建省高校工程研究中心,福建 福州 350118;3.国网福建省供电有限公司霞浦县供电公司,福建 宁德 355100)

金线莲享有“药王”的美称,但对生长环境要求严格,自然状态下繁殖率较低。不同种类的金线莲叶片外形十分相像,不法商家以次充好、不良掺假,严重影响了金线莲的临床疗效。金线莲的品系鉴定通常依赖于化学分析方法,主要包括显微鉴定法、高效液相色谱法、DNA(deoxyribonucleic acid)分子鉴定法和近红外光谱检测技术等,然而这些方法需要人工鉴别,存在一定的主观性而且效率低下[1-2]。因此实现不同品系的金线莲高效、准确鉴别是亟待解决的问题。

随着计算机和图像处理技术的发展,近年来,机器视觉技术已被引入到中药材鉴别的各个环节。文献[3]在传统经验鉴别的基础上,采用宽长比、RGB(red-green-blue)值、图像处理软件等现代处理方法与技术,实现了对枸杞子规格与等级的快速划分。文献[4]则利用了药材横切面显微图像的灰度信息,构建灰度匹配模板,实现与尺度及方位无关的中药材样品图像的自动识别。文献[5]利用自适应图像分割算法实现了对中药有效区域内不同部位的分割。然而,当前直接基于叶片图像对中药材进行识别的研究很少,文献[6]基于机器视觉对金线莲品系进行了研究,将提取的特征直接用于分类模型构建,但其构建的集成分类模型参数多,模型训练过程复杂。

鉴于此,本课题基于图像特征对金线莲品系进行识别分析,通过特征的有效融合降低分类模型设计复杂度,利用基于主成分分析(principal component analysis,PCA)的K最近邻(K nearest neighbor,KNN)[7-9]算法和支持向量机(support vector machines,SVM)[10-12]算法进行分类。

1 叶片的图像预处理

本研究以红霞金线莲、尖叶金线莲、台湾金线莲为例分析3类金线莲的品系鉴别问题,算法的整体流程如图1所示。

图1 叶片图像识别整体流程图Fig.1 Overall flow chart of blade image recognition

由于在自然环境条件下拍摄的干扰信息较多,为改善关键部分的显示效果以便于图像后续处理,首先对图像进行预处理。以红霞金线莲为例,具体步骤如下:

步骤一:将彩色图像缩小至分辨率为800×800像素。使用均值滤波和灰度化处理,将彩色图像(RGB图像)转换为灰度图像,克服纹理提取时噪音及颜色的影响,如图2(a)所示。

步骤二:采用高斯滤波和二值化处理,即采用大津法(Otsu)来选取滤波阀值T,凸显轮廓,对图像空间频率进行强化,提高目标的对比度,减少图像的数据量,如图2(b)所示。

步骤三:对图像进行形态学处理,其中,闭运算消除叶片的内部孔洞,开运算去除叶柄影响,如图2(c)所示。

步骤四:对图像进行掩膜,使用滤光片、胶片等物体或多值图像遮挡图像,以提取结构特征,统计屏蔽区,获取感兴趣区的行为,如图2(d)所示。

图2 叶片预处理结果示例Fig.2 Examples of blade preprocessing results

其中,对图像滤波降噪,在步骤一至步骤二均有采用,其作用是在尽可能保留图像细节特征的条件下,对目标图像进行噪声抑制,这是图像预处理中不可或缺的操作。通过滤波技术淡化部分无用信息,从而改善实物目标与领域或背景之间的灰度反差。

2 叶片的图像特征提取与融合

2.1 纹理特征提取

纹理特征是图像的重要底层特征之一,本试验采用灰度共生矩阵(gray level co-occurrence matrix,GLCM)在统计基础上完成提取。如果两个像素灰度在空间位置上表现出了联合分布的特征,则将其视为GLCM矩阵中的元素。根据相邻像素点之间距离参数D的不同可以得到不同距离的灰度共生矩阵,通过计算水平方向[0,D],右上角45°方向[-D,D],竖直方向[-D,0],左上角135°方向[-D,-D]获得灰度共生矩阵。当图像中的各像素灰度值比较接近时,GLCM存在较大的元素值。常用的GLCM矩阵特征指标包括:熵值、对比度、能量、自相关、逆差距等。本次试验提取16维数据,分别从水平方向、垂直方向、45°方向、135°方向等4个方向提取了关于能量Asm、对比度Con、逆差分矩Idm和熵值Ent数据。

(1)

(2)

(3)

(4)

式中,P(i,j)为归一化后的灰度共生矩阵的第i行第j列的值。

利用GLCM,可以求得起点像素灰度值是i,并在离开某固定位置的点时灰度值为j的概率。GLCM生成流程如下:

步骤一:假设点(x,y)位于某图像上,其灰度值为(c1,c2);(x+a,y+b)为与该点存在距离或偏离的点。移动点(x,y)后,灰度值也会发生相应的变化。

步骤二:若将k视为灰度值级数,则存在k2种(c1,c2)组合;在图像范围内,对每种(c1,c2)出现的次数进行统计,并以方阵形式排列。

步骤三:归一化处理出现的总数,得出P(c1,c2)。在截取数值组合时,如果将差分值设为(a,b),那么联合概率矩阵也会表现出众多差异。

通过对纹理特征进行提取后,得到GLCM数据,为120行16列矩阵。

2.2 颜色特征提取

HSV(hue-saturation-value)为使用者提供了直观的颜色描述方案,即颜色亮度、深度等颜色问题。其中,H为色调;S为饱和度;V为明度、色彩的亮度。HSV的诞生为颜色识别及机器视觉技术的发展提供了重要支持。HSV空间模型可以对色彩明度、饱和度、色调进行直观的描述,比RGB空间更具有表达力。

在HSV模型里,V分量与色彩无关,所以在提取颜色模型时,仅提取R、G、B、H、S共5个颜色分量。最后统计得到的颜色特征有15个(含一阶矩、二阶矩、三阶矩)。具体的计算公式如下:

(5)

(6)

(7)

式中,Ci1、Ci2、Ci3分别表示第i个颜色分量的一阶矩、二阶矩、三阶矩,Pij代表第i个颜色分量灰度值为j的像素点出现的概率。

通过对颜色特征进行提取后,得到HSV数据,为120行15列矩阵。

2.3 PCA特征降维

PCA是图像处理中经常用到的降维方法,它通过计算数据矩阵之间的协方差矩阵,得到协方差矩阵的特征向量;再选择特征值最大(协方差最大)的S个特征所对应的特征向量组成的矩阵;然后将数据矩阵转换到新的多维空间中,实现数据的降维操作,提高识别精度。

假设分析数据为N(n个特征),则PCA整体计算流程为:

(1)对向量N进行中心化;

(2)计算N的协方差矩阵;

(3)计算协方差矩阵的特征值和特征向量;

(4)将原始特征数据投影到选取的特征向量上,得到降维后的S维特征,S为经验值。

图3为数据降维后的坐标图,由于整体数据量较大,所以只从不同类别金线莲中分别随机选取3组数据进行绘图。图3中,横坐标为降维后维度,纵坐标为在不同维度下、不同类别的金线莲数据量大小,1为红霞金线莲,2为尖叶金线莲,3为台湾金线莲。从图3可见,前3维数据的区别较大,其余5维数据重叠较严重,不便用于区分,从而不利于金线莲的识别。

图3 降维后坐标图Fig.3 Coordinate diagram after dimension reduction

通过表1我们可以清楚地得知,前5维数据已经占整体的99.61%。因此可以通过保留前5维数据,处理掉部分占比较小的干扰信息,这就能保留叶片提取特征的绝大部分信息,并且去除相似度极高的特征,从而很好地起到降低特征维度,提高结果的精确度的作用。

3 基于PCA-KNN的金线莲识别算法

KNN算法核心思想:如果一个样本在特征空间的最相似(最近临)的N个样本大部分属于某个类别,则该样本也属于这个类别。

对于KNN算法,首先构建一个训练样本集合X,并设定K的初值(先确定一个初始值,再进行调整,实现最优参数);分类时,在训练样本集中选出与特征Z最接近的k个样本。

假设样本点x属于n维向量空间R,则采用欧式距离计算样本点之间的近邻关系。对于样本集合X,设第i个样本属于R。则样本xi与样本yi之间的欧式距离为:

(8)

若给定一个待分类样本xs,其中x1,x2,...,xk表示与xs距离最近的k个样本,假设离散目标函数为f,v表示类别标签。

(9)

图4 按距离匹配归类Fig.4 Classification by distance matching

综上,基于PCA的KNN算法基本步骤为:

步骤一:获取PCA降维后的数据,共9列数据,假设调用指令提取1到8列的特征数据,存储于jxl_data中,再次调用指令提取第0列的标签,存储于jxl_target中。

步骤二:获取金线莲的特征值、目标值。将上一步获取的特征数据jxl_data作为特征值,jxl_target作为目标值。

步骤三:将获取的特征值中52%(经验值)的数据作为测试集,其余作为训练集。

步骤四:建立特征方程,即对特征值进行标准化处理。其特点为:由于每个特征的大小和取值范围等不一样,从而导致每个特征的权重不一样,而实际上是一样的。通过对原始数据进行变换,把数据变换到均值为0,方差为1的范围内。这样每个特征值的权重都会变得一样,以便于计算机处理。

步骤五:将测试集送入算法训练,获取预测结果。

4 实验结果及分析

实验中,设定测试集大小为0.52(test_size = 0.52),即52%的数据用作测试集,剩余数据用于训练,根据经验选取KNN算法的K值为1(n_neighbors = 1),比较不同主成分数下模型的效果。实验中用到的部分金线莲叶子图像如图5所示。

图5 金线莲叶片图像Fig.5 Blade images of anoectochilus roxburghii

由表2可知,经过PCA降维后,选取主成分数为5作为KNN模型的输入时,该模型的识别率最高,达到98.4%。

为验证所提算法的有效性,本研究将其与KNN、SVM、PCA-SVM等算法对63幅待识别的金线莲叶子图进行识别,并将准确率作为分类结果评价指标。识别结果对比如表3所示。

表3 各方法识别结果

由表3数据可知,对于未降维的数据,KNN算法识别准确率为90.5%,这说明KNN算法对于庞大数据的处理能力欠佳,对于小量数据处理效果较好。SVM算法识别准确率为93.7%,经过PCA降维后的PCA-SVM算法识别准确率为96.8%,均低于本研究提出的PCA-KNN算法。

品系识别方面,利用PCA降维后的数据集并通过KNN算法实现了对金线莲的分类,即采用基于PCA的KNN算法进行金线莲品系识别更加精准,错分率为1.6%,准确率达98.4%。

5 结语

由于金线莲种类繁多且长相相近,人工识别耗时费力,而现有的方法对实验设备的条件要求高且具有局限性,为了能对品系进行方便准确地识别,本研究提出基于PCA-KNN的金线莲叶片识别方法。试验采集3种品系金线莲图像数据,对其进行预处理,进而提取得到31维金线莲的纹理、颜色特征数据;通过PCA进行特征降维,共提取累积贡献度达99.61%的5个主元,通过训练KNN分类器完成分类。实验表明,所提出的PCA-KNN算法能有效提高金线莲叶片识别准确率,较KNN、SVM、PCA-SVM等方法分别提高了7.9%、4.7%、1.6%。因此,本方法已能对金线莲叶片做出准确的识别,下一步工作将深度学习用于提取特征以及分类识别,进一步优化算法。

猜你喜欢
金线降维灰度
基于ITS2和psbA-trnH序列鉴别金线兰及其近缘种
混动成为降维打击的实力 东风风神皓极
采用改进导重法的拓扑结构灰度单元过滤技术
基于数据降维与聚类的车联网数据分析应用
天津港智慧工作平台灰度发布系统和流程设计
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
大气腐蚀数据降维最优维度研究
Arduino小车巡线程序的灰度阈值优化方案
降维打击
深山种植金线莲走出致富路