張真維,趙鵬, 韓金城
(東北林業大學信息與計算機工程學院,哈爾濱 150040)
隨著現代科學技術的迅速發展,林業管理工作效率需要不斷提高,精準林業成為林業領域的發展趨勢。樹木參數是林業調查的重要指標,其中樹高是森林調查的重要指標,對于樹木生長具有一定參考價值[1-2]。機器視覺可代替人眼對物體進行檢測和識別,較為常見的是利用單目攝像頭[3-4]。若要獲取物體的深度信息,僅憑單目攝像頭是不完善的,通常情況下需選擇雙目攝像頭來獲取物體三維信息。目前,智能手機后置鏡頭數大多不少于2個,已達到雙目視覺測量的物理環境,未來將雙目視覺技術應用在智能手機上可以達到成本低、操作便捷的效果。同樣的,可以將雙目視覺技術應用在無人機上,實現對地勢復雜、不易拍攝的樹木進行樹高測量。此外,雙目視覺技術對傾斜樹木的樹高測量具有一定價值和意義。
目前,大多采用傳統的望遠測樹儀來測量樹木高度[5]。邱梓軒等[6]利用PDA模塊、遠程EDM模塊、長焦CCD鏡頭模塊和云臺組成望遠測樹儀測量立木高度。有研究人員選擇手持智能手機通過內置傳感器獲取參數,從而計算測得立木高度信息[7-8]。李亞東等[9]以Android智能手機作為測量設備,調用Android中API接口中的三角函數對立木高度進行測量。也有研究人員采用激光雷達點云數據對樹高信息進行提取[10]。劉金鵬等[11]基于Skel Tre算法對帶有噪聲的TLS(terrestrial laser scanning)數據生成骨架模型和圖深度優先搜索算法提取單木信息。Maas等[12]對真實世界的植被進行了主動激光掃描,并提出了一種魯棒地重建樹木骨骼結構的自動方法。Wu等[13]提出了一種新的基于體素的標記鄰域搜索方法,用于從移動激光掃描(mobile laser scanning,MLS)點云數據中有效地識別行道樹并獲取其立木形態參數。Chen等[14]針對測量輸電線路走廊中的樹障,提出了一種雙目視覺測距方法,用于測量輸電線路與樹木之間的距離。倪超等[15]采用了NCC(normalized cross correlation)立體匹配算法對苗木圖像進行匹配,提取形態學參數。Ni等[16]用雙目視覺的方法對樹冠進行三維重建。因此,選擇一種具有良好準確率以及魯棒性,并且較為經濟的測量樹木高度的方法可以滿足精準林業的需求。
筆者采用基于雙目立體視覺原理的樹木高度測量方法,對相機前方樹木提取深度信息,獲取樹木關鍵點的空間三維坐標,從而計算樹木高度;隨機選取行道樹進行試驗研究,并驗證該方法的合理性、有效性。
雙目立體視覺原理是根據在同一時間內拍下的雙目圖片所產生的視差,并對兩張圖片中的信息進行三維重建。雙目立體視覺理論中最重要的是獲取物體在圖像中的深度信息。將雙目立體視覺系統應用在樹木高度測量中,獲取樹木關鍵點的空間坐標,即可通過算法計算樹高結果。
雙目立體視覺的實現模型流程為:雙目圖像采集;攝像機標定;圖像校正;特征點立體匹配;樹高測量。雙目立體視覺架構如圖1所示。

圖1 雙目立體視覺架構Fig. 1 Binocular stereo vision architect
雙目立體視覺利用雙目圖片的視差而獲取深度信息,其測量原理如圖2所示。

圖2 視差測距原理Fig. 2 Parallax distance schematic
圖2中,左、右目相機位置分別對應B、E兩點;P點為實際待測點;CC′為P點在雙目圖像中的成像點距離(d);兩個相機之間的固定距離BE為基線距離(m);GE為雙目相機的焦距(f);P點的深度為D。因此,只要確定C、C′的位置,就可根據三角關系確定D。由圖2可知:
(1)
選取型號為GP200(每個小方格邊長15 mm)和GP400(每個小方格邊長30 mm),黑白格子數為12×9的張正友單面棋盤格標定板(圖3a)。選取雙目相機作為圖像采集設備,相機為武漢萊娜機器視覺科技有限公司生產的高幀率可變基線USB3.0雙目相機(圖3b)。

圖3 試驗設備Fig. 3 Experimental facilities
相機的標定基于MATLAB平臺,共拍攝了13組標定板圖片,將13組雙目圖片分別拆分為左目和右目圖片,并按規律命名。通過標定工具箱對兩個.mat 文件進行雙目標定,運行工具箱中的“Load left and right calibration files”功能加載兩個校準文件;運行“Run stereo calibration”功能來優化左右相機的內在參數,即完成雙目標定。左、右目鏡頭標定再投影誤差均以彩色編碼的十字形顯示,如圖4所示。

圖4 再投影誤差分布 Fig. 4 Distribution of reprojection error
試驗中,圖片里標定板以世界為中心的相機有效視場見圖5,可以顯示標定過程中標定板的13種姿態和空間位置等信息。

圖5 相機的有效視場Fig. 5 The effective field of view of the camera
立體匹配是雙目視覺系統中的核心部分,可確定多幅圖像之間投影點間的一一對應關系,有效的立體匹配可以使關鍵點更加容易被提取。
SGBM算法[17-18]的整個過程如圖6所示。

圖6 SGBM算法流程Fig. 6 SGBM algorithm flow
1)采用水平Sobel算子提取圖像中的邊緣,獲取圖像的梯度信息,保存起來的預處理圖像將會進行代價計算。Sobel算子公式為:
Sobel(x,y)=2[P(x+1,y)-P(x-1,y)]+P(x+1,y-1)-P(x-1,y-1)+P(x+1,y+1)-
P(x-1,y+1)
(2)
2)代價計算。對左目圖像和右目圖像同時有兩種處理方式:對輸入圖像經過SobelX水平算子處理后計算BT代價[19];對輸入圖像直接進行BT代價計算。前者可以更好地保留圖像邊緣和細節信息,后者將會更好地保留原圖信息。
3)塊計算。塊計算的方法是根據選定像素點周圍8個鄰接像素的代價之和進行塊匹配,在相對應的右目圖片中,逐一對像素點周圍8個代價值之和進行計算,當計算周圍8個像素點的絕對值之和相差最小時,即認為匹配成功。
4)SGM算法。可達到多路徑約束聚合的目的,使當前像素點受到周圍多個方向路徑的約束。為了優化更新像素點的代價,采用聚合公式來解決這些問題:
E(D)=∑p{C(p,Dp)+
∑q∈NpP1T[(|Dp-Dq|=1)]+
∑q∈NpP2T(|Dp-Dq|>1)}
(3)
式中:E(D)為構建的能量函數;p、q為圖中的像素點;Np為像素點p周圍8個相鄰像素點的集合。式(3)中的第一項表示像素點p視差為Dp時的匹配代價;第2項表示當視差差值為1個像素時,將增加1個懲罰系數P1;Dq為視差,Dp-Dq表示視差差值;第3項表示當視差差值大于1個像素時,將增加1個懲罰系數P2。通常P2>P1,P1是為了適應傾斜或彎曲的表面,P2則是為了保留不連續性。
單一方向上,整張圖片的像素通過動態規劃公式參與:
Lr(p,d)=C(p,d)+min[Lr(p-r,d),Lr(p-r,d-1)+P1,Lr(p-r,d+1)+P1,miniLr(p-r,i)+
P2]-minkLr(p-r,k)
(4)
式中:C(p,d)表示當前代價;第2項中4個式子分別表示像素p在某方向上的像素在視差值為d時的代價、視差值為d-1時的代價加上P1、視差值為d+1時的代價加上P1、視差值在非d-1和d+1時的代價最小值加上P2;最后一項可起到防止聚合結果過大的作用。
共有16個約束方向,則把16個方向的值加和完成聚合過程,即完成了SGM的代價優化。
5)視差計算和視差后處理。進行后處理操作的目的是處理視差圖在前面步驟中可能造成的視差誤差、圖像魯棒性較差、圖像不連貫等問題。
BM算法對8位的灰度圖像進行處理時運行時間較短,可生成灰度視差圖像,圖像越亮代表距離越近。在用BM算法進行立體匹配時,模式串(用于匹配原灰度圖像文本串的灰度模板)的移動方向為從左到右,但模式串與文本串進行比較時的方向為從右到左。匹配過程中引入壞字符算法和好后綴算法,當匹配過程中存在不匹配的情況時,采用這2種算法進行處理,直到完成匹配[20-21]。
通過深度學習的方法可以對樹木進行目標檢測與識別。林朝劍等[22]利用遷移學習實現林業業務圖像識別;劉嘉政等[23]使用改進的CNN模型對樹種圖像進行識別。雙目視覺可以良好地獲取樹木的深度信息。將深度學習技術與雙目視覺技術進行結合,使用雙目相機作為圖像采集設備,既可以實現樹種的識別及檢測,又可以對樹高、樹距等空間深度信息進行計算。在同一時間內實現了二維和三維空間中樹木信息的提取,在林業工程的實際工作中具有較好的價值與意義。采用Yolo v4算法,基于Pytorch框架,對樟子松和云杉2種樹木在雙目相機所拍攝的圖像上進行目標檢測和識別。選取139張樟子松圖片以及278張云杉圖片作為數據集,使用Labelme工具制作標簽后進行深度學習訓練。目標檢測與識別在雙目圖像中的檢測結果見圖7。

圖7 雙目圖像中的目標檢測與識別Fig. 7 Target detection and recognition in binocular images
在雙目視覺技術的基礎上,提高測量精度(即深度距離)較為關鍵。
1)算法角度:在圖2中,設基線距離與焦距恒定,視差為d,視差偏差為Δd,深度距離偏差為ΔD,由式(5)可得,視差偏差越小,則深度距離偏差越小。
(5)
2)硬件角度:設Δd恒定,由式(6)可得,基線距離與焦距更大時,深度距離偏差越小。
(6)
3)像素角度:像素越小、物理尺寸恒定時,參與的像素越多,深度距離偏差越小。
4)深度范圍角度:深度范圍對精度有影響,設基線距離、焦距、視差偏差均恒定,由式(7)可得,測量目標越近,深度偏差越小。
(7)
綜上所述,提高測量精度的方法有:選取高精度視差估計算法;在合適的場景下,適當增加雙目相機基線距離并酌情采用焦距大的鏡頭;選取像素尺寸小的高分辨率相機;在合適的情況下,拉近拍攝距離。
在提高測量精度方面,針對算法角度,選取SGBM算法,在SGBM算法后處理的過程中進行置信度檢測、亞像素插值、左右一致性檢測的步驟,達到了消除錯誤視差以及優化視差圖像的效果,從而提高了視差的準確性,即提高了測量精度。針對硬件角度,選用了高幀率可變基線USB3.0雙目相機,以及一對4 mm和一對12 mm的鏡頭,在合適的場景下進行拍攝試驗。針對像素角度,選用了分辨率為1 280×720的雙目相機,提高在相同物理尺寸下的像素數量。針對深度范圍角度,在拍攝樹木圖像時,在圖像成像合適的情況下拉近拍攝距離。
在測樹學中,樹高是指樹干的根頸處至主干稍頂的長度[24],是表示樹木高矮的調查因子。
樹高示意圖如圖8所示,P點為樹梢頂端點,Q點為地面上根莖與地面的接觸點,P和Q的距離L即為樹高。若要計算出樹木高度L,可將樹木置于一個空間直角坐標系下,通過P、Q兩點的空間坐標計算L。在雙目立體視覺標定過程中已建立了以雙目相機左鏡頭的中心作為原點空間坐標系,此時,在經過SGBM、BM算法之后,獲得的視差深度圖可以較好地獲取樹木關鍵點的深度信息。設P點坐標為(X,Y,Z),Q點坐標為(A,B,C),則:

圖8 樹高示意圖Fig. 8 Tree height diagram
(8)
隨機選擇行道樹作為數據進行樹木高度測量試驗, 通過MATLAB分別對雙目相機左右目鏡頭進行標定并分別獲取.mat文件,同時將2個.mat文件作為參數進行雙目標定。雙目標定后的參數提取結果見表1。

表1 雙目標定結果Table 1 Binocular calibration results
圖像校正的目的是為了使雙目相機2個鏡頭的光軸處于平行狀態,同時可以檢驗雙目標定結果是否準確,從而達到像素點在左右目圖像上高度一致的效果。即只有當雙目標定結果準確時,左右圖像才會處于像素點一致的狀態。圖像校正的方法:獲取雙目標定結果參數;通過Remap函數實現圖像校正。圖像校正成功后便可進行圖像的立體匹配,深度計算以及生成深度圖像。試驗圖像校正結果見圖9,點云深度圖圖像見圖10。圖9中,2個左圖像為雙目相機左鏡頭拍攝圖片,2個右圖像為右鏡頭拍攝圖片。圖9a、b、c為針葉、有葉樹冠形態樹(云杉),對應圖10a;圖9d、e、f為闊葉、無葉樹冠形態樹(杏樹),對應圖10b。由此可知在樹木圖像校正時,校正結果準確,樹木類型(針葉和闊葉)和樹冠形態(有葉和無葉)對校正結果無較大影響。

圖9 待測樹木圖像校正后的圖像Fig. 9 The corrected images of trees to be measured

圖10 點云深度圖圖像Fig. 10 Point cloud depth image
獲取樹木有效特征參數較重要[25-27]。立體匹配雙目圖像最重要的作用是獲取樹木關鍵點的深度信息,將圖像校正后的2張圖像通過SGBM算法與BM算法獲得樹木的視差深度圖。在這個過程中,SGBM算法經過預處理、代價計算、塊計算、SGM處理、視差計算和視差后處理,得到彩色視差深度圖像;BM算法經過模式串與文本串進行匹配,并通過2種規則進行處理,得到灰度視差深度圖像。圖10顯示了云杉、杏樹、榆樹、樟子松經立體匹配后得到的深度圖像:圖10a、b、c的拍攝距離分別約為25,42和6 m;圖10d為多棵樹木圖像。結果顯示,在近距離及中距離拍攝時,SGBM算法得到的深度圖像表面平滑,輪廓較分明,結果較好,而BM算法輪廓分明,但樹的表面有部分失真。在遠距離拍攝時,BM算法得到的深度圖像輪廓分明,效果良好,但SGBM算法出現失真,如圖10b所示。
SGBM算法和BM算法試驗測得的樹高結果分別見表2和3。以雙目相機左鏡頭為原點建立空間直角坐標系,P點(樹木最高點)的選擇方式為樹木輪廓Y軸值最大的點,Q點的選擇采取多點取平均值的方式確定,由于存在著很多樹根和地面的接觸點,采取視野范圍內樹根左邊與地面接觸點與樹根右邊與地面接觸點的三維空間坐標,并取平均值作為Q點。P、Q兩點的坐標如表2和3所示。樹木實際高度采用全站儀10次測量的平均結果得到。由表2和3可知,通過獲取樹木關鍵點的空間坐標計算樹木高度的方法具有一定的可行性,誤差相對較小,與實際數據具有較強的相關性。

表2 SGBM算法試驗樹高結果Table 2 SGBM experiment tree height results

表3 BM算法試驗樹高結果Table 3 BM experiment tree height results
當拍攝過程中出現樹木重疊的情況時,可以通過視差圖的明亮程度來判斷最高點的位置屬于哪棵樹,出現此類情形時的深度圖見圖11。圖11a為原始圖像,紅色方框區域為此次拍攝樹木所遮擋的2棵其他樹的樹尖,這2個樹尖在圖像中高于待測樹木高度,對待測樹木最高點的判斷產生了影響;圖11b和c為SGBM算法和BM算法所生成的深度圖,紅色方框內的部分為重疊樹木樹尖的位置。因此,當樹木重疊時,越靠近相機的樹木顏色越明亮,以此可以解決樹木重疊覆蓋時其他樹木對待測樹木最高點判斷的影響。

圖11 樹木重疊時的深度圖Fig. 11 Depth map of overlapping tree
試驗誤差分布見表4。由表4可知,基于雙目視覺的樹木高度測量方法計算樹高的結果,SGBM算法相對實際值的最大相對誤差為3.93%,最小為0.76%;BM算法相對實際值的最大誤差為3.41%,最小為0.29%,根據2.5中提高精度的測量方法,對于拍攝5~6 m以上較高的樹木誤差可以控制在3%左右,2種算法均滿足精準林業的精度需求。此外,造成誤差的原因可能有:樹木背景距離樹木本身太近,造成深度圖不明顯;相機標定時出現誤差;樹頂端出現失真等問題。SGBM算法生成的深度圖表面平滑、連貫,但在拍攝遠距離樹木時易造成輪廓不清晰;BM算法輪廓清晰,但深度圖表面有輕微失真,在實際應用中要根據實際情況選擇算法。

表4 試驗誤差Table 4 Experimental error
針對能實現樹木無接觸式的測量方法,以及綜合考慮樹木生長過程中存在的傾斜、彎曲等不規則形態,提出了基于雙目立體視覺的樹高測量方法。將深度學習與雙目視覺相結合,可以實現樹木同時在二維和三維空間的信息提取。雙目視覺包括相機標定、圖像校正、立體匹配等技術;樹木的目標檢測技術則基于Yolo v4和Pytorch框架。此外,筆者基于雙目視覺理論分析了提高樹木測量精度的方法,如從算法角度、硬件角度、像素角度等多方面分析。試驗部分闡述了雙目視覺方法測量樹高的全過程,通過相機標定獲取相機鏡頭參數,結合SGBM算法與BM算法進行匹配,獲得待測樹木的深度圖像,進而對樹木關鍵點的空間坐標進行提取,計算測得樹高結果。其次,考慮到測量樹木高度過程中可能存在樹木遮擋重疊的問題,從而對樹木關鍵點的判斷產生影響,因此,在試驗部分分別用兩種算法的深度圖像清晰地描繪了解決該問題的途徑。在試驗誤差方面,SGBM算法樹高測量結果的相對誤差范圍為0.76%~3.93%,BM算法相對誤差范圍為0.29%~3.41%。總體來看,該方法具有較好的應用價值,可以滿足精準林業的需求。