基于OpenCV图像处理的水稻谷粒考种软件的设计
2024-01-26罗永泽张广泽林木宋刘骏刘旭欧阳咏霁徐振江刘洪
罗永泽 张广泽 林木宋 刘骏 刘旭 欧阳咏霁 徐振江 刘洪
摘要:该研究基于OpenCV库设计出一款水稻谷粒考种软件。它首先利用摄像头获取谷粒图像并进行比例尺校正,之后对图像进行灰度化、平滑化、阈值分割和开运算等处理,然后识别谷粒同时依据需要对其轮廓或数量进行修正,最后在OpenCV 椭圆拟合函数的基础上获取谷粒长、宽和周长等考种数据。通过比对软件测量和人工测量的数据结果,发现软件测量的数据准确性和可靠性均较高,可以替代人工进行水稻谷粒考种分析。
关键词:OpenCV;水稻;考种;软件
中图分类号:TP317.4 文献标识码:A
文章编号:1009-3044(2023)35-0023-04
开放科学(资源服务)标识码(OSID)
0 引言
水稻(Oryza sativa L.) 是全球最重要的粮食作物之一,近一半人口以大米为主食[1]。在水稻育种和栽培过程中,育种家常常需要对收获后的稻谷进行观测分析,其中形态性状测量(谷粒考种)是重点[2],谷粒考种所涉及的性状主要包括谷粒数量、谷粒长宽和谷粒形状等。传统的水稻考种主要依靠人工完成,测试成本较高,且测量准确度容易受到操作人员熟练程度和专注度等因素的影响,导致测量质量和效率达不到现代水稻栽培育种研究的发展需求[3]。
为了提高作物考种效率,国内外学者和机构进行了大量的分析研究,其中在光电分析方面,美国的Seedburo公司、法国肖邦(Chopin) 公司和德国派福(Pfeuffer) 公司先后研制了光电数粒机[4],虽然这些仪器相较于人工数粒有了长足的进步,但该类仪器功能單一只能统计粒数。近年来,随着计算机视觉分析和人工智能技术的发展,农作物自动化表型分析研究取得了巨大发展。姚远等[5]在阈值分割、滤波操作和Harris角点检测算法分析的基础上,提出了大豆植株分杈数数学模型,实现了对这个性状的可靠分析。邢航等[6]通过对水稻谷粒图像与质量信息同步采集的方式实现了水稻谷粒考种参数自动提取。Yang等[7]基于线阵列摄像机开发了一套水稻考种系统,该系统能自动提取稻谷总粒数、空粒数和实粒数等参数。广东九州智农科技有限公司基于图像识别技术开发了一套自动考种分析系统(ST2001) ,利用该系统可对水稻、小麦和玉米等农作物的总粒数、实粒数和千粒重等参数进行分析研究。武汉谷丰光电科技有限公司也基于数字图像处理技术研发了一款水稻数字化考种机(YTS-5D) ,该系统可以获取水稻总粒数、实粒数、粒长宽和粒面积等重要表型性状参数。上述设备虽然操作方便快捷但也存在价格昂贵和结构复杂的特点,并不利于大面积推广应用。
作为Intel公司支持的一种重要的开源计算机视觉库,OpenCV(Open Source Computer Vision Library) 可以在多个操作系统上运行,它提供了多个语言接口,可以实现计算机视觉图像处理等方面的分析研究。本研究以OpenCV库为基础,利用水稻谷粒检测模型和优化特征提取算法,在对比验证的基础上设计了一套水稻谷粒考种分析软件,为水稻谷粒自动化考种提供一种有效方法。
1 软件系统构成及运行流程
本软件主要由图像获取、图像识别、图像分析与数据保存输出4个模块组成,其中图像识别与分析模块主要基于OpenCV开发。软件操作界面利用QT平台的C++语言设计,主要由功能菜单区、图像预览区和结果展示区构成(图1) 。
在软件运行方面,首先利用摄像头获取谷粒图像并进行比例尺校正,然后通过灰度化处理、平滑化处理以及阈值分割和开运算分析降低图像噪声,之后提取二值图像边缘特征,最后利用OpenCV 椭圆拟合函数获取谷粒最小外接矩形的4个顶点,并在此基础上统计谷粒长、宽和周长等考种数据。
2 图像预处理
图像预处理的目的是增强对后续处理有重要作用的图像特征和抑制不需要的变形[8],改进特征提取、图像分割以及匹配和识别可靠性。通常情况下,图像预处理包括灰度化处理、平滑化处理、阈值分割处理和开运算处理等。
2.1 灰度化处理
在获得水稻谷粒彩色图像后,常需要对其进行灰度处理。灰度处理是一种重要的图像预处理方式,它的目的是均衡图像颜色的R(红)、G(绿)和B(蓝)分量值。目前灰度处理方法主要有三种,分别为最大值法、平均值法和加权平均值法[9],其中加权平均法主要依据重要性为R、G、B分别设置不同权重,然后在此基础上进行加权平均,即R=G=B=WrR+WgG+WbB,式中的Wr、Wg、Wb分别为R、G、B的权重,不同权重值将形成不同的灰度图像[10]。在本软件主要利用加权平均法对图像进行灰度处理(图2) ,图像转化函数为cv2.cvtColor() ,函数形式为cv2.cvtColor(frame, cv2.COLOR _BGR 2HSV) ,其中frame为要处理分析的图片,cv2.COLOR _BGR2HSV表示将图片转化为HSV灰度图片。
2.2 平滑化处理
在图像采集过程中常常受到噪声的影响,这些噪声会使原本均匀连续变化的灰度值产生突变,从而形成虚假的轮廓或边缘,进而对分割计数分析产生影响[11]。抑制、减弱或消除这类噪声改善图像质量的方法叫作图像平滑,本软件利用OpenCV中的blur函数对图像进行平滑化处理[12],其工作原理是将图像的每一个像素点替换成周围像素的平均值,具体代码为blur(gray,blurp,Size(3,3)) ,当中的Size(3,3) 表示对输入的灰度图像gray进行3×3大小的均值模糊处理,而blurp为平滑化处理后的图像。
2.3 阈值分割处理
阈值分割是一种重要的图像处理方法,它通过设定阈值将图像分成前景和背景两个部分,然后将关注部分(前景)从复杂背景区域中提取出来,以便对其进行识别和分析[13]。本软件基于全局阈值的方法利用threshold函数对图像进行分割处理,具体函数形式为threshold(blurp,thres,175,255,THRESH_BINARY_INV) ,当中的175为阈值,大于该值则像素值设置为255,否则设置为0。利用该函数对图像进行二值化处理(图3) 。
2.4 开运算处理
开运算的主要作用是对经过阈值分割处理的二值化图像再次进行形态学分析,它首先对图像进行腐蚀处理然后再进行膨胀处理,从而使边界角变圆滑,最终对图像轮廓起到修剪作用[14]。此外,开运算不仅能够清除细小的毛刺及狭窄连接,而且还不会导致图像轮廓整体收缩。本软件中利用使用OpenCV的morphologyEx函数对图像进行开运算处理,具体代码为morphologyEx(thres,morph,MORPH _OPEN,elem) ,当中的MORPH_OPEN表示开运算。
2.5 边缘检测算法分析
邊缘检测是计算机视觉图像处理中的基本工具,其目的是标识图像中亮度变化明显的点。边缘检测不仅可以大幅减少数据量,还可以剔除不相关的信息,从而保留重要的图像结构信息[15]。本软件利用Canny算子对图像进行边缘检测分析,代码形式为Canny(morph,cannyo,35,70) ,其中35为滞后阈值,如果一个像素的梯度大于它,则将其认为是边缘。而70为主阈值,如果一个像素的梯度大于它且与滞后阈值相连,则也将其认为是边缘。
3 水稻谷粒形态数据提取
在边缘检测算法将特征提取出后,本软件首先利用fitEllipse函数对谷粒轮廓进行椭圆拟合,之后从中提取谷粒最长轴与最短轴的四个顶点坐标,然后在此基础上构建谷粒最小外接矩形并计算谷粒长度、宽度、长宽比和周长等,最后再将所有考种信息展示出来(图4) 。
4 谷粒图像校正
通常情况下,图像分析结束后无需对图像再次进行修正,然而在实践过程中,常常发现空秕粒、芒和谷粒粘连等会影响分析结果的准确性。为了解决此类问题,本软件增加了谷粒形状修正与删除功能。
4.1 谷粒形状修正
谷粒形状修正的主要目的是消除粘连和芒对图像分析和数据统计的影响。本软件设计出一个基于鼠标划线方式调整图像形状的算法,具体操作步骤如下:
软件首先会计算鼠标划出的直线与谷粒的最小外接矩形框的交点数量,如果没有交点或只有1个交点,则不会对图像进行调整;如果有2个交点就会对谷粒所对应的最小外接矩形进行修正。修正方法是基于公式[x3=(x1+x2)/2]和[y3=(y1+y2)/2]计算2个交点中点坐标,式中x3和y3分别为中点的横纵坐标,之后基于该中点作两边的垂线并重新构建谷粒的最小外接矩形,最后重新获取考种数据(图5) 。
4.2 谷粒删除
谷粒删除的算法与思路主要参照4.1进行,即依据鼠标划出的直线与谷粒的最小外接矩形框的交点数量来判断是否删除谷粒,如果有2个交点则会删除谷粒所对应的最小外接矩形(图6) ,具体代码如下:
if(cut||(count&&(delrect||split))) {
this->press=true;
this->begin=event->pos();
end=QPoint();
end.setX(begin.x()+1);
end.setY(begin.y()+1);
} else {
this->press=false;
if(mark) {
markB=event->pos();
markE=QPoint(); //markE设置为QPoint对象
markE.setX(markB.x()+1);
markE.setY(markB.y()+1);
}
}
5 数据验证与分析
5.1 粒数计数准确率验证
为了评价软件的粒数计数准确率,本研究对其进行了验证分析,验证的谷粒数量分别为50、100和150粒,共设3个重复,最后基于下列公式计算准确率。
[准确率(%)=(1-误差数量实际谷粒数量)×100]
从验证结果上看(表1) ,本软件的粒数识别的准确率达到100%,说明本软件可以用于水稻谷粒计数分析。
5.2 谷粒长宽数据提取准确性检测
谷粒长度和宽度是重要的考种性状,为了评价软件对谷粒长宽数据提取的准确性,本研究从100粒稻谷中随机选择10粒分别进行人工和软件测量,重复3次,最后利用独立样本t检验和离散度对软件测量准确性进行评价。独立样本t检验和sp计算公式分别为:
[t=x1-x2sp1n1+1n2]
[sp=(n1-1)s12+(n2-1)s22n1+n2-2]
式中sp为汇总标准差(pooled standard deviation) ,x1为人工测量结果,x2为软件测量结果,n为样本量,s为样本标准差。
由于10粒长和10粒宽的人工与软件测量的t检验双尾P值远大于0.05(表2) ,说明本软件提取的数据与人工测量的结果为同一组数据的概率有95%。此外,本研究还发现软件测量结果的离散度小于人工测量的,说明软件测量的数据可靠性较高。上述分析结果表明,本软件可以替代人工进行水稻谷粒考种分析。
6 结束语
本研究基于OpenCV库设计出一款水稻谷粒考种软件,它利用灰度化、平滑化、阈值分割和开运算等方法对谷粒彩色图像进行分析,然后识别谷粒并获取相关考种数据,此外本软件还具备修正谷粒轮廓和数量的功能。通过对比软件和人工考种数据,发现软件获取的数据准确性和可靠性均较高,可以替代人工进行水稻谷粒考种分析。
参考文献:
[1] SCHAARSCHMIDT S,LAWAS L M F,GLAUBITZ U,et al.Season affects yield and metabolic profiles of rice (Oryza sativa) under high night temperature stress in the field[J].International Journal of Molecular Sciences,2020,21(9):3187.
[2] 邓若玲,潘威杰,王志琪,等.农作物表型技术及其智能装备研究进展与展望[J].现代农业装备,2021,42(1):2-9.
[3] 周洪垒.基于图像处理的水稻考种系统的设计与实现[D].成都:电子科技大学,2019.
[4] 杨万能.水稻产量相关性状参数自动提取的数字化技术研究[D].武汉:华中科技大学,2011.
[5] 姚远,孟金慧,李向阳.大豆植株分杈数自动提取算法研究[J].现代农业科技,2019(11):6-8.
[6] 邢航,黄旭楠,杨秀丽,等.水稻谷粒考种参数自动提取装置及试验[J/OL].[2023-05-10].华南农业大学学报,https://kns.cnki.net/kcms/detail//44.1110.S.20230105.1238.001.html.
[7] YANG W N,GUO Z L,HUANG C L,et al.Combining high-throughput phenotyping and genome-wide association studies to reveal natural genetic variation in rice[J].Nature Communications,2014,5(1):1-9.
[8] 于殿泓.圖像检测与处理技术[M].西安:西安电子科技大学出版社,2006.
[9] 章毓晋.图象工程-下册-图象理解与计算机视觉[M].北京:清华大学出版社,2000.
[10] 杨迪寒,王承启,于帅,等.基于OpenCV的路面裂缝检测装置[J].工业技术创新,2022,9(1):49-54.
[11] 刘小莉.基于图像处理的小麦籽粒自动计数研究[D].合肥:安徽农业大学,2022.
[12] 朱文伟,李建英.OpenCV 4.5计算机视觉开发实战:基于Python[M].北京:清华大学出版社,2022.
[13] 武红玉.阈值分割算法在图像处理中的应用[J].科技信息,2012(27):201-202.
[14] 叶小奇.基于机器视觉的LED划片机定位技术研究[D].长沙:湖南大学,2018.
[15] GONZALEZ R C,WOODS R E.数字图像处理[M].阮秋琦,阮宇智,译.4版.北京:电子工业出版社,2020.
【通联编辑:谢媛媛】