吳丹, 葉軍立, 王康, 耿澤棟, 付晶波, 劉凌波, 楊萬能*
(1.華中農(nóng)業(yè)大學(xué)工學(xué)院, 作物遺傳改良國家重點實驗室, 武漢 430070; 2.華中科技大學(xué)武漢光電國家研究中心生物醫(yī)學(xué)光子學(xué)部, 武漢 430074)
水稻是作物遺傳改良研究領(lǐng)域的熱點。表型信息獲取與分析是水稻功能基因組學(xué)和現(xiàn)代作物育種研究的基礎(chǔ),傳統(tǒng)的表型檢測主要依靠人工,成本高、效率低、具有一定破壞性且數(shù)據(jù)質(zhì)量受人工主觀因素影響[1]。近年來,計算機視覺技術(shù)為植物表型學(xué)提供了高效的表型性狀獲取方法,如葉片表型分析[2]、基于可見光-近紅外高光譜成像的盆栽水稻莖葉區(qū)分方法[3]、基于多視圖的稻穗數(shù)測量[4]、基于卷積神經(jīng)網(wǎng)絡(luò)的稻穗圖像分割技術(shù)[5]、小麥穗尖點定位及計數(shù)[6]、田間玉米穗數(shù)計數(shù)[7]、基于深度學(xué)習(xí)的植物疾病檢測[8]等。三維模型存儲了單張二維圖像所不具有的空間信息,從中能提取更真實的葉片數(shù)、葉片角、株型等光合作用相關(guān)的三維性狀,因此,從三維層面進行表型研究具有重要意義。
精確完整地重建樣本的三維模型是進行三維表型研究的基礎(chǔ)。三維重建方法根據(jù)成像原理可以分為兩類:一類是基于硬件設(shè)備進行3D光學(xué)成像,如激光雷達、深度相機、CT、核磁共振等;另一類是基于計算機視覺的三維重建技術(shù),如雙目視覺、運動恢復(fù)結(jié)構(gòu)、基于輪廓投影的重建等。這些重建方法在表型研究中都有所應(yīng)用,如基于深度圖像的棉花田間高通量表型[9]、基于雙目視覺的油菜葉片性狀定量分析[10]、基于運動恢復(fù)結(jié)構(gòu)的草莓3D成像系統(tǒng)[11]、采用TOF與可見光雙模式成像的玉米苗期植株性狀提取[12]、采用激光雷達成像評估玉米在干旱脅迫下的表型性狀[13]、采用CT成像研究水稻[14]等。激光掃描成像精度顯著高于基于計算機視覺方法的重建精度,但是其成本較高,地基激光雷達適用于大型場景重建,手持式激光掃描儀通常需要標定物,且成像效率較低,不適用于大批量樣本的重建。運動恢復(fù)結(jié)構(gòu)是基于計算機視覺的重建技術(shù)中最為先進的一種方法,該方法不需要提供相機標定圖像,通過圖像特征點匹配來完成標定,適用范圍廣,但其重建結(jié)果在紋理稀疏的表面容易形成空洞,且圖片數(shù)量較多時,重建時間也較長。方偉等[15]提出了一種用于小麥植株自動化檢測的快速三維重建方法,其優(yōu)點在于采用體積交集法計算植株的可視外殼,經(jīng)過GPU加速,單株樣本的重建時間可以縮減到10 s左右,但該方法對每株樣本進行拍攝時都需要放置標定板。本研究同樣基于體積交集法進行重建,但采用了更為簡單、適用于批量重建的標定方法,可以在相機位置保持固定的情況下,僅拍攝一組標定圖像即可進行多株樣本的重建,且根據(jù)該標定方式可以直接得到水稻樣本重建點的高度信息。
多視圖三維重建方法可以分為兩大類:一類是立體視覺方法,根據(jù)同一空間點在不同視圖上像點的位置偏差進行三角測量,獲取待重建物的深度信息;另一類則是根據(jù)待重建物在不同視圖下的輪廓,通過體積交集法重建物體的可視外殼。本文采用基于輪廓投影的方法進行重建,主要步驟包括水稻樣本多視圖拍攝、輪廓提取、相機標定、投影重建以及點云著色。
拍攝地點位于湖北省武漢市華中農(nóng)業(yè)大學(xué)水稻試驗基地,數(shù)據(jù)集有3個:Rice_360、Rice_533、Rice_WN。其中,Rice_360及Rice_533數(shù)據(jù)集中的樣本來源于529份水稻種質(zhì)資源,Rice_WN采用ZH11品種的超表達和突變體材料。數(shù)據(jù)集樣本量及拍攝情況如表1所示。
表1 三維重建數(shù)據(jù)集
采用輪廓投影法重建水稻樣本,需要拍攝樣本多角度視圖。本方法采用相機固定,樣本連續(xù)旋轉(zhuǎn)的拍攝模式。成像系統(tǒng)如圖1所示,主要由可見光相機(Cannon EOS 760D,鏡頭EFS 18~135 mm)、電控旋轉(zhuǎn)臺(紅星楊MERA200)、4塊LED面光板(Philips,每塊規(guī)格600 mm×1200 mm,功率68 W)、PLC控制器(CP1H, OMRON)及計算機(Inter?CoreTMi7-4790K CPU,內(nèi)存8.00 GB)組成。旋轉(zhuǎn)臺中心位置固定,帶動水稻樣本做勻速旋轉(zhuǎn)運動,由計算機每隔固定時間發(fā)送指令控制相機拍照。考慮到轉(zhuǎn)速過快會造成水稻葉片抖動,降低重建模型的完整性,采用轉(zhuǎn)速2°·s-1,在水稻樣本旋轉(zhuǎn)一圈的3 min時間內(nèi),總共獲取90張圖像。
注:1—旋轉(zhuǎn)臺;2—相機;3—升降臺;4—標定板。
輪廓投影算法根據(jù)物體多角度輪廓圖推斷其可能的三維形狀,因此,需要對原始RGB圖像進行分割,得到單通道輪廓二值圖,作為投影算法的輸入,二值圖中水稻前景點灰度值為255,背景點灰度值為0。由于成像系統(tǒng)背景簡單,本研究采用超G分量及圖像掩膜進行分割,通過連通域分析去除噪聲點。
在投影重建算法中,需要將包圍盒體素點投影到各個視圖,計算每個體素點在各視圖上的投影點坐標。從空間點M[XW,YW,ZW]T到圖像像素點m[u,v]T的投影過程可以通過投影矩陣左乘空間點齊次坐標進行表示[16]。
(1)
本文采用棋盤格標定法[16]標定相機內(nèi)參,并另外拍攝一組外參標定圖像,假定世界坐標系原點為旋轉(zhuǎn)臺旋轉(zhuǎn)軸與水稻盆沿所在平面的交點,Z軸與旋轉(zhuǎn)軸重合,根據(jù)已標定的相機內(nèi)參、畸變系數(shù)以及標定板空間點與像素點的對應(yīng)關(guān)系,采用世界坐標系原點偏移最小化迭代求解外參矩陣。
實際拍攝外參標定圖像時,將升降臺放置在旋轉(zhuǎn)臺上,棋盤格標定板置于升降臺上,此時棋盤格平面與旋轉(zhuǎn)臺平面平行。通過調(diào)節(jié)升降臺使棋盤格平面與旋轉(zhuǎn)臺表面距離為h,h表示盆栽水稻樣本放置在旋轉(zhuǎn)臺上時盆沿相對于旋轉(zhuǎn)臺表面的高度(圖1)。在標定板繞旋轉(zhuǎn)軸運動一圈的時間內(nèi),拍攝若干張標定板圖像。設(shè)Δx、Δy表示棋盤格第一個角點相對于世界坐標系原點Ow的偏移量,Δx、Δy是未知的,需要通過迭代方法進行求解。
當(dāng)世界坐標系相對于相機坐標系僅繞Z軸作旋轉(zhuǎn)運動時,所有視圖對應(yīng)的平移矩陣均相等。
t1=t2=…=tk=…tN
(2)
式中,tk表示第k張視圖對應(yīng)的相機平移矩陣,N為外參標定圖像的數(shù)量。
(3)
定義世界坐標系原點偏移誤差函數(shù)如下。
(4)
式中,txk、tyk、tzk為tk的三個分量。通過迭代計算,確定使E值達到最小的Δx、Δy。
(5)
(6)
式中,R(n,θ)為繞軸n旋轉(zhuǎn)角度θ的旋轉(zhuǎn)矩陣[17]。
(7)
實際拍攝水稻樣本多角度視圖時,樣本勻速轉(zhuǎn)動,相機的相對運動軌跡在同一圓周上(圖2),計算機每隔固定時間發(fā)送指令控制相機拍照。由于真實的拍攝時間間隔存在一定變化,采用真實的拍攝時間命名所拍攝圖像,由該時間確定樣本相對于拍攝第一張視圖時的轉(zhuǎn)角。
圖2 相機與水稻樣本的相對位置
θ=ω×(t-t0)
(8)
式中,ω為旋轉(zhuǎn)臺轉(zhuǎn)速,t為當(dāng)前視圖拍攝時間,t0為第一張視圖拍攝時間,聯(lián)立(5)~(8),計算單個樣本旋轉(zhuǎn)一圈時間內(nèi)拍攝的所有視圖對應(yīng)的外參矩陣。
根據(jù)待重建物體不同視角下的輪廓圖及相機標定參數(shù),可以重建出物體的可視外殼。可視外殼是根據(jù)多視圖輪廓信息所能重建的最優(yōu)結(jié)果。物體S在可視域R上的可見外殼VH(S,R)是一個歐式空間點集:對任意點P∈VH(S,R),從視點V出發(fā)且經(jīng)過P點的射線至少包含一個物體S上的點[18]。對于每一張視圖,物體S上任意一點的投影點均在該視圖側(cè)影輪廓以內(nèi)。根據(jù)這一條件,可以采用體積交集法重建物體可視外殼。若已知一個邊界能完全包含待重建物體S的實心長方體包圍盒,將該包圍盒抽象為一系列空間體素點的集合,根據(jù)相機標定參數(shù)將包圍盒中的體素點投影到各視圖,統(tǒng)計各體素點的投影點在對應(yīng)視圖輪廓以內(nèi)的累計數(shù)量,剔除累計數(shù)量小于重建閾值的體素點即可得到物體S對應(yīng)于這些視圖的可視外殼。
三維模型有多種表示方法,廣泛使用的有體素、水平集、多邊形網(wǎng)格、深度圖等[19]。其中,體素模型是一種離散化占用模型,這種表示方法簡單、密度均勻并且能近似任意曲面,廣泛地應(yīng)用于各種三維重建技術(shù)。本文采用體素模型進行重建,重建過程中,將長方體包圍盒劃分為一系列相同大小的體素,每個體素均采用三維空間點坐標進行表示,最終重建所得可視外殼輸出為一系列三維點坐標。
重建算法包括兩個部分,第一部分為輪廓投影重建(步驟1~4),第二部分為反投影體素著色(步驟5~6)。
步驟1:初始化一個實心長方體包圍盒V,確定其邊界能完全包含待重建樣本。
步驟2:將包圍盒V均勻劃分成若干小立方體(體素),每個小立方體邊長為1 mm。
步驟3:對于包圍盒V上任意體素vi,根據(jù)已標定的相機內(nèi)參及各個視圖對應(yīng)的外參,由公式(1)計算vi在各個視圖上的投影點,記錄vi的投影點落在對應(yīng)視圖輪廓內(nèi)的累計數(shù)量A(vi)。
步驟4:設(shè)定重建閾值m(m≤N,N為視圖總數(shù)),剔除所有A(vi) 步驟5:從第n(n=1,2,…N)張視圖出發(fā),遍歷該視圖上所有輪廓內(nèi)的像素點。 步驟6:所有視圖遍歷完成后,剔除沒有任何一張視圖有像素點與之對應(yīng)的體素點,對于保留的體素點,計算其顏色均值。 (9) 式中,nvi表示有像素點與體素點vi對應(yīng)的視圖數(shù)量,得到最終的重建模型Rrendered。 本研究使用C/C++、OpenCV編寫重建算法,并采用CUDA進行了算法優(yōu)化。用于算法測試的系統(tǒng)配置為Win10 64位操作系統(tǒng),NVIDIA TITAN Xp顯卡,32 G內(nèi)存,Intel(R)Core(TM)i7-6850K處理器。算法測試過程包圍盒初始化大小均為1 024 mm×1 024 mm×1 000 mm,體素邊長為1 mm。 目前,多目視覺三維重建用到的方法還有運動恢復(fù)結(jié)構(gòu)(structure from motion),該方法不需要提供相機標定參數(shù),適用范圍廣。采用開源VisualSFM軟件[20]以及本研究方法對同一株樣本(WN27-4)90張視圖進行重建。 原始RGB視圖及對應(yīng)輪廓分割結(jié)果如圖3所示。在輪廓圖中,黑色部分為背景,像素點灰度值為0,白色部分為水稻輪廓,像素點灰度值為255。 數(shù)據(jù)集Rice_360為同一株水稻樣本旋轉(zhuǎn)一圈拍攝的360張視圖,相鄰兩張視圖間隔角度為1°,從Rice_360數(shù)據(jù)集中等角度間隔抽樣建立其余10個數(shù)據(jù)集,分別為Rice_10、Rice_20、Rice_30、Rice_40、Rice_45、Rice_60、Rice_72、Rice_90、Rice_120、Rice_180,數(shù)據(jù)集名稱的后綴表示該數(shù)據(jù)集所包含的視圖數(shù)量。對上述數(shù)據(jù)集進行測試,圖4所示為未著色的實心點云重建點數(shù)量與視圖數(shù)曲線,隨視圖數(shù)增多,重建點數(shù)逐漸減少,且減小趨勢逐漸變緩。根據(jù)輪廓投影重建原理可知,視圖數(shù)越多,重建結(jié)果越接近于真實值,可以看到在視圖數(shù)超過90張后,趨勢線接近水平,說明視圖數(shù)到達一定數(shù)量后,再增加視圖對于提高重建效果的作用并不明顯,這是由于算法采用體素點的集合對空間物體進行擬合,實際運算過程中體素邊長不能無限小,擬合模型一般不能無限近似待重建物體。 圖5展示了視圖數(shù)分別為10、20、90、360張,取包圍盒體素邊長為1 mm、重建閾值等于視圖數(shù)時的重建結(jié)果。由圖5可見,視圖數(shù)為90張時可重建出與360張視圖較為近似的結(jié)果,因此,本實驗確定體素邊長為1 mm時較合適的視圖數(shù)為90張。 圖5 不同視圖數(shù)的重建結(jié)果 在輪廓投影重建中,判斷包圍盒某一體素點為待重建物體上的一點,其條件是該體素點有不少于m個投影點在對應(yīng)視圖投影輪廓以內(nèi)。圖6所示為Rice_WN數(shù)據(jù)集中各樣本取重建閾值為75~90時對應(yīng)的重建點數(shù),不同樣本采用不同顏色表示。圖7展示了同一樣本取閾值75、80、85、90時的重建效果。m取值越接近于重建視圖數(shù),重建精度越高,重建模型上每個點為真實存在點的概率越大。但實際上,相機標定與輪廓圖提取具有一定誤差,提高重建閾值在提高重建精度的同時可能降低重建模型的完整性,通常表現(xiàn)為重建點云在較細的葉片或莖稈部分容易斷開。 圖6 重建點數(shù)與重建閾值趨勢線 圖7 不同重建閾值的重建結(jié)果 綜合考慮重建效果、數(shù)據(jù)存儲及重建時長,采用90張視圖進行重建較為合適。本研究建立了兩組單個樣本視圖數(shù)為90張的數(shù)據(jù)集Rice_533及Rice_WN,其中Rice_533包括10株分蘗期水稻,Rice_WN包括20株成熟期水稻。由于本方法所標定的世界坐標系XOY平面與水稻樣本盆沿所在平面重合,重建點的z坐標絕對值即為該點相對于盆沿的高度。圖8和圖9分別為數(shù)據(jù)集Rice_533與Rice_WN的部分樣本重建點云根據(jù)RGB信息與高度信息的渲染結(jié)果。 圖8 數(shù)據(jù)集Rice_533的點云渲染結(jié)果 圖9 數(shù)據(jù)集Rice_WN的點云渲染結(jié)果 重建算法主要包括投影重建與點云著色兩個部分。重建閾值m對投影重建過程的耗時具有一定影響,本研究統(tǒng)計了RICE_WN數(shù)據(jù)集中各樣本取重建閾值為75到90時的投影重建耗時,如圖10所示,不同樣本采用不同顏色曲線表示,投影重建時間隨重建閾值增大而減小。重建閾值為90時,單株樣本投影重建及點云著色總耗時約為8~10 min(表2)。 圖10 投影重建時間與重建閾值趨勢線 表2 RICE_WN數(shù)據(jù)集重建耗時統(tǒng)計 圖11為兩種方法重建結(jié)果對比,VisualSFM重建時間約15 min,重建點數(shù)約6.9×105(去除由于黑色背景重建出的黑色點后約有3.3×105個點),本研究方法重建時間約8 min,重建點數(shù)約7.7×105,通過細節(jié)對比(圖12)可以看出,本研究重建結(jié)果更為完整,且噪聲點明顯較少。 圖11 兩種重建方法效果對比 圖12 兩種重建方法局部對比 從三維層面能獲取到更為全面的表型信息,水稻三維點云重建是進行水稻三維表型研究的基礎(chǔ)。本研究提出了一種簡單的、通過多視圖重建水稻三維點云的方法。在本文所述拍攝模式下,僅標定一次就能實現(xiàn)大批量樣本的重建,單個水稻樣本90張視圖的重建時間約為8~10 min。文中討論了視圖數(shù)量對重建結(jié)果的影響,即視圖數(shù)到達一定數(shù)量時,增加更多的視圖對于提高重建效果的作用并不明顯,當(dāng)包圍盒體素邊長為1 mm時,比較合適的重建視圖數(shù)為90張。此外,將該方法與開源VisualSFM軟件重建的結(jié)果進行對比,對于Rice_533中的苗期水稻樣本,VisualSFM未重建出有效的點云數(shù)據(jù),這是由于該數(shù)據(jù)集圖像中,水稻前景部分沒有明顯的紋理,特征點容易出現(xiàn)誤匹配。本方法根據(jù)輪廓信息,采用體積交集法得到可視外殼,重建結(jié)果更完整、噪聲點少且重建耗時較少,更適用于水稻樣本,為后續(xù)提取水稻三維表型性狀打下了基礎(chǔ)。1.8 算法編譯及運行環(huán)境
1.9 對比試驗
2 結(jié)果與分析
2.1 水稻輪廓分割結(jié)果
2.2 視圖數(shù)量對重建結(jié)果的影響
2.3 重建閾值m對重建結(jié)果的影響
2.4 點云渲染結(jié)果
2.5 重建速度分析
2.6 重建方法對比分析
3 討論