石 煒,陳禹州,張萬鍇,張曉瑩,張國英
(1. 內蒙古科技大學機械工程學院, 內蒙古 包頭 014010;2. 內蒙古智牧溯源技術開發(fā)有限公司, 內蒙古 包頭014010;3.內蒙古中農(nóng)高科科技有限公司,內蒙古 東勝 017010)
隨著現(xiàn)代養(yǎng)牛業(yè)水平的不斷提高, 通過體尺參數(shù)評定家畜的生長和健康狀況已經(jīng)成為一種剛性需求。在養(yǎng)牛業(yè)中,為了監(jiān)測牛的生長和健康狀況、適時調整飼養(yǎng)管理方案,體長、體高和胸圍等體尺信息是重要的考查指標。在散養(yǎng)方式下,養(yǎng)殖戶需要對牛群每月測定一次體尺。 傳統(tǒng)的體尺指標人工測量方式需要借助半圓儀、卡尺、皮尺等器具,還需要對測量數(shù)據(jù)進行人工記錄處理,全群牛只監(jiān)測一次需要較高的人工和時間成本。 通過機器視覺的非接觸式測量可以降低人工成本,保證了測定過程中的人身安全,還能提升監(jiān)測效率[1-4],因此, 對非接觸式測量動物體尺技術的研究具有一定實用價值。
為此, 筆者首次提出一種基于單鏡頭無人機平臺三維重建的牛體尺檢測方法。 首先采用無人機對野外散養(yǎng)牛群進行傾斜環(huán)繞拍攝采集圖像,對采集的圖像進行預處理,并進行空中三角計算;然后通過SFM(structure from motion)方法進行整個環(huán)境重建,得到整個牛群點云數(shù)據(jù);最后提取單個牛體點云,并測量牛體參數(shù)。該方法的建立旨在為散養(yǎng)模式下牛群體尺信息的高效、 安全采集提供技術參考。
固定翼飛行器搭載傾斜相機常應用于較大型的地理測繪,且需要結合野外控制點等坐標信息。 為了達到圖像采集設備低成本且易操作的目的[5-6],采用多旋翼布局的無人機進行圖像采集。將現(xiàn)有四軸無人飛行器與六軸無人飛行器進行對比(見表1)。
從便攜性、 易操作性、 成本可控性等方面考慮,該研究將無人機類別定為四軸無人機。單鏡頭小范圍航空傾斜攝影發(fā)展到如今, 已不需要通過外業(yè)控制點的方法就能精準獲取外方位元素,基于后期全球定位系統(tǒng)/慣性導航系統(tǒng)(GPS/INS)輔助空中三角測量的POS 數(shù)據(jù)需求, 在INS 系統(tǒng)上需要三軸陀螺儀、氣壓計、三軸重力加速度傳感器等傳感器模塊,與GPS 定位模塊相結合,從而達到GPS/INS 系統(tǒng)要求。 綜上所述,對所需飛控模塊及部件做出布局設計(見圖1)。
圖1 無人機布局與結構
基于上述布局,根據(jù)后期試驗要求,為使飛行穩(wěn)定可靠,分別采用2 種機型進行測試。 機型1:自組裝四軸無人機,軸距450 mm,尼龍+碳纖維機架;N5065 無刷外轉子直流電機與SKYWALKER 40A 航模無刷電子調速器;DJI Naza M Lite 飛行控制器(PID 控制)及其配套GPS 模塊;懸掛式兩軸無刷云臺及鷹眼飛螢8SE 運動版無畸變CMOS 相機(內置WIFI 圖傳功能);容量為5 400 mAh 的3S鋰電池及2.4 Ghz 天地飛10 通道遙控器。 機型2:軸距335 mm 大疆消費級無人機御MAVIC2 PRO。經(jīng)過測試對所選兩款無人機進行各項參數(shù)對比(見圖2、表2)。基于續(xù)航能力、最大通信距離和云臺穩(wěn)定性等因素,通過實地拍攝效果對比,選取大疆消費級無人機御MAVIC2 PRO 作為該研究的試驗用機型。
表2 2 種備選機型各項參數(shù)對比
圖2 2 種備選機型實物
確定以上圖像采集設備后, 將試驗地點定在內蒙古自治區(qū)錫林郭勒盟蘇尼特左旗。 因草原放牧牛大都處于散養(yǎng)狀態(tài), 符合該研究覆蓋面廣的遠距離圖像采集要求以及多頭牛牛體影像同時采集的要求。由于對圖像采取的是離線后期處理,在圖像采集后即可完成野外操作。 之后進行圖像處理與三維點云重建,進行交互式測量。具體流程如圖3 所示。
圖3 試驗流程
該研究在蘇尼特左旗選取1 家牧戶的3 個散養(yǎng)牛群、1 個圈養(yǎng)牛群以及1 頭單體牛,分別記作R0、R1、R2、R3 及R。 對牛的體直長、體高、胸圍參數(shù)進行人工測量,以便后期進行數(shù)據(jù)對比,并根據(jù)耳標(IFID)進行標注,以匹配人工測量參數(shù)。 該研究采用的是單鏡頭傾斜攝影, 與傳統(tǒng)航空攝影測繪的規(guī)劃航線不同,因此,需要無人機將起飛點與返航點設定為(113°43′53.76″N,44°1′45.9336″E),即為了驗證遠距離拍攝的可行性, 在起飛點與返航點距離牛群約為300 m、懸停高度為40 m 時,通過旋轉進行牛群搜索。 在確定牛群后飛往目標牛群進行拍攝。
1.3.1 無人機圖像獲取
無人機到達牛群上空后, 為了避免無人機發(fā)出的噪聲導致牛群出現(xiàn)應激反應,經(jīng)多次驗證,無人機飛行高度至少需要達到5 m,因此,實地采集牛群圖像在6~13 m 高度進行拍攝,相機相比目測中心點水平傾斜角21~90°。 根據(jù)目測范圍選定牛群中心近似點為興趣環(huán)繞點, 環(huán)繞點與無人機水平距離為環(huán)繞半徑進行環(huán)繞飛行拍攝。 三維重建點云數(shù)量及精度取決于圖像重疊率與地面分辨率,見式(1)。
式(1)中,H 為相對飛行高度,f 為鏡頭焦距,gsd 為圖像地面分辨率,a 為像元尺寸。 由式(1)可知,在鏡頭焦距與像元尺寸大小固定的情況下,為保證重建質量, 相鄰2 張照片的重疊率至少在70%, 因此, 無人機應以6~14 km/h 的速度以及0.5~3.0 張/s 延時的快門速度進行拍攝。 采樣牛群拍攝軌跡圖顯示(見圖4):單體牛R 采集67 張圖像,用時8 min;牛群R0 采集46 張圖像,用時5 min;牛群R1 采集152 張圖像,用時17 min;牛群R2 采集198 張圖像,用時21 min;牛群R3 采集96 張圖像,用時11 min。 考慮到后期匹配POS信息難度問題, 并未采集視頻信息進行抽幀獲取圖像。理論上,通過影像資料抽幀獲取圖像進行三維重建方法同樣可行, 且圖像的重疊率可以人為控制。
圖4 圖像采集軌跡
1.3.2 圖像預處理
圖像獲取過程中存在一些內在或外在的噪聲干擾,在圖像的形成、傳輸、接收等過程中出現(xiàn)的干擾與誤差都會造成噪聲干擾。 噪聲會使圖像清晰度降低以及圖像特征不夠明顯, 直接影響后期圖像區(qū)域分割、三維重建特征點檢測等操作。預處理的目的在于改善采集圖像的質量, 即抑制圖像上不必要的一些變形和增強, 從而保證后期需要的牛體特征點與點云數(shù)量, 以及提高精度降低測量誤差,且不會影響圖片信息量。 基于以上要求,從去噪、增強兩方面對圖像進行預處理,在以上操作之前需要將圖像POS 信息制作成文本再進行處理,以防止圖片自帶POS 信息丟失。
在圖像采集過程中, 傳輸和壓縮圖像時可能會造成一定誤差,由此產(chǎn)生噪聲。常見的噪聲去除方法包括空間域濾波和頻率域濾波等。 采集圖像特征只需要去除少量的椒鹽噪聲, 對圖像不需要進行圖像模糊化操作,因此,該研究采用的降噪方式為中值濾波。
中值濾波本質上是一種統(tǒng)計排序濾波器,即設定濾波器模板大小, 對圖像中點的周圍模板范圍像素進行排序得到中值, 以該濾波器對圖像進行濾波。根據(jù)圖像特點設定濾波器大小為窗口。同時,為使牛體邊界信息更加明顯、突出,該研究在進行圖像去噪之后增加了一步圖像增強操作。 圖像增強可分為空間域圖像增強和頻率域圖像增強。 直方圖均衡化是一種簡單有效的圖像增強技術, 通過改變圖像的直方圖優(yōu)化圖像中各像素的灰度,主要用于增強動態(tài)范圍偏小的圖像對比度。為了有效提升圖像對比度并使圖像帶有原本色彩, 該研究采用有別于灰度圖像的直方圖均衡化方法: 分別將圖像RGB 的3 個通道直方圖求出;對3 個通道的直方圖進行灰度圖像直方圖均衡化;將3 個通道圖像融合,得出增強后的圖像。 算法偽代碼如下:
RGB=imread(′1.jpg′);//輸入拍攝圖像,得到三通道數(shù)組。
R=RGB(:,:,1);
G=RGB(:,:,2);
B=RGB (:,:,3);//分別取3 個通道數(shù)組的一個通道,得到紅藍綠3 個分量。
R=histeq(R);
g=histeq(G);
b=histeq(B);//對個分量直方圖均衡化,得到個分量均衡化圖像。
figure,
newimg=cat(3,r,g,b);//通過均衡化后的輸出圖。
基于以上步驟將單體牛R 采集圖像作為效果圖(見圖5)。
圖5 單體牛R 圖像預處理效果
1.3.3 三維重建
不同于航測需要野外控制點, 該研究利用無人機自帶GPS/INS 系統(tǒng)輔助空中三角測量,同時,只需生成點云數(shù)據(jù),無需生成TIN(triangulate irregular network) 網(wǎng)格模型及DSM (digital surface model)表面模型,因此,在重建時間上獲得了一定程度的減少。該研究采用ContextCapture 軟件進行的點云重建流程如下:
1.3.3.1 SIFT 特征點提取與匹配
SIFT 特征點提取需要計算關鍵點的大小、方向、尺度信息,利用這些信息組成特征點的描述。SIFT 特征匹配采用特征向量的歐氏距離進行,確定一個合適的閾值, 先取一幅圖像中的一個SIFT關鍵點, 并找出與另一幅圖像中歐式距離最近的前兩個關鍵點。在這兩個關鍵點中,歐式距離最小值與次小值的比值少于該閾值, 則確定這是一對匹配點。
1.3.3.2 空三處理生成點云及迭代光束平差
根據(jù)共線方程式(式2、式3)計算空三處理結果。
(x,y)為以像點為原點的坐標;x 為以像主點為原點圖像中橫軸坐標,y 為以像主點為原點圖像中縱軸坐標。 式(2)、(3)中,(XA,YA,ZA)為地面物體外方坐標,(XS,YS,ZS)分別對應攝影中心即相機中心在空間輔助坐標系中對應的坐標,f 為相片主距,POS 信息中對應的GPS 坐標點與氣壓高度計即為S 點的外方坐標相片主距與像原點坐標,通過相機位姿恢復得到,式(2)、(3)中,a1、a2、a3,b1、b2、b3,c1、c2、c3 旋轉矩陣元素分別對應X、Y、Z 三軸中主光軸所在二維平面中的夾角余弦,可以通過慣性測量系統(tǒng)(IMU)獲取,則上式中只有3個地面坐標為未知數(shù), 通過兩幅圖像特征點的匹配進行三角化的投影,可以聯(lián)立出4 個方程,解算地面坐標。
1.3.3.3 利用初始點云配合空三加密結果得到最終點云
該研究采用ContextCapture 軟件對以上方法進行驗證:單體牛R 重建時間為21 min;牛群R0重建時間為12 min; 牛群R1 重建時間為71 min;牛群R2 重建時間為132 min; 牛群R3 重建時間為42 min。 單體牛點云最低個數(shù)為200 000 個,已達到測量精度要求。
1.3.4 點云測量
由于重建牛體點云基于牛群和牧場環(huán)境,利用CloudCompare 軟件加載出完整的重建場景,再對場景中重建完整的牛體與場景分割提取 (如圖6 所示)。
圖6 三維重建過程及效果
牛群R0 共提取可用牛體點云3 頭; 牛群R1共提取8 頭;牛群R2 因站姿牛較少所以僅提取2頭;牛群R3 共提取7 頭;單體牛R 提取1 頭。 共獲得21 頭可用牛體, 對其分別進行編號標記,將通過航拍圖片獲得的牛信息與人工測量的牛信息匹配。
由于提取出的點云依舊與地面存在粘連,影響后期測量結果, 通過修改點云坐標軸位置和RANSAC 隨機采樣一致性算法, 對點云地面與牛體進行分離。 從提取后的點云中進一步提取牛腳與地面中的一個子集, 使用最小方差估計算法計算該子集的模型參數(shù), 再計算整個樣本與模型的偏差, 通過預先設定的閾值與偏差比較對樣本點進行分類。 重復以上操作進行迭代,以降低誤差。而迭代次數(shù)可以由式(4)推出:
式(4)中,P 為良好期望概值,ε 為局內點與總體個數(shù)比值,K 為模型參數(shù)最小值,N 為最小抽樣數(shù)。 由式(4)可知,迭代次數(shù)的增加可以提高最終結果合理性的概率,因此,基于點云特點及迭代次數(shù)考慮,將閾值設定為0.07,即分割高度為0.07 m,并將點云PCL 庫中代碼封裝為CloudCompare 軟件插件以便使用。 分割效果如圖7 所示。
圖7 點云分割效果圖
提取出牛體點云后對牛體的體高、體直長、胸圍利用CloudCompare 軟件進行了交互式測量,結果如圖8 所示,檢測指標分別為:體高,即由鬐甲的最高點到地面的垂直距離;體直長,由肩端至坐骨端后緣垂直線的水平距離;胸圍,肩胛骨后緣胸部的圓周長度。其中,胸圍測量選取肩胛骨后緣胸部進行Y 軸向切片, 然后對其切口進行曲線擬合測量。
圖8 牛體體尺測量示意圖
該研究共對重建可用點云的21 頭牛分別進行了體高、體直長、胸圍檢測,同時,對基于無人機平臺的交互式測量值以及人工測量值進行了比較,結果見圖9~11。 由圖9~11 可知,基于無人機平臺的牛體高、體直長、胸圍的交互式測量值與人工實測值最大誤差分別為5.67%、5.82%、7.36%,最小誤差分別為0.71%、0.93%、1.45%, 平均相對誤差分別為3.87%、4.16%、5.06%。對于體高而言,在RANSAC 隨機采樣地面分割過程中,對牛腳與地面分割參數(shù)的調整沒有精確到通用的程度,產(chǎn)生的誤差會參差不齊;同時,牛在野外站立可能低頭吃草,也可能抬頭休息,這也會直接影響測量誤差。對于體直長而言,主要誤差產(chǎn)生在三維點云重建過程中是否有足夠的無人機影像能夠將牛體表面點云表達出來。 胸圍的誤差主要存在于無人機拍攝角度能否覆蓋到牛胸口輪廓, 以及點云的曲線擬合程度。
圖9 牛體高交互式測量值與人工測量值對比
體尺是牛生長周期中最直觀的健康參數(shù)。 同時,在選種育種、肉品質評估、飼養(yǎng)管理中牛體尺也是一項重要的評價指標。 在對于牛的選種飼養(yǎng)過程中,牛體的體重、體長、體高和胸圍等的測量信息是作為對牛體體征測量的一個重要考查指標。
圖10 牛體直長交互式測量值與人工測量值對比
圖11 牛胸圍交互式測量值與人工測量值對比
不同的學者采用非接觸式測量在機器視覺圖像處理領域通過邊緣檢測、特征提取、深度學習等方法均得到家畜體尺數(shù)據(jù)[7-12]。在機器視覺圖像處理方向的研究具有成本低、魯棒性強等優(yōu)點。同時也存在著對環(huán)境背景干擾要求較嚴格、 無法測量胸圍等缺點。在此基礎上,出現(xiàn)了基于三維重建家畜點云的體尺測量方法。 王可等[13]則通過單視角點云鏡像的方法測量了豬體的尺寸。 在家畜點云三維重建中硬件可以采用點云相機、 雙目相機、Kinect 相機等各種圖像采集設備[14-16]。 總體來說,獲取了點云數(shù)據(jù)便可以在家畜體尺非接觸測量研究中進一步提高測量數(shù)據(jù)的多樣性與準確性。
該文研究的方法相比傳統(tǒng)機器視覺通過圖像處理進行的非接觸式測量方案引入了點云概念,將二維測量變?yōu)槿S測量, 借此可以獲得更多可測量數(shù)據(jù), 例如二維圖像無法處理的牛體胸圍測量。 同時,因為采用了自動空中三角測量原理,對于相機提前標定便可以省去,提高了檢測的效率。而對于點云相機等三維重建方式, 該文采用的重建方案對環(huán)境的要求并不太苛刻, 可以在無人為干預、 無設備采集通道搭建的情況下對散養(yǎng)牛群進行圖像拍攝,有效地節(jié)約了人工成本。而且與現(xiàn)有的重建方式對單體牛進行點云重建相比, 該方法在實驗過程中可以通過大場景圖像一次性重建多頭牛體點云數(shù)據(jù),精度能夠達到要求。
以內蒙古蘇尼特左旗牧戶為例, 該方法利用散養(yǎng)牛對環(huán)境敏感度不高且行動緩慢的特點,可以在野外散養(yǎng)牛群中同時重建出多頭牛體點云進行測量,且受環(huán)境光源影響較小,可實施性較高。利用無人機進行牛體體尺測量大大減少了人工消耗可以進一步提高測量數(shù)據(jù)的多樣性與準確性。在今后的研究中要在無人機圖片采集上用更多方法進行探索,提升牛群中牛體重建成功率,如多臺無人機進行同步拍攝,牛體點云的擴展應用,如牛體體重預測、自動測量等。
與現(xiàn)有牛體尺檢測方案相比, 該研究所用的測量方法分別對不同種類牛群中的牛個體進行了三維重建與體尺的測量, 通過對比試驗測得的牛體高、體長、胸圍平均誤差分別為3.87%、4.16%、5.06%,驗證了該方法的可行性,適用于散養(yǎng)牧戶及大規(guī)模中低密度養(yǎng)殖牧戶對牛體況進行間斷性體尺檢測。