基于OpenCV算法的玉米种子品质检测分级方法研究
2017-05-15王应彪贾贺鹏许凤仙
王应彪, 贾贺鹏, 李 明, 刘 娟, 许凤仙
(西南林业大学机械与交通学院,云南 昆明 650224)
研究与设计
基于OpenCV算法的玉米种子品质检测分级方法研究
王应彪, 贾贺鹏, 李 明, 刘 娟, 许凤仙
(西南林业大学机械与交通学院,云南 昆明 650224)
玉米种子的质量分级是种子加工过程中的重要环节之一,利用图像处理技术对玉米种子进行质量分级具有无损、精度及效率高等优点。以玉米种子为研究对象,应用图像处理技术,通过OpenCV提出了获取玉米种子外观形状与特征尺寸的算法,对玉米种子形状特征进行分级。同时,通过对优质和带有伤损、霉变种子的HSV颜色空间进行分析,对种子外观品质进行分级。结果表明:优质种子分类正确率为90.5%,一般种子正确率为82.3%,劣质种子正确率为92.3%,其可为进一步利用图像技术对玉米种子进行外观分级及品质检测提供技术支持。
玉米种子;图像处理;分级;形状
玉米是世界三大粮食作物之一,是我国第二大粮食作物,其籽粒的尺寸、形状等特征是种子分级以及播种机具设计的重要指标,优质的玉米种子可提高玉米的产量和质量,种子质量的鉴别和分级是种子加工过程的重要环节之一。当前玉米种子的形状、质量分级主要是通过振动筛分选、比重分选及人工分选等方式进行,效率低且对种子损伤严重。近年来,图像处理技术被广泛应用于农产品的检验与分级中,如对谷物籽粒颜色[1]、粒形和种类的识别,对水果形状和缺陷等外观品质的识别等。OpenCV作为开放的计算机视觉资源代码,可为用户提供丰富的图像及计算机视觉处理函数,为图像处理、计算机视觉技术的应用提供了极大的方便,OpenCV目前已成为从事机器视觉算法开发人员使用最广泛的开发工具[2]。谢捷如等[3]利用OpenCV实现对苹果和橘子外形特征的提取、分析及自动识别;刘双喜等[4]利用OpenCV实现了对棉花异性纤维图像特征的提取。本文以玉米种子为研究对象,采用图像处理技术,通过OpenCV提出了获取玉米种子外观形状与特征尺寸的算法,为进一步利用图像处理技术对玉米种子进行外观分级及品质检测提供技术支持。
1 玉米种子籽粒形态及结构特征
种植较多的常规类型玉米种子有马齿型、半马齿型和硬粒型,玉米种子籽粒实质上是果实,植物学上称为颖果,通常叫籽粒。玉米种子籽粒的形状、大小和色泽因类型和品种的不同而不同,与种子在果穗上的位置也有关系,如图1所示,其中L为种子长度(m),B为种子宽度(m)。在果穗两端的种子圆形粒居多,而果穗中部的种子则以长扁粒居多。玉米籽粒由皮层、胚、胚乳三大部分构成,籽粒
形态扁平。玉米种子的外观尺寸包括长度、宽度和厚度;形状特征包括周长、面积、圆形度、矩形度、伸长度等,颜色特征包括色度、饱和度等。通过对尺寸与形状的比较,可把玉米种子分为长扁粒、小圆粒及大圆粒三种。
图1 玉米种子
2 玉米种子外观检测的OpenCV实现
玉米种子外观检测程序流程如图2所示,检测过程分为五个基本流程,图像预处理包括图像平滑、背景去除、形态学处理、颜色空间变换、灰度处理、二值化处理和边缘检测等;特征提取包括种子的长度、宽度、面积、圆形度、紧凑度等尺寸的分割算法,以及颜色特征色度、纯度和亮度等数据的提取;对不同品种的玉米种子提取出来的特征值进行统计计算及数据分析比较,通过阈值分割实现对种子的分类[5]。
图2 玉米种子外观检测程序流程
3 玉米种子的外观尺寸检测提取
将采集的RGB图像根据Otsu法确定的阈值去除背景,并对图像进行中值滤波去噪。将图像从RGB模型转换到HSV模型,将色度值域变换到[0,255],并从HSV通道提取H、S、V三个单通道进行二值化处理,采用中值滤波及形态学降噪处理对H、S、V三个单通道图像进行Canny 边缘检测,得到玉米种子外部清晰轮廓,通过对比发现V空间得到的轮廓最理想。玉米种子图像预处理及边缘提取如图3所示,种子形状特征示意图如图4所示。
图3 玉米种子图像预处理及边缘提取
图4 种子形状特征示意图
3.1 种子尺寸及形状检测
玉米的长度定义为玉米边缘轮廓内过形心且内部最长的轴线。具体的实现方式是利用OpenCV中的查找轮廓函数:cvFindContours(pcany,g_storage,&contours,sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_NONE,cvPoint(0,0)),其中pcany为输入二值图或者边缘图片指针,g_storage为轮廓存入指针。由于存在噪声轮廓,因此通过循环遍历图片上所有轮廓,比较查找出最大轮廓即为玉米外形轮廓。通过函数cvBoundingRect(area_max_contour)计算出最大的最外面(up-right)矩形边界,获得玉米轮廓最小外接矩形(图4),最小外接矩形的长度即为种子长度,宽度即为种子宽度。再通过函数cvContourArea(area_max_contour)求得轮廓面积即为种子面积,通过函数cvArcLength(area_max_contour)求得轮廓周长,通过函数cvMoments(pcany,&moment,2)求得轮廓矩,轮廓矩的计算公式为:
(1)
式中:p为x维度上的矩;q为y维度上的矩;I为轮廓。
函数cvGetSpatialMoment可获得特定的矩,通过轮廓矩即可求出轮廓质心点坐标,质心点坐标的计算公式为:
(2)
式中:xavg为形心横坐标;yavg为形心纵坐标。
以质心点为圆心,种子长轴为直径可得一圆,则圆形度的计算公式为:
δ=C2/(4πA)
(3)
式中:δ为圆形度;C为玉米种子周长;A为玉米种子面积。
种子的紧凑度可由长短轴比求出。
3.2 种子颜色特征检测
采集到的玉米种子颜色模型为RGB三个基本通道图像,而人类更为自然直观的视觉感知色彩颜色模型则为HSV颜色通道模型。因此,可将种子RGB通道转换为HSV通道,即用种子颜色的色度H、纯度S、明度V三个分量的平均值来表示颜色特征,玉米种子的HSV通道图像如图5所示。
图5 玉米种子HSV通道图像
首先,通过函数cvCvtColor(src,imghsv,CV_BGR2HSV)将RGB空间转换为HSV空间,再通过函数cvCvtPixToPlane(imghsv,h_plne,s_plane,v_plane,0)将HSV图像分割为H、S、V单通道图像。其中src为输入RGB原图,imghsv为输出HSV图像,h_plane为H通道(色度),s_plane为S通道(纯度),v_plane为V通道(明度),然后经过统计分析得出种子的颜色特征[6]。种子区域的平均色度、平均纯度和平均明度的计算公式为:
(4)
4 玉米种子的分类方法
4.1 基于形状特征的种子分类
根据尺寸及形状检测函数可得到种子的长度、宽度、圆形度和紧凑度,下面以郑单958玉米种子为研究对象,分别对选取的50粒长扁粒种子、50粒大圆粒种子、50粒小圆粒种子进行测试,经计算得到的尺寸参数平均值见表1。通过4个参数统计值,设定固定阈值对玉米种子形状特征进行分类判别[7]。
表1 玉米种子外观尺寸
分类长(L)/mm宽(K)/mm圆形度/mm紧凑度/mm长扁粒12