陈 芳,张广群,崔坤鹏,汪杭军
(1.浙江农林大学 信息工程学院,浙江 临安 311300;2.浙江农林大学 天目学院,浙江 临安 311300)
目前,植物的识别普遍是通过人工来完成的。然而地球上植物资源非常丰富,仅为人们所知的开花植物就多达几十万种。面对种类如此繁多的植物,如果仅仅依靠人工的方法往往无法正确地完成识别的任务,并且这种人工识别的方式效率也比较低。因此,人们就把计算机技术引入到对植物识别的研究之中。植物的根、茎、叶、花、果实和种子,都可以作为识别的特征。但是,在计算机植物识别和分类系统中,植物的叶片通常被作为首选,因为与其他的识别特征相比,大多数的叶片都具有二维结构,更容易使用计算机的图像技术进行处理。对于植物的自动识别的研究,国内外许多学者都做出了大量的工作。国外早期的叶片分类主要基于形状的全局几何描述。例如,在20世纪80年代如Ingrouille等[1]利用27种叶形特征,使用主分量分析方法对橡树进行了分类研究[1]。Abbasi等[2]通过提取叶片轮廓的曲率尺度空间(curvature scale space,CCS)图像,使用多尺度分析技术对40种菊花的400幅图像进行测试,获得了较好的效果[2]。Im等[3]人用曲率法找到叶片顶点,在2个层次上用多边形逼近叶片外形,并对叶片进行归一化处理。通过对14种植物叶片的测试,识别精度相当不错。Wang等[4]提出了应用多项特征作为叶片特征,包括取叶片的纵横轴比、面积凹凸比、矩形度、球状性、周长凹凸比、偏心率和形状参数8项几何描述因子以及7项轮廓的Hu不变矩作为叶片特征。这些研究主要是基于形状的全局几何描述方法对叶片进行分类。近年来也有学者提出了纹理的方法。2007年,王路等[5]使用Gabor滤波器在4个方向和4个尺度上对叶片的灰度图像进行处理,得到96个纹理特征,然后对9种植物叶片的测试结果表明,识别的平均正确率达到94.4%。张蕾[6]用二维离散小波变换对叶片图像进行分解,得到72个纹理特征,对15种植物叶片进行测试实验后也取得了不错的效果。通过基于植物叶片的计算机识别研究中,我们可以发现,不同的学者都提出了植物叶片的不同特征,包括几何特征和纹理特征来进行植物种类的分类和识别任务。但是在嵌入式系统上如何开展叶片的识别工作却很少。本研究将利用嵌入式设备灵活、方便的特点,结合嵌入式技术和图像处理技术,通过提取叶片相对稳定的形状特征实现对植物种类的识别分类研究。整个过程包括叶片图像获取、图像预处理、特征提取、分类识别等4个阶段。最后对9种植物的45幅叶片图像的进行了实验,结果表明,该方法可以比较准确地实现对植物的种类的识别分类。
本系统的硬件平台采用UP-NETARM2410-S实验开发板,三星ARM9 S3C2410为核心板。Arm板上操作系统采用嵌入式Linux,内核版本为2.6.18。同时利用Qt 4.5跨平台应用程序和用户界面框架技术来设计GUI。系统总体框架如图1所示。
植物自动识别系统首先利用摄像头获取植物的叶片图像,然后再对叶片的图像进行预处理,接着进一步提取到叶片的轮廓信息,然后根据提取到的轮廓进行叶片特征的提取,最后通过实现训练好的样本特征数据集进行匹配,进而完成识别过程。
植物自动识别系统的硬件设计在整个系统设计中是一个重要的环节,也是系统软件设计的基础。系统的硬件框图如图2所示。
图1 系统总体框架图Figure 1 System of overall framework chart
图2 系统硬件框图Figure 2 System of hardware diagram
植物自动识别系统使用32位三星ARM9 S3C2410处理器为核心板,系统界面采用博创有触摸功能的8英寸640×480 TFT真彩LCD屏幕;FLASH使用64 M NAND FALASH方式启动系统。与此同时,还扩展了一个OV511摄像头模块,方便地实现人员与控制系统之间人性化交互,完全满足时下的应用需求。
以下主要介绍图像预处理、特征提取、叶片识别这3个过程在系统中的设计与实现的过程和方法。结合源码进行分析,本次开发主要用到了OpenCV中一些基本的叶片图像预处理函数,以及一些基本的轮廓特征提取函数。
1.4.1 叶片图像预处理 完整的叶片图像识别的流程如图3所示,样本叶片预处理效果图如图4所示。在叶片图像预处理环节,主要经过了阈值分割、形态学处理和轮廓提取3个步骤。①阈值分割。为了便于叶片轮廓的提取以及形状特征的计算,需要我们利用阈值分割的方法把图像中叶片和它的背景区分开来。然而,植物叶片由于种类不同,导致颜色深浅不一,因此,在转成灰度图像后难以用一个统一的特征值进行分割。我们使用的方法是先把图片灰度化,然后再根据图片整体阈值的分析来确定图片最适合的阈值,最后根据这个阈值对图片进行二值化处理。其方法相对应以下3行代码。
图3 叶片图像识别流程图Figure 3 Flow char to leaf image recognition
图4 预处理流程Figure 4 Flow char of pretreatment
cvSmooth(src_back,src_back,CV_GAUSSIAN,3,1,0); //平滑处理
cvCvtColor(src_back,temp,CV_RGB2GRAY); //灰度化
cvThreshold(temp,temp,GetThreshold(ProOfGrey),255,CV_THRESH_TOZERO_INV);
//二值化处理
②形态学处理。二值化完成分割工作以后,我们发现,采集到的植物样本中有些已遭到虫子的噬咬,出现小的孔洞,这样影响了叶片轮廓的提取,因此在图像二值化以后需要进一步进行图像预处理操作。于是,我们采用数学形态学当中的闭操作,即先膨胀操作,然后腐蚀操作。经过若干次反复这样的处理以后,叶片内的小孔洞就可以消除。同时我们发现叶柄的长度不一致对形状特征的提取也会有一定的影响,进而影响识别率。因此必须消除叶片的叶柄。这里我们使用形态学中的开操作,先闭操作,然后开操作,便可以去除叶柄。具体过程如下所示:
voidContour::GetBackImage(IplImage*src,IplImage*src_back)
{
cvCvtColor(src,src,CV_RGB2GRAY); //灰度化
IplImage*tmp=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,3); //创建结构元素
IplConvKernel*element=cvCreateStructuringElementEx(2,2,0,0,CV_SHAPE_ELLIPSE,0);
//用该结构对源图象进行数学形态学的开操作后,估计背景亮度
cvErode(src,tmp,element,9);
//使用任意结构元素腐蚀图像
cvDilate(tmp,src_back,element,9);
//使用任意结构元素膨胀图像
}
③轮廓提取。经过阈值分割和形态学处理2个步骤,我们得到了样本叶片的初步轮廓值,然后用轮廓逼近的方法反复计算,最终提取到较精确的外部轮廓参数。具体过程如下:
void Contour::FindIplImageCount()
{
GetBackImage(_src,src_back);
CvMemStorage*storage=cvCreateMemStorage(0); //提取轮廓需要的储存容量0为默认64KB
CvSeq*pcontour=0;//提取轮廓的序列指针
IplImage*temp=cvCreateImage(cvGetSize(src_back),src_back->depth,1);
cvSmooth(src_back,src_back,CV_GAUSSIAN,3,1,0); //平滑处理
cvCvtColor(src_back,temp,CV_RGB2GRAY); //灰度化
Getprobability(temp); //获得求阈值的概率表
ProBorder(temp); //边界处理
//ImageAdjust(temp,temp,0,0.32,0.2,0.58,3.5);
cvThreshold(temp,temp,GetThreshold(ProOfGrey),255,CV_THRESH_TOZERO_INV);
int contoursNum=0;//轮廓数量
//int mode=CV_RETR_LIST;
int mode=CV_RETR_EXTERNAL;//提取最外层轮廓
contoursNum=cvFindContours(temp,storage,& pcontour,sizeof(CvContour),mode,CV_CHAIN_APPROX_NONE);
//二值图,得到轮廓存储,轮廓指针序列,header_size,提取模式,逼近方法
CvScalar externalColor;//保存颜色值
CvScalar holeColor; //画轮廓
}
1.4.2 叶片图像特征提取 通常,植物叶片的形状特征、颜色特征和纹理特征都可以用来作为识别植物叶片的图像特征。然而,根据植物分类的理论,叶片的形状特征是判断叶片所属种类的最直接和最有效的依据[7]。因此,我们提取叶片的几何形状特征用于叶片分类。由于不同的植物种类的叶片形状不尽相同,即使是种类相同的植物,它的叶片的大小比例也可能不一样。因此一般的植物叶片的绝对值特征,如叶片的周长、面积、纵轴长、横轴长等都不太适合作为分类的依据。于是我们的方法是利用叶片轮廓的形状描述计算的8个相对值特征:凸包面积、凸包周长、球状性、圆形度、形状参数、面积凹凸比、周长凹凸比和偏心率[8]。首先,得到预先需要的凸包面积、凸包周长,然后计算如下的一些特征值:①面积(area convexity)凹凸比是叶片面积和叶片凸包面积的比值:A1=B/C,其中:A1值表示面积凹凸比(area converxity),B值表示叶片面积(area),C值表示叶片凸包面积(converx area)。②周长(perimeter convexity)凹凸比是叶片周长和叶片凸包周长的比值:A2=D/E,其中:A2值表示周长凹凸比(perimeter converxity),D值表示叶片周长(perimeter),E值表示叶片凸包周长(converx perimeter)。③球状性(sphericity)是叶片面积与叶片凸包周长的计算值:A3=(4πB)/E2,其中:A3值表示球状性(sphericity),B值表示叶片面积(area),E值表示叶片凸包面积(converx area)。④偏心率(eccentricity)是叶片自身长轴和短轴的比值:A4=L1/L2,其中: A4值表示偏心率(eccentricity),L1值表示叶片自身长轴(axislengthlong),L2值表示叶片自身短轴(AxisLengthshort)。⑤形状参数(form factor)是叶片面积和周长的计算值: A5=(4πB)/D2,其中:A5值表示形状参数(form factor),B值表示叶片面积(area),D值表示叶片凸包面积(converx area)。⑥圆形度(circularity)是叶片内切圆半径与外切圆半径的比值。A6=R1/R2,其中: A6表示圆形度(cricularity),R1表示叶片内切圆半径(inscribde circle),R2值表示叶片外切圆半径(excircle)。表1为龙爪槐Sophora japonica叶片样本的几何特征值。
1.4.3 叶片识别 叶片识别模块主要采用欧式距离计算待识别图片与数据库中各植物样本之间的相似度,然后采用最近邻分类器进行识别。叶片分类识别的流程如图5所示。首先选择植物的样本,提取特征后形成特征数据存储到样本库中。待识别的植物同样提取特征后,采用最近邻分类器,与样本库中的数据进行比较,最后得到叶片识别结果。
图5 叶片分类识别Figure 5 Leaves classification and recognition
表1 龙爪槐样本的几何特征值Table 1 Characteristic value of sample leaves
实验采集了银杏Ginkgo biloba,樟树Cinnamomum camphora,无患子Sapindus saponaria等9种树叶,每种树叶选取5片样本进行测试。实验按照图3的分类识别方法。结果表明:利用植物叶片的形状特征进行植物识别的平均正确识别率为82%。基本能够实现计算机对对这9种植物叶片的识别。
下面以银杏叶片样本测试为例说明系统的运行过程。首先系统硬件设备连接完毕,模块接口正确,连线无误;启动程序,摄像头对叶片进行拍摄,获取图像,如图6A所示;其次,系统对叶片进行预处理,轮廓提取,特征提取,获得识别效果如图6B,最终显示识别的效果(图6C)。
图6 系统运行效果Figure 6 Effect of the system
叶片对于研究植物具有着非常重要的意义。目前,人们对于植物的识别基本上都是通过肉眼去观察,一直缺少着相应的仪器,同时也缺乏必要的精确度与准确度。本研究对于嵌入式植物叶片识别系统的研究,希望通过这个系统能够在农业和林业的研究上起到一定的推动作用,同时也希望能有越来越多的人能够通过该系统对更多的植物有新的认识。同时,本研究还存在一些需要改进的地方:①地球上植物的种类有45万种之多,而目前只是单纯地实现了对9种差距较大的植物叶片的识别,下一步需要建立更大的数据库,以实现对更多植物种类的识别;②植物种类的增加,特征类似的植物叶片之间会无法区分,所以需要寻找更有效的特征来进行识别;③数据的增加必然引起计算量的增加,本身在嵌入式设备上资源有限,对效率的要求较高,因此,需要对算法进行优化。
[1]INGROUILLE M J,LAIRD S M.A quantitative approach to oak variability in some north London woodlands [J].Lond Nat,1986,65: 35-46.
[2]ABBASI S,MOKHTARIAN F.Reliable classification of chrysanthemum leaves through curvature [M]//[n.s.].Pro-ceedings of the First International Conference on Scale-space Theory in Computer Vision.London: Springer Verlag,1997:284-295.
[3]IM C,NISHIDA H,KUNII T.Recognizing plant species by leaf shapes: A case study of the Acerfamily [M]//[n.s.]Fourteenth International Conference on Pattern Recog-nition.Brisbane: IEEE Computer Society Press,1998: 1171-1173.
[4]WANG Xiaofeng,DU Jixiang,ZHANG Guojun.Recognition of leaf images based on shape features using a hypersphere classifier [M]//[n.s.].Advances in Intelligent Computing.Berlin/: Springer,2005: 87-96.
[5]王路,张蕾,周彦军,等.基于LVQ神经网络大植物种类识别[J].吉林大学学报:理学版,2007,45(3):421-426.WANG Lu,ZHANG Lei,ZHOU Yanjun,et al.Computer-aided plant species identification based on LVQ neuralnet work [J].J Jilin Univ Sci Ed,2007,45 (3): 421-426.
[6]张蕾.基于叶片特征大计算机自动植物种类识别研究[D].长春: 东北师范大学,2007.ZHANG Lei.The Research Of Computer-aided Plant Species Identificantion Based on Leaf Feature[D].Changchun:Northeast Normal University,2007.
[7]朱荣胜,陈庆山,杨佳,等.大豆叶片的特征提取方法研究[J].农机化研究,2010(5): 15-16.ZHU Rongsheng,CHEN Qingshan,YANG Jia,et al.Research on feature extraction about soybean leaf [J].J Agric Mech Res,2010 (5): 15-16.
[8]王晓峰,黄德双,杜吉祥,等.叶片图像特征提取与识别技术的研究[J].计算机工程与应用,2006,42(3):192-193.WANG Xiaofeng,WANG Deshuang,DU Jixiang,et al.Feature extraction and recognition for leaf images [J].Compr Eng Appl,2006,42 (3): 192-193.
[9]DIGIA O.Qt Online Reference Documentation[R/OL].2005-12-15[2012-01-20].http://doc.qt.nokia.com.
[10]中科院自动化所自由软件协会.OpenCV 参考手册[R/OL].2009-10-24[2012-01-20].http://www.opencv.org.cn/index.php.
[11]王敬轩,冯全,王宇通,等.基于图像识别技术的豆科牧草分类研究[J].草地学报,2010,18(1):37-41.WANG Jingxuan,FENG Quan,WANG Yutong,et al.Study on classification for Leguminous forage based on image recognition technology [J].Acta Agrestia Sin,2010,18 (1): 37-41.
[12]阚江明,王怡萱,杨晓微,等.基于叶片图像的植物识别方法[J].科技导报,2010,28(23): 81-85.KAN Jiangming,WANG Yixuan,YANG Xiaowei,et al.Plant recognition method based on leaf images [J].Sci & Technol Rev,2010,28 (23): 81-85.
[13]张宁,刘文萍.基于图像分析的植物叶片识别技术综述[J].计算机应用研究,2011,28(11):4002-4007.ZHANG Ning,LIU Wenping.Plant leaf recognition technology based on image analysis [J].Appl Res Comp,2011,28(11): 4002-4007.