孫 翔,裴曉芳,周 望,朱 平
(1.南京信息工程大學(xué) 電子與信息工程學(xué)院,江蘇 南京 210044;2.南京信息工程大學(xué)濱江學(xué)院 電子與信息工程學(xué)院,江蘇 無錫 214105;3.南京信息工程大學(xué) 江蘇省大氣環(huán)境與裝備技術(shù)協(xié)同創(chuàng)新中心,江蘇 南京 210044;4.航天新氣象科技有限公司,江蘇 無錫 214127)
作物株高是指作物冠層的高度,是衡量作物生長(zhǎng)情況的重要指標(biāo),能直接反映出作物的生長(zhǎng)速度。目前測(cè)量作物株高的方式主要有3類:(1)人工測(cè)量。該方法耗時(shí)費(fèi)力且受測(cè)量人員的主觀影響較大;(2)圖像處理。通過對(duì)拍攝的作物的圖像進(jìn)行處理計(jì)算出株高;(3)通過激光雷達(dá)[1-3]、RGB-D相機(jī)[4-6]等獲取作物和地面的點(diǎn)云數(shù)據(jù),統(tǒng)計(jì)分析得出株高。
農(nóng)情觀測(cè)系統(tǒng)中需要采集大量圖片,而圖片可以反映大量的作物信息,圖像處理的方法在該系統(tǒng)中有廣泛的應(yīng)用。圖像處理在株高測(cè)量上分為雙目視覺和單目視覺兩種方法。雙目立體視覺法[7-10]不需要參照物,但對(duì)環(huán)境光照非常敏感,匹配算法復(fù)雜,計(jì)算量大,商用推廣難度較大,因此本文采用單目視覺的方法。單目視覺在測(cè)量長(zhǎng)度時(shí)需要一個(gè)參照物,本文引入了一個(gè)紅藍(lán)相間的定制標(biāo)尺,標(biāo)尺的每個(gè)色塊長(zhǎng)度均為0.1 m。將標(biāo)尺豎直放置于作物主莖稈后方,通過顏色識(shí)別出標(biāo)尺未被遮擋的部分,進(jìn)行濾波后通過連通域分析法計(jì)算出各個(gè)連通域的像素高度,最后按比例計(jì)算出作物的株高。該方案可應(yīng)用于農(nóng)作物自動(dòng)觀測(cè)或景觀植物監(jiān)測(cè)中,通過測(cè)量的株高信息反饋植物生產(chǎn)態(tài)勢(shì),指導(dǎo)人工干預(yù)實(shí)現(xiàn)增產(chǎn)增收的目標(biāo)。本方案設(shè)備簡(jiǎn)單、成本低,只需要一個(gè)定制標(biāo)尺和一架相機(jī)配合PC端進(jìn)行處理即可,適合大規(guī)模農(nóng)情觀測(cè)。由于作物在生長(zhǎng)過程中株高的變化較為緩慢,因此圖像采集的頻次可以根據(jù)需求適當(dāng)降低,能有效減小系統(tǒng)功耗。此外,圖像能反映出很多信息,采集的圖片可以配合病蟲害識(shí)別等算法進(jìn)一步提升應(yīng)用價(jià)值。
由于田間拍攝背景復(fù)雜,紅色和藍(lán)色相對(duì)易于區(qū)分,有利于圖像分割,故本文選用紅藍(lán)相間的定制標(biāo)尺。參考標(biāo)尺精確到分米級(jí),通過像素高度和實(shí)際高度的比例計(jì)算厘米級(jí)。
由于鏡頭的透視效應(yīng),拍攝的照片會(huì)出現(xiàn)近大遠(yuǎn)小的效果。為降低該影響,利用水平尺將標(biāo)尺豎直放置且保持相機(jī)水平拍攝。算法的關(guān)鍵是識(shí)別作物冠層頂部遮擋標(biāo)尺的位置,為保證圖片中該位置高度與作物實(shí)際株高近似相等,標(biāo)尺要放置在作物主莖稈后方,且標(biāo)尺和作物主莖稈之間距離盡量小。保持相機(jī)中心與標(biāo)尺中心對(duì)齊并能完整捕捉標(biāo)尺的圖像,調(diào)整相機(jī)位置至標(biāo)尺在圖像正中間位置。本文選用的標(biāo)尺是1.2 m,因而量程為0~1.2 m,相機(jī)位置過遠(yuǎn)會(huì)導(dǎo)致每個(gè)像素點(diǎn)對(duì)應(yīng)的實(shí)際高度變大,從而降低了精確度;相機(jī)位置過遠(yuǎn)會(huì)導(dǎo)致標(biāo)尺色塊丟失。因此,要使標(biāo)尺占圖像高度的2/3以上,但不能超出圖像。
本文算法的核心是通過顏色閾值分割出未被作物遮擋的標(biāo)尺并計(jì)算其在圖像中的像素高度。株高測(cè)量算法流程圖如圖1所示。第1步要分割標(biāo)尺色塊和復(fù)雜的背景,將圖像轉(zhuǎn)換到HSV顏色空間進(jìn)行閾值分割,保留符合標(biāo)尺顏色特征的像素點(diǎn)并將背景置黑,這樣就初步獲得了標(biāo)尺色塊。第2步要對(duì)標(biāo)尺色塊進(jìn)行優(yōu)化去噪,濾波過程采用中值濾波和去除最小連通域的方法,隨后進(jìn)行一次閉運(yùn)算防止色塊出現(xiàn)斷裂。第3步計(jì)算株高,采用連通域分析法計(jì)算未被遮擋的標(biāo)尺色塊的像素高度,通過標(biāo)記連通域獲取各個(gè)色塊的位置和大小信息,篩選出未被遮擋的所有標(biāo)尺色塊進(jìn)行計(jì)算。
圖1 株高測(cè)量算法流程圖
由于光線是直線傳播的,所以在圖像上反映出的株高會(huì)有一定的誤差ΔH。如圖2所示,標(biāo)尺和作物主莖稈之間距離為a,固定相機(jī)位置后測(cè)量相機(jī)到標(biāo)尺之間的距離為b,未被遮擋的色塊總個(gè)數(shù)為n,通過標(biāo)尺圖像計(jì)算出作物遮擋位置到標(biāo)尺中間位置的距離H,遮擋部位色塊的像素高度為n。由于作物遮擋位置高于標(biāo)尺中心點(diǎn)時(shí)計(jì)算出的株高偏高,此時(shí)H為負(fù)值,可得
圖2 誤差補(bǔ)償原理
H=0.1n-0.7+h0
(1)
通過三角形相似即可計(jì)算出ΔH。
(2)
由于標(biāo)尺圖像在完整圖像中只占中間的一小部分,所以在相機(jī)固定后,本文裁剪出圖像寬度的1/3,取中間部分進(jìn)行圖像處理。這樣做既能減少不必要的運(yùn)算,也能剔除部分無關(guān)因素的影響,在一定程度上提高了算法的工作效率和魯棒性。在MATLAB上可使用imcrop函數(shù)完成圖像裁剪。
相機(jī)采集的圖片為RGB格式,RGB顏色空間最大的優(yōu)點(diǎn)是直觀,但R、G、B3個(gè)分量高度相關(guān)難以分離。本文將圖片轉(zhuǎn)換到HSV(Hue,Saturation,Value)顏色空間中進(jìn)行顏色分割[11-13]。Hue分量(H)表示色相,取值范圍為0°~360°。Saturation分量(S)表示飽和度,即顏色接近光譜色的程度,可以理解為混入白色的量,當(dāng)Saturation分量為零時(shí),只有灰度。Value分量(V)表示明度,即顏色明亮的程度,可以理解為混入黑色的量。在HSV顏色空間中,Hue分量相對(duì)獨(dú)立,在顏色分割中易于實(shí)現(xiàn),在HSV顏色空間中進(jìn)行顏色分割可在一定程度上降低光照強(qiáng)度對(duì)分割效果的影響。Hue分量0°附近為紅色,240°附近為藍(lán)色。
RGB圖像轉(zhuǎn)HSV可表示為
(3)
在MATLAB上使用函數(shù)rgb2hsv將RGB圖像轉(zhuǎn)換到HSV顏色空間。
完成顏色空間轉(zhuǎn)換后進(jìn)行圖像分割,確定分割閾值,統(tǒng)計(jì)出HSV圖像中H分量的直方圖。將用來標(biāo)定的樣本圖片轉(zhuǎn)換到HSV顏色空間后所統(tǒng)計(jì)的H分量的直方圖如圖3所示。在MATLAB中,H、S、V3個(gè)分量都是歸一化的,取值范圍是(0,1)。對(duì)色相環(huán)(0°,360°)進(jìn)行歸一化,0°附近為紅色,240°附近為藍(lán)色,歸一化后H分量在0的附近和1的附近為紅色,在2/3附近為藍(lán)色。
圖3 H分量直方圖
對(duì)多張圖片的直方圖進(jìn)行對(duì)比,反復(fù)進(jìn)行分割實(shí)驗(yàn),觀察分割出的標(biāo)尺色塊的完整度及非標(biāo)尺色塊的數(shù)量,最終確定紅色分量閾值為(0,0.04)∪(0.96,1),藍(lán)色分量閾值為(0.5,0.75),此時(shí)分割效果最好。遍歷像素點(diǎn),保留目標(biāo)閾值范圍內(nèi)的圖像,將超出閾值范圍的像素點(diǎn)置為黑色,使得復(fù)雜的背景轉(zhuǎn)化為純凈的黑色背景。如圖4所示為標(biāo)尺紅色色塊的分割效果,圖中可見存在一定的噪聲。
圖4 標(biāo)尺色塊分割效果
在MATLAB上采用for循環(huán)遍歷各個(gè)像素點(diǎn)兩次,分別保留紅色和藍(lán)色像素點(diǎn),將其余像素點(diǎn)全部置黑,保存為兩個(gè)圖片分開處理。
接下來需要對(duì)圖像進(jìn)行二值化,本文選用Ostu算法進(jìn)行二值化操作。Ostu算法,即最大類間方差法,是利用閾值將圖像進(jìn)行二值化的高效算法。對(duì)于待處理圖像I(x,y),二值化分割閾值記為T,目標(biāo)和背景像素點(diǎn)數(shù)占圖像比例分別記為ω0和ω1,平均灰度記為τ0和τ1,類間方差記為D,圖像平均灰度記為τ,則有
(4)
閾值T為灰度值,取值范圍為(0,255)。遍歷閾值T,取類間方差D最大時(shí)T的值為分割閾值。
在MATLAB中用函數(shù)rgb2gray將分割出的圖像轉(zhuǎn)換成灰度圖像,函數(shù)graythresh即是利用Ostu算法求灰度圖像的分割閾值T,使用函數(shù)im2bw以T為分割閾值對(duì)圖像進(jìn)行二值化操作,得到標(biāo)尺色塊為白色的二值圖像。
由于閾值分割后的圖像中存在許多椒鹽噪聲,本文選用中值濾波進(jìn)行處理。中值濾波的基本原理是把數(shù)字圖像中一個(gè)點(diǎn)的像素值用該點(diǎn)鄰域中各點(diǎn)像素值的中值代替,是基于排序統(tǒng)計(jì)理論的非線性濾波。中值濾波消除椒鹽噪聲效果顯著,同時(shí)它能夠保護(hù)信號(hào)的邊緣,使之不被模糊。本文中體現(xiàn)標(biāo)尺色塊的長(zhǎng)和寬的邊緣信息是計(jì)算作物株高的關(guān)鍵,中值濾波正符合本文需求。
首先取一個(gè)3×3的模板,將該模板遍歷整個(gè)圖像,對(duì)模板中所有元素進(jìn)行排序,取中間值替換模板的中心位置。本文中對(duì)二值圖像進(jìn)行中值濾波,由于二值圖像中只有0和1,所以排序操作可以簡(jiǎn)化為統(tǒng)計(jì)1的個(gè)數(shù)i。在3×3模板中,如果i≥5則取1放入模板的中心位置,反之取0。如圖5所示為舉例對(duì)比灰度圖像和二值圖像的中值濾波。
(a) (b)
在MATLAB中可使用函數(shù)medfilt2(I,[3,3])對(duì)圖像I進(jìn)行中值濾波,其中[3,3]指濾波模板的大小為3×3。
本文采用標(biāo)記連通域的方式獲取標(biāo)尺色塊位置信息,為防止標(biāo)尺色塊因光線影響出現(xiàn)斷裂從而影響連通域標(biāo)記,本文對(duì)圖像進(jìn)行一次閉運(yùn)算。閉運(yùn)算是對(duì)二值圖像先膨脹再腐蝕,作用是填充物體內(nèi)的小空洞,連接鄰近的物體,平滑其邊界的同時(shí)不改變面積。因?yàn)楸疚闹袠?biāo)尺色塊的邊界是平滑的,所以平滑邊界的影響較小。
在MATLAB中使用函數(shù)bwmorph(BW,operation)對(duì)二值圖像BW進(jìn)行形態(tài)學(xué)處理。operation是一個(gè)字符串,用于指定進(jìn)行的形態(tài)學(xué)處理類型,閉運(yùn)算operation 為'close'。本文采用默認(rèn)結(jié)構(gòu)元對(duì)圖像進(jìn)行操作,實(shí)際應(yīng)用中可能出現(xiàn)未將斷裂的色塊連接起來的情況,此時(shí)可根據(jù)需要相應(yīng)地調(diào)整結(jié)構(gòu)元的大小,改用imclose函數(shù)進(jìn)行閉運(yùn)算。
連通區(qū)域分析是指將圖像中的各個(gè)連通區(qū)域找出并標(biāo)記[14-15]。彼此連通的像素點(diǎn)形成的一個(gè)區(qū)域即為連通域,標(biāo)記連通域是二值圖像分析的基礎(chǔ),通過對(duì)白色目標(biāo)像素的標(biāo)記,給每一個(gè)單獨(dú)的連通域打上不同的標(biāo)簽,進(jìn)而可以獲得每個(gè)連通域的輪廓、面積、外接矩形等參數(shù)。圖像中每個(gè)像素點(diǎn)周圍有8個(gè)相鄰的像素點(diǎn)。常見的鄰接關(guān)系有4鄰接和8鄰接。4鄰接為目標(biāo)像素點(diǎn)上、下、左、右4個(gè)相鄰的像素點(diǎn);8鄰接為目標(biāo)像素點(diǎn)周圍鄰接的所有像素點(diǎn)。如果像素點(diǎn)A與B鄰接,則稱A與B連通,連通域連通關(guān)系類似于等式。如果A與B連通,B與C連通,則A與C連通。
在二值圖像中,目標(biāo)標(biāo)尺色塊面積較大,經(jīng)過閉運(yùn)算后一些小的噪點(diǎn)會(huì)連成一些較小的連通域,進(jìn)行去除小連通域操作,剔除小連通域。
在MATLAB中使用函數(shù)bwareaopen(BW,P,conn)刪除二值圖像BW中面積小于P的對(duì)象。conn指的是連通域鄰接方式,默認(rèn)情況下使用8鄰域。連通區(qū)域標(biāo)記函數(shù)bwlabel中使用的算法是:一次遍歷圖像,并記下每一行(或列)中連續(xù)的團(tuán)(run)和標(biāo)記的等價(jià)對(duì),然后通過等價(jià)對(duì)對(duì)原來的圖像進(jìn)行重新標(biāo)記。返回一個(gè)和原圖像大小相同的矩陣,包含了標(biāo)記原圖像中每個(gè)連通區(qū)域的類別標(biāo)簽,這些標(biāo)簽的值為1,2,…,num(連通區(qū)域的個(gè)數(shù))。
首先逐行掃描圖像,把每一行連續(xù)的白色像素點(diǎn)組成的序列稱為一個(gè)團(tuán),并記錄下起始、結(jié)束位置和行號(hào),合并相鄰兩行有重疊區(qū)域的團(tuán)并提取等價(jià)對(duì)。舉例說明,如圖6所示為1個(gè)4行16列的二值圖像。
圖6 4行16列的二值圖像
第1行有兩個(gè)團(tuán),即[3,8]和[12,14],標(biāo)記為1和2。第2行有兩個(gè)團(tuán),即[5,9]和[14,16],與上一行的團(tuán)有重疊區(qū)間,所以沿用上一行的團(tuán)編號(hào)。第3行有一個(gè)團(tuán)[9,14],與上一行的兩個(gè)團(tuán)都有重疊區(qū)域,所以給他標(biāo)記為較小的團(tuán)編號(hào)1,然后將(1,2)寫入等價(jià)對(duì)。第4行有一個(gè)團(tuán)[1,5],與上一行的團(tuán)沒有重疊區(qū)域,單獨(dú)標(biāo)記為3。
將等價(jià)對(duì)裝換為等價(jià)序列,例如某二值圖像有12個(gè)團(tuán)編號(hào),等價(jià)對(duì)有(1,2),(1,3),(2,7),(7,5),(4,6),(6,9),(10,1),(11,9),(11,12)。將1~12都看做節(jié)點(diǎn)。第1條等價(jià)序列從1開始,有(1,2),(1,3)和(10,1),則1、2、3、10為等價(jià)序列,再從2開始,有(2,7),7又通向5,可知1、2、3、5、7、10為等價(jià)序列。同理可得第2條等價(jià)序列:4、6、9、11、12。查找完畢后,8未出現(xiàn)在等價(jià)對(duì)中,說明8區(qū)域沒有等價(jià)區(qū)域,所以8單獨(dú)形成1條等價(jià)序列。
得到等價(jià)序列后遍歷圖像重新標(biāo)記,將等價(jià)序列標(biāo)記為同一個(gè)團(tuán)編號(hào),并記錄下該團(tuán)在圖像中最左、最右、最上和最下端的像素點(diǎn)坐標(biāo),這樣就可以得到關(guān)于目標(biāo)標(biāo)尺連通域的坐標(biāo)數(shù)據(jù)。將這些坐標(biāo)數(shù)據(jù)作差即可輕松求得各個(gè)目標(biāo)連通域的像素寬度和高度。將這些數(shù)據(jù)存為一個(gè)5列的矩陣,每一行為一個(gè)連通域的數(shù)據(jù),第1列為連通域編號(hào),第2列為連通域的列最小值,第3列為連通域的行最小值,第4列為連通域的像素寬度,第5列為連通域的像素高度。
獲得連通域數(shù)據(jù)后需要篩選出未被作物遮擋的標(biāo)尺色塊,因?yàn)槠渲羞€混雜著少量非目標(biāo)色塊。方法如下:
(1)起始列位置濾波。由于標(biāo)尺色塊理論上是在一條豎直直線上的,反映在圖像中則是標(biāo)尺色塊的起始列相近,在允許誤差下設(shè)定閾值可以濾除位置偏差較大的非目標(biāo)色塊,該閾值X0可以通過設(shè)備架設(shè)后的標(biāo)定過程獲得。取矩陣的第2列與閾值X0對(duì)比,刪除距離第X0列較遠(yuǎn)的元素所在行;
(2)寬度濾波。在不移動(dòng)設(shè)備的前提下標(biāo)尺色塊的寬度相對(duì)固定,通過標(biāo)定結(jié)果設(shè)定一個(gè)寬度閾值ΔX濾除寬度過小或過大的非目標(biāo)色塊。原理同上,取矩陣的第4列與寬度閾值ΔX對(duì)比,刪除寬度過小或過大的元素所在行。
完成對(duì)圖像中的非目標(biāo)色塊的濾除后,要在各標(biāo)尺色塊中篩選出作物遮擋部位的色塊。由于該色塊有一部分被遮擋,色塊的像素高度必然比完整的色塊小。假設(shè)紅色和藍(lán)色色塊中像素高度最小的色塊為作物遮擋部位的色塊,并分析該假設(shè)可行性:(1)若該色塊不是作物遮擋部位的色塊,說明遮擋位置剛好在色塊分界處,所有色塊都是完整的,而后續(xù)處理會(huì)將該色塊誤認(rèn)為是作物遮擋部位的色塊,從而出現(xiàn)誤差,但該誤差根本來源在于前端采集和閾值分割部分,在允許范圍內(nèi);(2)若該色塊是作物遮擋部位的色塊,假設(shè)成立。
綜上,該假設(shè)對(duì)最終結(jié)果影響較小。根據(jù)目標(biāo)色塊像素高度對(duì)連通域數(shù)據(jù)進(jìn)行降序排序,即以矩陣第5列元素為關(guān)鍵元素對(duì)連通域數(shù)據(jù)進(jìn)行降序排序,在MATLAB中函數(shù)sortrows(A,column)表示對(duì)矩陣A按照第column列進(jìn)行排序,其中參數(shù)column為正值時(shí)為升序排序,column為負(fù)值時(shí)為降序排序。統(tǒng)計(jì)色塊的總個(gè)數(shù)n。再次遍歷圖像保留作物遮擋的色塊并將其他位置置黑,即將該色塊最小外包矩形以外的像素點(diǎn)置黑。由于目標(biāo)色塊已經(jīng)提取出來,為減少計(jì)算量可再次對(duì)圖像進(jìn)行裁剪,只保留有用的部分。處理結(jié)果如圖7所示。
圖7 作物遮擋部位色塊的提取
(5)
識(shí)別出對(duì)應(yīng)0.1 m的標(biāo)尺色塊可取的像素高度最大值為樣本Temp。有作物遮擋的色塊高度hs為
(6)
標(biāo)尺未被遮擋部分的總長(zhǎng)度Δh為
Δh=0.1(n-1)+hs
(7)
作物株高為High為
High=120-Δh+ΔH″
(8)
結(jié)合式(1)、式(2)、式(5)~式(8)即可計(jì)算出株高High。
前文中提到很多參數(shù)需要在設(shè)備架設(shè)后進(jìn)行標(biāo)定。操作時(shí),使標(biāo)尺豎直放置,保持?jǐn)z像機(jī)水平并與標(biāo)尺中心位置對(duì)齊,記錄下標(biāo)尺和作物主莖稈之間距離a以及相機(jī)到標(biāo)尺之間的距離b。此時(shí)拍攝4~5張圖片,運(yùn)行算法,通過HSV色彩空間3個(gè)分量的直方圖確定分割閾值。通過色塊數(shù)據(jù)矩陣第2列數(shù)據(jù)可以檢查標(biāo)尺在圖像中是否豎直放置,否則調(diào)整標(biāo)尺或相機(jī)角度。在沒有明顯傾斜的情況下,記錄此時(shí)色塊數(shù)據(jù)矩陣第2列數(shù)據(jù)列最小值的平均值X0以及色塊數(shù)據(jù)矩陣第4列數(shù)據(jù)色塊像素寬度的平均值ΔS,然后分別計(jì)算出色塊數(shù)據(jù)矩陣第4列和第5列數(shù)據(jù)的極差并記錄下較大的極差ΔS,取ΔS為識(shí)別允許的最大誤差。
圖形用戶界面(Graphical User Interface,GUI)是MATLAB的可視化操作功能,但在實(shí)際使用中MATLAB仿真不夠便捷。利用前端相機(jī)采集圖像,發(fā)送到PC端,利用GUI打開保存的圖像并計(jì)算作物株高。將數(shù)據(jù)可轉(zhuǎn)化為exe格式的可執(zhí)行文件,即可脫離MATLAB環(huán)境運(yùn)行,方便用戶使用[16-19]。
本文的測(cè)量對(duì)象為小葉黃楊和金葉女貞綠籬,均為某公司內(nèi)景觀植物,需要定期修剪整齊,本實(shí)驗(yàn)對(duì)其株高進(jìn)行測(cè)量可以指導(dǎo)修枝的時(shí)機(jī)。選用的標(biāo)尺的每段色塊都是0.1 m,一共有12個(gè)色塊,總長(zhǎng)1.2 m。將標(biāo)尺架設(shè)在灌木中,由于識(shí)別方法是通過顏色分割標(biāo)尺色塊,所以拍攝背景不可有大量紅色和藍(lán)色,天空藍(lán)色較淺對(duì)實(shí)驗(yàn)影響不大,相機(jī)采集的圖片大小為3 024×4 032。固定標(biāo)尺和相機(jī)位置,首先拍攝3~4張圖片完成參數(shù)標(biāo)定過程,隨后將標(biāo)定的參數(shù)設(shè)置在MATLAB算法中。圖像采集時(shí)間為2020年9月25日,天氣晴,分別在9∶00、14∶00和17∶00拍攝。選擇拍攝時(shí)間的原因是在9∶00和17∶00時(shí)光線較為柔和,在14∶00時(shí)光線較強(qiáng),可以對(duì)比得出光線強(qiáng)弱對(duì)本方案的影響。由于灌木生長(zhǎng)密集,相對(duì)容易測(cè)量,故可省略株高補(bǔ)償過程。對(duì)比數(shù)據(jù)采用人工測(cè)量的方法,人工測(cè)量采用卷尺直接測(cè)量,可精確到0.001 m,估讀1位。將標(biāo)尺架設(shè)在同一地點(diǎn),選擇3個(gè)不同相機(jī)位置拍攝,分別拍攝3個(gè)不同機(jī)位的圖片,實(shí)際拍攝距離為1.7~2.2 m。測(cè)得株高數(shù)據(jù)如表1所示。分別拍攝標(biāo)尺架設(shè)在不同灌木叢中的圖片,測(cè)得株高數(shù)據(jù)如表2所示。
表1 不同機(jī)位測(cè)得株高數(shù)據(jù)
表2 不同灌木叢測(cè)得株高數(shù)據(jù)
表1和表2測(cè)量結(jié)果表明在正常日光照射下測(cè)量結(jié)果不會(huì)出現(xiàn)太大偏差。表1為相同待測(cè)點(diǎn)不同拍攝位置測(cè)出的株高數(shù)據(jù),測(cè)量結(jié)果表明按標(biāo)定要求架設(shè)相機(jī)拍攝的圖片經(jīng)圖像處理測(cè)得的株高數(shù)據(jù)是可信的,不同相機(jī)位置并不會(huì)帶來顯著的偏差。表2是標(biāo)尺在不同待測(cè)灌木叢拍攝的圖片測(cè)出的株高數(shù)據(jù),由表1可知不同相機(jī)位置并不會(huì)帶來太大的偏差。表2用標(biāo)尺測(cè)不同灌木叢高度時(shí),即可近似認(rèn)為相機(jī)位置改變對(duì)結(jié)果無影響,此時(shí)人工測(cè)量結(jié)果表明該實(shí)驗(yàn)是可復(fù)制的,在不同待測(cè)點(diǎn)測(cè)得的數(shù)據(jù)誤差均可接受。農(nóng)業(yè)氣象試點(diǎn)站的《作物氣象自動(dòng)觀測(cè)站測(cè)試評(píng)估大綱》中對(duì)自動(dòng)觀測(cè)株高的標(biāo)準(zhǔn)如表3所示。
表3 作物冠層高度準(zhǔn)確性評(píng)估評(píng)分標(biāo)準(zhǔn)
實(shí)驗(yàn)測(cè)得的株高數(shù)據(jù)與人工測(cè)量的數(shù)據(jù)相比偏小,誤差在0.017 3 m以內(nèi),達(dá)到一級(jí)標(biāo)準(zhǔn)。由于標(biāo)尺的存在,本文算法的誤差在測(cè)量作物幼苗時(shí)期相對(duì)較大,但在測(cè)量較高的作物時(shí)表現(xiàn)較好。本文算法的誤差主要來自于以下3個(gè)方面:一是相機(jī)鏡頭的畸變,雖然使用水平儀使得拍攝角度帶來的透視效應(yīng)盡可能的小,但是相機(jī)鏡頭本身帶來的畸變無法調(diào)整;二是閾值分割時(shí)標(biāo)尺色塊邊緣缺失,標(biāo)尺色塊的邊緣信息是丈量色塊長(zhǎng)和寬的關(guān)鍵,在復(fù)雜的田間環(huán)境中對(duì)色塊進(jìn)行閾值分割時(shí)會(huì)出現(xiàn)邊緣缺失,此時(shí)對(duì)測(cè)量結(jié)果影響較明顯;三是在人工測(cè)量時(shí),作物冠層參差不齊,讀數(shù)時(shí)讀取最高葉片頂部的高度,而在圖像處理過程中是以作物遮擋色塊的底部邊界的平均高度作為株高,所以測(cè)得的數(shù)據(jù)與人工測(cè)量的數(shù)據(jù)相比偏小。
本文提出了一種圖像處理配合標(biāo)尺測(cè)量作物株高的方法。通過對(duì)田間架設(shè)的定制標(biāo)尺的照片進(jìn)行顏色識(shí)別提取出標(biāo)尺色塊,將圖像二值化以后進(jìn)行一系列濾波將非目標(biāo)色塊濾除,采用連通域分析法計(jì)算出圖像中未被遮擋的標(biāo)尺的像素高度,最后通過比例關(guān)系計(jì)算株高。經(jīng)實(shí)驗(yàn)數(shù)據(jù)驗(yàn)證該方案測(cè)得的株高相對(duì)人工測(cè)量株高的誤差小于0.017 3 m,可實(shí)現(xiàn)測(cè)量株高的要求。該方法采用MATLAB編寫GUI進(jìn)行圖像處理,并轉(zhuǎn)化為exe格式的可執(zhí)行文件脫離MATLAB環(huán)境運(yùn)行,方便用戶使用。為減小測(cè)量誤差,可以針對(duì)誤差來源對(duì)算法進(jìn)行改進(jìn),例如引入相機(jī)畸變矯正算法解決相機(jī)鏡頭自身帶來的畸變問題。
本文的方案也有地方需要改進(jìn),在作物生長(zhǎng)初期或作物相對(duì)稀疏時(shí),標(biāo)尺、作物與相機(jī)三者之間的相對(duì)位置對(duì)測(cè)量影響較大,目前解決辦法是標(biāo)尺要放置在作物主莖稈后方并盡量靠近作物主莖稈。雖然本方案對(duì)設(shè)備架設(shè)和標(biāo)定過程要求較高,但本方案設(shè)備簡(jiǎn)單,只需要一套圖像采集系統(tǒng)和一個(gè)定制標(biāo)尺,節(jié)約了設(shè)備成本。此外,圖像采集系統(tǒng)還可以配合其他農(nóng)情觀測(cè)系統(tǒng)使用,例如作物病蟲害觀測(cè)等。本方案后期投入少,標(biāo)尺和相機(jī)架設(shè)完成后只需定期采集圖片即可,節(jié)約了勞動(dòng)力成本。