李高和 張艷莉
(西安石油大學(xué),西安,710065) (陜西師范大學(xué))
全世界每年發(fā)生森林火災(zāi)累計達20萬次左右,過火面積超過6.4×106hm2,因此,森林火災(zāi)已經(jīng)成為森林資源減少的主要原因之一。森林火災(zāi)發(fā)生的不確定性,火點位置的隨機性和不易監(jiān)控的特點。火災(zāi)發(fā)生后,起火迅速,火勢蔓延較快,火勢蔓延越久越難撲救,極易導(dǎo)致重大人員傷亡和財產(chǎn)損失[1],因此,火點位置的及時定位對于森林火災(zāi)的補救至關(guān)重要。發(fā)現(xiàn)和定位起火點使用的方法一般有衛(wèi)星遙感、飛機和無人機等空中監(jiān)控,以及人工值守、瞭望塔或云臺等地面監(jiān)控。衛(wèi)星遙感的特點是監(jiān)控范圍廣,定位精度高,缺點是成本高,實時性差;飛機和無人機的雖然定位準(zhǔn)確,但成本高、實時性和值守性差;人工值守的特點是需要的人員較多,勞動強度大,定位精度較低,不能及時獲得火災(zāi)現(xiàn)場數(shù)據(jù)。瞭望塔自動監(jiān)控的特點是定位準(zhǔn)確,成本較低,且符合現(xiàn)階段的技術(shù)發(fā)展水平。瞭望塔自動監(jiān)控所采用的技術(shù)有傳感器、雷達、紅外和數(shù)字視頻監(jiān)控等監(jiān)測定位方法,其中數(shù)字視頻監(jiān)控技術(shù)普及率高,價格也便宜[2]。
1958年,首次提出了計算機化地形要素信息的數(shù)字表達即數(shù)字地面模型(DTM)[3],它是利用一個坐標(biāo)系統(tǒng)中大量選擇已知的坐標(biāo)點(X,Y,Z)對連續(xù)地面的一個簡單的統(tǒng)計表示。地面的屬性是指某區(qū)域的高程、人口、降水量、氣溫、氣壓等的分布狀況,當(dāng)數(shù)字地面模型的地面特性為高程時,稱為DEM(數(shù)字高程模型)。DEM用一組有序數(shù)值陣列對地面高程的空間分布進行離散數(shù)字表達和模擬,能夠直觀地反映地球表面地形的連續(xù)起伏變化。目前,德國的Fire-Watch、加拿大的ForestWatch、法國的UraFire、南非的Fire-Hawk、英國的FireVu、克羅地亞的iForestFire等森林防火系統(tǒng)都采用DEM。本文提出的火點定位方法是依據(jù)DEM模型的數(shù)字視頻監(jiān)控系統(tǒng)算法。
著火點位置的確定可分為單點、雙點和多點定位方法[4]?;跀?shù)字視頻監(jiān)控系統(tǒng)的單點定位算法比較繁瑣復(fù)雜,而且經(jīng)緯度誤差范圍大[5]。因此,為了提高單點定位的精度,以智慧森林中數(shù)字視頻監(jiān)控系統(tǒng)為平臺,運用攝像機鏡頭光軸在空間的平移方法,在平面像素坐標(biāo)與立體空間坐標(biāo)之間建立映射,借助DEM模型,判斷地形剖面上的火點位置。
單點定位的基本思想是將瞭望塔上單目攝像機光軸視為沿視野中心延伸的射線,當(dāng)火點位于圖像中心(默認為主像點位置)時,射線與山體的第一個交點是需要定位的火點[4]。算法的第一步是計算火點位于圖像中心時,對應(yīng)的實際坐標(biāo)位置;第二步是計算火點位于圖像任意像素點時,對應(yīng)的實際坐標(biāo)位置。
由圖1所示,單點定位中,攝像機光軸與水平面夾角為β,即為數(shù)字云臺(攝像機光軸)當(dāng)前俯仰角。攝像機光軸在水平方向上的投影與Y軸(正北方向)夾角為α,即為數(shù)字云臺當(dāng)前的旋轉(zhuǎn)角。
圖1 根據(jù)旋轉(zhuǎn)角和俯仰角計算火點的位置坐標(biāo)
如果火點位于圖像正中心,則火點的旋轉(zhuǎn)角和俯仰角就是攝像機光軸的旋轉(zhuǎn)角和俯仰角。根據(jù)已知攝像頭的旋轉(zhuǎn)角和俯仰角,求解火點的地理坐標(biāo)位置,即火點的經(jīng)度和緯度。
首先,假設(shè)大地坐標(biāo)和直角坐標(biāo)進行重疊,標(biāo)定正北方向(OY軸)為數(shù)字云臺起始零度角,通過云臺的旋轉(zhuǎn)角確定火點發(fā)生的方向。其次,通過俯仰角確定火點的具體位置。線段AB是瞭望塔高度,OA是山高,F(xiàn)是假想火點,D是F點在坐標(biāo)系X-Y平面上的投影。只需求解出線段OD的長度即可獲得火點距離瞭望塔的投影距離,從而得到火點的經(jīng)緯度信息。
本系統(tǒng)采用漸進窮舉法與二分法結(jié)合的方法求解F點的坐標(biāo)。通過旋轉(zhuǎn)角α確定火點的具體方位,俯仰角β確定火點距云臺的水平距離。取點O、B、C、D構(gòu)成的平面如圖1所示。在本系統(tǒng)中,前端視頻監(jiān)控的紅外攝像頭為定焦鏡頭,可視范圍10 km。根據(jù)實際應(yīng)用情況,本文采用的定位算法從坐標(biāo)原點O(即瞭望塔在地面的投影,平面XOY與海平面重疊)開始,每隔1 000 m(步長)取射線OG上一點M,求射線上M點的地面高程MH和β角對邊EN之和。然后用瞭望塔的坐標(biāo)高度OB(等于MN)減去該和值,得到EH的值。可以看出,隨著射線OG上M點向前每隔1 000 m的不斷取點求值,對應(yīng)EH的數(shù)值會逐漸趨近于零(因為地形變化無規(guī)則,高程不一定是單方向趨近于零)。當(dāng)計算出的EH數(shù)值小于零值時,說明選點M超過火點F在OG上的投影點D,這時退回上一次的選點,開始每隔100 m繼續(xù)向前取點計算,直到再次計算出的EH數(shù)值小于零為止,這時得到的OM數(shù)值誤差在100 m范圍內(nèi)。為了更加精確,采用二分法確定火點位置D。再求解D點對應(yīng)的坐標(biāo)值:x=OD×sinα,y=OD×cosα。
最后,根據(jù)O點的經(jīng)緯度和D點坐標(biāo),計算出D點的經(jīng)緯度坐標(biāo)。
通過M點逐漸前移,直到逼近D點的每個高程MH的數(shù)值,可以通過求出M點的直角坐標(biāo)位置,再根據(jù)O點的經(jīng)緯度,計算出對應(yīng)該點的經(jīng)緯度。
如圖2所示,在平面像素坐標(biāo)與立體空間坐標(biāo)之間建立映射,圖像實際寬度為w,像素坐標(biāo)為wx個像素;圖像實際高度為h,像素坐標(biāo)為hx個像素。圖像左上角為零點坐標(biāo)位置,水平方向為x像素坐標(biāo),垂直方向為y像素坐標(biāo)。假設(shè)火點圖像位于P(x,y)像素點,攝像機的水平視場角為θw,垂直視場角為θh,定焦攝像頭焦距為f。如圖3所示,根據(jù)定焦攝像機成像原理[6],在直角三角形BOD中,可以計算出圖像實際高度。
OB=OD×tan(θh/2);h/2=f×tan(θh/2);
h=2×f×tan(θh/2)。
圖2 火點圖像P(x,y)位于像素坐標(biāo)任意位置
圖3 定焦攝像機成像原理
在圖3中,OA/OB的實際比值等于它們的像素比值,即:OA/OB=(hx/2-y)/(hx/2);OA/(h/2)=(hx-2×y)/hx;OA=h×(hx-2×y)/(2×hx)。
攝像機光軸沿垂直方向如果要調(diào)整到與火點同一水平位置時,需要調(diào)整的角度為Δy。在直角三角形AOD中:tan(Δy)=OA/OD;tan(Δy)=h×(hx-2y)/(2f×hx)/f=h×(hx-2y)/(2f2×hx)。
再通過求反三角函數(shù)即可獲得Δy角度數(shù)值,Δy即為火點垂直調(diào)整的角度數(shù)。如果火點像我們假設(shè)的一樣位于中心點的左上方,則火點俯仰角應(yīng)該調(diào)整為β-Δy。如果火點位于圖像中心點的右上方、左下方、右下方,可以做對應(yīng)的處理。區(qū)別在于火點位于圖像中心水平線EF(見圖2)以上時,調(diào)整角度是減??;而火點位于圖像中心水平線EF以下時,調(diào)整角度是增加,既β+Δy。
同理,可以求得攝像機光軸沿水平方向旋轉(zhuǎn)到P點的角度數(shù)為:tan(Φ)=w×(wx-2×x)/(2×f2×wx)。這里使用了Φ而不是Δx表示角度,因為這里獲得的Φ不是水平旋轉(zhuǎn)角需要調(diào)整的角度,通過計算得到水平旋轉(zhuǎn)角需要調(diào)整的角度Δx。
圖4 火點沿垂直方向調(diào)整到圖像中心水平線的位置
如果CD//OM,F(xiàn)點是實際火點,則FC⊥CD,F(xiàn)C⊥BC,即FC垂直于過C點的任何線段,也就是說FC垂直于平面BCD??梢钥闯?,調(diào)整后的俯仰角為β-Δy。
根據(jù)火點圖像位于正中心位置的計算,C點的投影M距離O點的距離OM,以及獲得C點的高程CM。在直角三角形BCD和平行四邊形ODCM中:CD=OM,BC=CD/cos(β-Δy)。
在直角三角形BCF中,CF=BC×tan(φ)=CD/
cos(β-Δy)×tan(Φ)。
在直角三角形CDF中,tanΦ=CF/CD=(CD/cos(β-Δy)×tan(Φ))/CD=tan(Φ)/cos(β-Δy),即得tan(ΔX)=tan(Φ)/cos(β-Δy)。求解反三角函數(shù),可以得到ΔX的度數(shù)。
同理,如果火點像位于中心點的左上方,則火點水平旋轉(zhuǎn)角應(yīng)該調(diào)整為α-ΔX。如圖2所示,如果火點位于圖像中心點的右上方、左下方、右下方,可以做相應(yīng)的處理。區(qū)別在于火點位于圖像中心垂直線BC左邊時,調(diào)整角度是減?。欢瘘c位于中心垂直線BC右邊時,調(diào)整角度是增加(α+ΔX)。
根據(jù)火點P需要調(diào)整的角度Δx和Δy,即可計算出火點圖像位于圖像任意點時的經(jīng)緯度數(shù)值[6]。
如圖1所示,不管火點圖像位于正中心,還是位于其他圖像位置,通過已知O點和火點F的經(jīng)緯度,計算出OD的距離,并通過F的經(jīng)度緯度查閱地圖數(shù)據(jù)得到F點的高程DF。在直角三角形BFJ中,tan(γ)=BJ/FJ=(OB-OJ)/OD=(OB-DF)/OD,tan(β)=(OB-DF)/OD,再通過反三角函數(shù)計算得到β,求得俯仰角。
已知O點和D點的經(jīng)緯度,取經(jīng)度相等,都等于O點的經(jīng)度,即OY軸(正北),就可以通過已知兩點經(jīng)緯度數(shù)值計算出D點在OY軸上的坐標(biāo)長度OV。同理,再取緯度相等,都等于O點的緯度,即OX軸,可以計算出D點在OX軸坐標(biāo)長度OW和OV。
在直角三角形ODV中,tan(α)=DV/OV=OW/OV,通過反三角函數(shù)求得α。
選擇VC++2010編程實現(xiàn)算法,項目甲方提供數(shù)據(jù)為:瞭望塔經(jīng)度117.421 123°,瞭望塔緯度26.910 223°,山頂高程為564 m,塔高為31.2 m。
用提供的旋轉(zhuǎn)角和俯仰角計算出火點坐標(biāo)的經(jīng)緯度,通過計算出的經(jīng)緯度重新驗證旋轉(zhuǎn)角和俯仰角。甲方提供的11組數(shù)據(jù)測試的結(jié)果見表1。
表1 甲方提供的11組數(shù)據(jù)測試結(jié)果
注:表中的火點都不在圖像中心。
利用谷哥地圖在陜西乾縣乾陵附近選擇實際的觀測點,瞭望塔經(jīng)度為108.202 543 258 7°,瞭望塔緯度為34.586 796 211 71°,山頂高程為859.19 m,塔高為31.2 m。
用Google地圖上實際的經(jīng)緯度坐標(biāo)計算出攝像頭的旋轉(zhuǎn)角和俯仰角,通過計算出的旋轉(zhuǎn)角和俯仰角重新驗證經(jīng)緯度坐標(biāo)。甲方提供的3組數(shù)據(jù)和Google地圖上選擇的10組數(shù)據(jù)的測試結(jié)果見表2。
表2 甲方提供的3組數(shù)據(jù)和Google地圖上的10組實際數(shù)據(jù)的測試結(jié)果
注:表中的火點都位于圖像中心。
由表3可知,本文算法計算出的旋轉(zhuǎn)角誤差和俯仰角誤差明顯優(yōu)于參考文獻[1];經(jīng)度誤差和緯度誤差優(yōu)于參考文獻[3]的第一批數(shù)據(jù),較好于參考文獻[3]的第二批數(shù)據(jù)結(jié)果;距離誤差略高于參考文獻[1]的計算結(jié)果。本文沒有對所測試的數(shù)據(jù)進行篩選,且所有數(shù)據(jù)可以重復(fù)計算,算法計算時間0.02 ms左右。
表3 三種算法測試結(jié)果比較
本文森林火點定位算法的特點是摒棄掉原來一般算法中經(jīng)常使用的參考視窗,簡化了算法,降低了算法的復(fù)雜度,減少了中間計算環(huán)節(jié),避免了多次計算的累積誤差,提高了計算的精度,壓縮了程序運行時間。使用不同地區(qū)的40多組數(shù)據(jù)進行測試,計算出的火點位置誤差范圍在12~95 m,平均誤差為48 m。