王一州,付 宇,孫長閏,喬雷章
(1中國民航大學(xué) 天津 300300)
(2航大漢來天津航空技術(shù)有限公司 天津 300300)
在現(xiàn)實中,基于任務(wù)的總體成本控制以及無人機的負載能力和續(xù)航能力等約束,單目無人機在應(yīng)用中的性價比極高,因此大多數(shù)情況傾向于選擇裝備單目攝像頭的小型無人機來完成任務(wù)。單目無人機一般安裝一臺視覺成像設(shè)備形成單目視覺,單目視覺在很多方面都比雙目視覺有優(yōu)勢。單點測距法是利用單目攝像頭作為唯一的傳感器設(shè)備,在飛行到一定位置時為被測物拍攝一張圖像,選取圖像中的三個點聯(lián)立方程進行計算求出被測點到光心的距離。移動測距法是利用兩次拍攝中物體在像平面的投影寬度和移動距離之間的關(guān)系求出相機與被測物的距離。遙感技術(shù)為人們快速、全面了解地表覆蓋變化提供了技術(shù)支持,在高分辨率遙感技術(shù)不斷發(fā)展的大背景下,大量高品質(zhì)遙感圖像的采集越來越方便。遙感圖像是利用遙感技術(shù)生成的遠距離圖像,可以對目標進行有效的處理,本文將介紹利用遙感法進行區(qū)域的面積的計算。
φ、w、k分別為相機三個方向的歐拉角,只旋轉(zhuǎn)不平移時世界坐標系轉(zhuǎn)化成相機坐標系的公式如下:
式中Xc、Yc、Zc分別代表相機坐標系中的三個坐標,Xw、Yw、Zw分別代表世界坐標系中的三個坐標。
P為被測點,p為像點。O-XYZ為地面坐標系。o-uv為像屏幕坐標系,每個點都是一個像素,u、v分別代表相應(yīng)像素在圖像中的行列值。S-UVF為像空間坐標系,光心S為原點,U、V分別與u、v平行,S到o的距離就是焦距f。S-XYZ為相機測量坐標系。令S在O-XYZ中的坐標為(Xs,Ys,Zs),P在O-XYZ中的坐標為(X,Y,Z),則P在S-XYZ中的坐標為(X-Xs,Y-Ys,Z-Zs)[1]。令P在S-UVF中的坐標為(X’,Y’,Z’),p在S-UVF中的坐標為(u,v,-f)。
P在S-XYZ的坐標(X-Xs,Y-Ys,Z-Zs)與P在S-UVZ的坐標(X’,Y’,Z’)通過坐標系變換公式帶入關(guān)系式可以得出成像基本方程如下。
通過天文的方式[2]得到P在地面直角系下的坐標,u、v可以在圖像中簡單量出,相機的焦距f已知,此時剩下六個相機外方元素未知數(shù)。再采取圖像中的另外兩個被測點,利用相機一組照片中的三個點可以列出三組基本方程,此時一共有六個方程和六個未知數(shù),通過計算機就可以求出對應(yīng)的六個未知數(shù),P在S-XYZ中的坐標(X-Xs,YYs,Z-Zs)就能得出,因此能得出被測點P到相機距離D的公式如下。
當相機在第一個點時,拍攝一張照片。假設(shè)此物體寬度為W,在攝像頭成像平面的投影寬度為W1,攝像頭焦距為f[3],則相機距離被測物的距離d為。
接著讓相機向前移動d1距離,為拍攝物拍攝第二張圖像,此時被測物在攝像頭成像平面的投影寬度變?yōu)閃2,但是物體實際寬度W和攝像頭焦距f都不變,此時相機距被測物的距離d2為。
因為d-d1=d2,并且焦距f和被測物實際寬度W都不變,所以結(jié)合兩式可以得出相機距離被測物的距離d為。
所以通過相機在相機與被測物直線方向上的移動距離和兩次被測物在成像平面上的寬度就可以知道相機與被測物之間的距離。下圖為具體編程步驟:
圖1 移動測距法編程步驟
模擬實驗方案規(guī)劃:提前準備好兩個不同焦距的鏡頭,在進行測距前先要知道相機的各項參數(shù)。搭建好實驗平臺,選擇好被測物進行測距實驗,具體步驟如下:
(1)無人機先裝配較大焦距的鏡頭,選取一個寬度較寬的長方體紙盒作為被測物,將紙盒放置離鏡頭3 m的位置進行第一次拍照,之后每隔0.5 m拍一次照,得到了被測物在不同位置下的寬度,根據(jù)公式計算出被測物到鏡頭的距離并與實際距離進行對比。
(2)無人機更換較小焦距的鏡頭,選取同一個紙盒作為被測物,將紙盒放置離鏡頭3 m的位置進行拍照,之后每隔0.5 m拍一次照,得到了被測物在不同位置下的寬度,根據(jù)公式計算出被測物到鏡頭的距離并與實際距離進行對比。
(3)將較大焦距鏡頭下得到的實驗結(jié)果與較小焦距鏡頭下得到的實驗結(jié)果進行對比,發(fā)現(xiàn)在誤差范圍內(nèi)雖然焦距不同但是測得的距離很接近,因此焦距不是距離的測量的影響因素,驗證了公式(7)的可靠性。
經(jīng)過分析,發(fā)現(xiàn)產(chǎn)生誤差的主要原因有:無人機移動的方向不一定嚴格按照鏡頭與被測物之間的直線方向移動;不同焦距下光心在鏡頭內(nèi)的某一位置不能精確確定;在小焦距遠距離情況時被測物在屏幕上的圖像非常小造成測量寬度時產(chǎn)生誤差。移動測距法的優(yōu)勢是計算較簡單且用計算機編程過程容易實現(xiàn),劣勢是無人機移動的方向不一定是無人機與被測物連接的直線方向?qū)е聼o人機與被測物之間移動的直線距離需要進行計算且本實驗并未在較遠距離進行測量而無人機一般可飛行到100 m左右,不過在不需要高精度計算的情況下可以大幅降低計算難度,在實際應(yīng)用過程中可以根據(jù)實際需求和條件選擇性使用。
(1)首先根據(jù)任務(wù)需要進行測區(qū)已有資料的收集,并制訂飛行方案。了解測區(qū)實際情況后,進一步優(yōu)化作業(yè)方案,進行測區(qū)分區(qū)和航線設(shè)計[4]。合理布設(shè)像控點[5],借助RTK設(shè)備對每個像控點布置精度進行檢測[6],有效提升測量精度。
(2)飛前檢測,保證網(wǎng)絡(luò)暢通,確保電量充足且各項功能指標正常,保證好飛行高度。拍攝模式可以采用定時拍攝。
當飛行完成后,將已獲取的圖像和數(shù)據(jù)導(dǎo)入到電腦中,利用Pix4D軟件進行正射影像生成。Pix4D軟件是一款無人機影像數(shù)據(jù)專業(yè)處理軟件,它可以利用從地面、輕型無人機或常規(guī)航攝的影像處理正射影像鑲嵌圖的3D模型,提供厘米級別的精度,為全自動工作流程[7],它能夠快速通過導(dǎo)入拍攝的影像和控制點完成圖像的實時拼接和正射影像的生成。通過對運用Pix4D生成的正射影像圖的精度進行檢查,進一步驗證了Pix4D在正射影像圖制作中的可行性[8]。該方法與傳統(tǒng)方法相比速度快、精度高,可以為無人機的航測和圖像處理提供技術(shù)支持。具體操作步驟如下:
(1)打開pix4D軟件,新建項目,填寫好項目的名稱并選擇項目位置。
(2)點擊添加圖像,不需要修改圖像的坐標系和相機型號,因為它能自動識別。
(3)點擊已知坐標系和高級坐標系選項,從列表中選擇合適的控制點坐標系。
(4)選擇3D Maps,勾選初始化處理、點云和紋理、DSM,正射影像圖及指數(shù)三個選項并開始,生成質(zhì)量報告,質(zhì)量報告中能看出很多誤差分析。
(5)導(dǎo)入控制點后點擊空三射線編輯器,刺像控點后重新優(yōu)化。
(6)通過鑲嵌編輯器將正射影像整體導(dǎo)出就可以得到正射影像圖。
當生成正射影像后,圖片由于受到多種顏色干擾導(dǎo)致很多特征不被識別,因此需要把彩色圖像轉(zhuǎn)換為灰度圖像使特征更加明顯?;叶葓D的各種數(shù)據(jù)一般用8位二進制來存儲,因此會產(chǎn)生256個數(shù)值,其中將黑色表示為0,白色表示為255,其余中間數(shù)字表示不同程度的黑色與白色相結(jié)合的顏色即灰色。圖像灰度化就是根據(jù)公式計算出每個像素點的亮度,從而直接用亮度來表示圖片[9]。公式如下:
其中Y為亮度值,R為原像素點的紅值,G為原像素點的綠值,B為像素點的藍值。所以一般對于24位的BMP圖像,利用此公式求出Y值后再將此Y值賦給其余的R值、G值和B值。
圖像二值化就是將數(shù)字圖像轉(zhuǎn)化為二值黑白像素的矩陣形式,將某些區(qū)域從背景中分離出來,為后續(xù)圖像的邊緣提取及其他圖像處理奠定基礎(chǔ)[10]??梢圆捎肂ernsen算法[11]的局部閾值法求閾值,此方法的優(yōu)點是光照陰影處理效果明顯、圖像細節(jié)保留較多,缺點是有大量無關(guān)細節(jié)存在和噪聲較多。
在進行完二值化處理后,會產(chǎn)生很多無關(guān)細節(jié)和噪點,為了使提取的圖像特征和輪廓更加清楚,需要進行降噪處理。目前有很多降噪處理的算法,可以采用一種將多重中值濾波與曲波變化相結(jié)合[12]的降噪算法。
通過OpenCV中使用Findcontours函數(shù)可以簡單快速地檢測出物體的輪廓,非常方便。
圖像上一共提取出n個點,每個點都可以轉(zhuǎn)換成實地坐標,公式如下
式中,trans(0)、trans(3)代表圖像左上角點的實地坐標;trans(1)是像元的寬度;trans(5)是像元的高度;若圖像指北,則參數(shù)trans(2)、trans(4)默認為0[13];m、n為圖像輪廓上各點的像素坐標;x、y為圖像輪廓上各點的實地坐標。
三角形面積可以用向量積進行計算,而多邊形可以拆成多個三角形來計算總面積。假設(shè)多邊形有n個頂點,則固定一個頂點則可以將其分割成n-2個三角形。例如一個六邊形,n=6,固定一個頂點則可以分割成4個三角形。
讀取輪廓上各個點的橫坐標x和縱坐標y,將其轉(zhuǎn)化為n頂點,將輪廓近似為不規(guī)則多邊形,則輪廓的面積S為。
本文對單目無人機的單點測距法、移動測距法、遙感法測面積進行了研究,為無人機在航測中的數(shù)據(jù)采集提供了支持,有一定適用性。但仍有一些問題待解決,比如具有較高精度特點的單點測距法如何完成編程工作以及在移動測距法中設(shè)計出一種無人機,在其與被測物直線方向上移動距離的計算方法,從而減小誤差,在測量面積的坐標變換中要知道各點的實地坐標會有困難。眾多步驟中一些步驟仍需改善例如設(shè)計出更優(yōu)的二值化處理方法和降噪處理方法,在未來將采集更多數(shù)據(jù)進行誤差分析和步驟優(yōu)化。