-
随着牧业科学技术的飞速发展,牧业已进入了一个以高产、优质、高效、生态、安全为发展方向的新阶段,牧业对气象服务提出了更高的要求.现代牧业的发展迫切需要时效更快、内容更多、水平更高、针对性更强的牧业气象服务产品,牧草观测技术作为牧业气象分支之一,获取高精度、高密度、多要素、连续稳定的牧草观测信息势在必行.
国内外学者对农业气象自动化观测进行了较深入的研究,但大都集中在农田杂草识别、病虫害控制等方面,主要实现了对小麦、玉米、水稻、棉花等农作物的关键发育期、盖度、密度、高度等参数的自动化监测[1-4].例如2003年李长缨等[5]利用单目视觉技术得到单株黄瓜幼苗叶冠投影面积和株高,与人工测量结果的相关关系达到0.927;2007年刘洪见等[6]利用图像处理技术提取玉米植株的株型骨架,计算出株高、叶长、茎叶角等玉米株形特征;随后齐华山[7]在实验室环境下采用线性标定法,通过图像处理技术完成了单株玉米植株的株高、叶片长度的机器测量.
而对草原地区的牧草的自动化观测研究较少,当前的牧草观测技术、手段、时效、内容以及观测站点密度等远不能满足现代牧业气象业务和服务发展的要求,牧草观测自动化程度低.目前牧草观测仍以人工方式为主,劳动强度大,费时费力,主观性较大,牧草观测精度有限,可比性不强.由于观测人员的专业素质、熟练程度、观测习惯和责任心等不同,造成观测精度差别较大[8],而且无法在牧草的整个生长过程中实现连续监测.尽管当前出现了一些牧草高度自动检测方法[9-10],但这些方法对牧草图像分割时多采用形状特征,轮廓提取是特征参数计算的关键,但提取完整且光滑的轮廓可借鉴的成果不多,对作为实验对象的牧草株型有较高要求,导致这些方法只能对某一种或某几种牧草使用,适用性不强.现有牧草高度自动检测方法一般仅能测量单株牧草的高度(即株高),不能测量观测范围内牧草的整体高度(即层高),而且这些方法在测量牧草高度时需要接触牧草,或需要在观测现场放置标定物,对牧草生长有损坏.针对以上问题,本文提出了一种利用自然条件下牧草颜色恒定性的特征对牧草进行分割,然后采用灰度积分投影得到牧草高度,最后利用相机标定的结果将其转换成实际的高度值的方法.通过这种方法,能有效地对牧草层高进行无损、远程、连续定量测量,从而满足牧草长势自动化监测的要求.
全文HTML
-
首先将相机安装在地面上对包含有牧草的图像进行采集.要求相机光轴与地面基本平行,并略向上,使相机采集的图片能拍摄到天空背景,如图 1所示.为了克服相机的水平高度不同所带来的误差,要求各个测量点相机安装的高度要一致,并尽量靠近地面.
然后利用自然条件下牧草具有绿色“衡量”(Gvalue>Rvalue且Gvalue>Bvalue)的特征对采集的牧草图像进行牧草分割,标记牧草区域进行二值化处理,并对二值化图像进行水平方向的积分投影,所得到的投影图像中可能混杂着非绿草的干扰以及不连通的绿草,因此需要进行滤波.接着计算牧草所在的水平位置,标记牧草高度线,并计算以像素为单位的平均层高.最后利用相机标定的结果将其转换成实际的牧草高度值,算法流程如图 2所示.
-
对于物体呈现的颜色,一般认为: 物体的颜色是不同波长的光反射到人眼视网膜上在大脑中所形成的色觉“映像”.不同物体的表面所呈现的颜色取决于光源、物体表面的反射、光照方向、视角方向以及传感器参数等因素的线性组合[11].
对具体牧草而言,其表面反射特性可视为恒定,摄像头内外参数因为可控,所以牧草的颜色主要由光源和物体表面反射的光照特性决定.若光照又可控,则由牧草表面反射特性推知,牧草识别的颜色特征为“恒定”[12].但在户外环境下,牧草颜色还受到环境光的影响(如大气等),以及牧草光照还存在折射、透射和衍射现象,因此,光照变化呈现不确定性.牧草为非透明体,其颜色主要由光照反射条件决定.光源的影响主要表现为牧场太阳照射角度的变化,如果不是正午光线直照射到牧草上,光照对牧草颜色识别的影响在一定程度上可以控制,如在镜头上附加滤波片滤掉某种光波,或者针对识别对象选择合适的颜色空间作特征提取等.由此可确定,牧草颜色的“恒定性”是存在的,因而可从采集到的彩色图像中分割出牧草.
牧草多为绿色,与土壤及天空背景存在着很大的颜色差异,因此我们可以根据前面的牧草颜色恒定性分析,使用颜色特征来进行分割[13].在RGB颜色空间中,相同或相似颜色的信息通常会集中分布在一个部位.例如物体呈现绿色的像素值域在以G(Green)点为顶点的仿三棱锥(锥的底面可能是曲面)体中(图 3)[14-15],顶点G(0,255,0)为纯绿色,依据颜色渐变原理,可以推断G点以下空间内的点可能为浅绿、灰绿等.由此可知,对于像牧草这样的绿色植物来说,其主要的颜色分量为绿色分量G,植物的G分量高于R和B分量,也高于背景中的G分量,即在绿色物体表面的像素值域内存在如(1)式所示的关系:
式中,rvalue,gvalue,bvalue分别为R,G,B的灰度值.
根据以上分析,可以由相机采集的图像中的像素是否具备某些特征,从而直接在RGB空间上转换成二值化图像,分割出牧草与非牧草区域,这些特征由用户根据以下4个参数来定义[16]:
① 在RGB空间的主导成分(dominant RGB component)
② 在RGB空间的受控成分(dominated RGB component)
③ 最小亮度(minimum intensity (shadow))
④ 最大亮度(maximum intensity (light))
这些特征应既考虑牧草的色度信息又考虑牧草的光照信息,因此牧草分割算法需设置两个亮度门限值Lshadow和Llight,这两个门限值能够将太暗(Lshadow)或太亮(Llight)的像素滤除掉,从而克服亮度变化(光照、阴影等因素)的影响.对于像牧草这样的绿色植物来说,上述条件中①与②应分别对应G(green)通道和B(Blue)通道,由此可采用如下方式检测:
其中,Llight典型值取200,Lshadow典型值取50.若环境光线太暗,则Lshadow的取值应相应降低,例如取10;若环境光线太亮,则Llight的取值相应升高,例如取250.通过上面方法,将牧草区域用黑色(0)表示,非牧草区域用白色(255)表示,从而分割出牧草区域与非牧草区域,如图 4所示.从图 4还可以看到,通过颜色特征提取到的绿草里面可能混杂着非绿草的干扰以及不连通的绿草.
-
灰度积分投影法是一种常见的图像处理方法,它根据灰度图像在特定方向上的投影分布特征进行检测,通常情况下分为水平积分投影和垂直积分投影,定义如下:
设I(x,y)为图像在(x,y)处的灰度值,n表示某一行所有的像素点,m表示某一列所有的像素点,则图像的水平积分投影sh(y)和垂直积分投影sv(x)分别为
根据式(3)可知,水平垂直积分投影是将某一行某一列所有像素的灰度值进行累加之后的和值.
考虑到野外广阔的天然牧场周围很少有建筑物、树木等的遮挡,且背景较为单一,本文中对牧草高度的测量采用了水平灰度积分投影的方法.对图 4以左上角为原点逐行统计出图中每一行绿色像素点(即图 4中像素值为0的像素点)的数量.然后绘制出每行绿色像素点数量的变化曲线,如图 5所示.图 5中横坐标是行号,纵坐标是该行的绿色像素的点数,通过该绿色像素点数量的变化曲线可获得最高一层的高度信息.
由于通过颜色特征提取到的绿草像素点可能存在非绿草的干扰以及不连通的绿草区域,如图 5第150行处,因此需要对二值化图像进行滤波.方法是: 将从最上面的第1行(即天空)到牧草的最高点(即图 5中第252行)的所有像素点全部置为255,通过这种方法可以将非绿草的干扰滤除,滤波后的图像如图 6所示.
-
以图 6左上角为原点,记录图像中每一列里像素值为0(即牧草)的像素点的最高的行号,并用红色实线标记,这样可获得每一列牧草的高度信息h(i),如图 7所示的红色曲线.i为图像的列号,i=1~W,W为图像的宽度.
图 7中最下面一行到红色标记的行的长度即为这一列牧草的高度,按照(4)式可求出所有列的平均高度.
上式中have为牧草的平均高度,即牧草的层高;H为图像的高度,W为图像的宽度;
$ \sum\limits_{i = 1}^W {h\left( i \right)} $ 为所有列的牧草高度之和.当然,牧草长得可能没有这么密集,可能某些地方出现间断,因此此时图像中不是所有列均有牧草像素,此时若直接采用图像的宽度做为分母来获取牧草的层高显然会使其值偏大,为了解决这个问题,可以在程序中设置一个阀值,当该列的绿色像素的个数少于该阀值时我们认为该列不应参与层高的运算.
-
通过以上方法得到的牧草层高的单位是像素数,其实际高度需要相机标定后通过标定后的空间关系按照(5)式得到:
(5) 式中hc为牧草的实际层高;have为以像素数为单位的牧草的平均高度,由(4)式得到;hp是CCD传感器中每个像素的高度,由相机的CCD参数决定,为一常数值;kscale为像高转物高的转换系数,通过对相机进行标定可以得到.
2.1. 基于颜色恒定性的牧草分割
2.2. 利用灰度积分投影测量牧草的水平位置
2.3. 牧草高度标记与层高计算
2.4. 相机标定与层高换算
-
采用200万像素智能工业相机SuperHD-S200对锡林郭勒盟东部典型草原区试验场进行间隔时间为720 s的图像采集,并在前端通过TI的TMS320DM642运行本算法,将处理后的结果再通过网络传向客户端.采用Matlab R2013b提供的工具软件CameraCalibrator和棋盘标定板对相机进行标定,采用SPSS 25.0进行数据统计分析.CCD图像传感器采用ICX274AK,分辨率为1600×1200,每个像素的高度为4.4 um.
通过本算法测量的结果与实地人工用尺子测量结果进行比较以验证本算法的准确度.随机抽取12组植株进行检验,结果如表 1所示,牧草层高测量平均相对误差为2.9%,最小误差为零,最大误差不超过8%.
使用皮尔森相关系数(Pearson correlation coefficient)将本算法测量的结果与统计观测区域内的生物量(bio-mass)进行相关性分析,以此验证本算法的精度[16].在相机图像采集相同的地点与相同的时间,采用齐地刈割法,每次随机取100个单株,测量生长季内牧草个体的地上生物量干质量,地上生物量干质量用称质量法和烘干法来测定(65℃下48h烘干至恒质量,称取干物质质量)[17].在SPSS中设置显著性检验为双侧检验,置信区间设置为水平95%,然后进行皮尔森相关性分析,结果如表 2所示.结果表明本算法与地上生物量的皮尔森相关系数为0.843,说明两者具有强的相关性.
通过实验分析可知,测量精准度基本能满足牧草长势自动化监测的要求,而且由于人工观测采用场区采样,样点差异性误差不可避免,而自动观测采用的是固定样动态监测,消除了样点差异性误差,从而能更好地建立牧草生长发育与气象因子的相关指标.
-
1) 本文提出的牧草分割算法具有很好的通用性,只需根据要检测的特定目标调整相应的主导成分、受控成分、最小亮度和最大亮度,即可检测出黄色、紫色、红色等各种植被目标,适用性较强.
2) 牧草高度测量算法基于图像颜色特征采用统计方法得到,无需在牧场专门安装标定物、划定测试区域.由于相机在安装之后相机到目标的空间关系(相机的放置位置)一般不会再改变,因此只需要在开始时用标定板标定一次,此后不用再标定,而且标定板也不需要一直放在观测区域,本算法对牧草生长的损坏较小.
3) 牧草高度测量算法测量的是牧草离地的相对高度,即使牧草生长在山坡等非平面地面上,只要保证相机光轴与地面基本平行,在草场的不同位置上所计算的牧草高度基本还是一致的.
4) 牧草高度测量算法能得到牧草层高,而目前其他算法只能得到牧草株高,这对分析草原牧草的生长状况与趋势更具有实用意义.
5) 由于牧草在自然环境下,背景复杂,而观测点与台站一般距离较远,图像传输压力大,工控机或台式机在体积、功耗、工作环境及稳定性方面也不适于在野外工作.实验表明本文提出的算法操作简单、运算量小、实时性较好,仅采用1台200万像素网络相机在前端进行图像采集,图像采集后直接在前端进行牧草分割、高度计算,并通过网络直接将处理好的结果及牧草高度值传给远端用户,可实现牧草高度的实时、无损、远程、连续测量.
本文提出的方法通过单目成像即可得到符合实际应用需求的测量数据,并且可以推广到牧草以外的植株高度监测,为植物生长建模提供依据,具有较好的应用前景.本文的局限性在于由于相机没有严格水平放置,因此计算得到的层高与株高容易产生较大误差.同时,若牧草离相机太近则很可能因牧草充满整个图片而导致算法失败,算法还有待改进.