劉 松,陳啟村,楊洪臣
(1.四川警察學院 四川瀘州 646000;2.東莞市公安局虎門分局 廣東東莞 523900 3.中國刑事警察學院 遼寧沈陽 110854)
傳統(tǒng)的事故現(xiàn)場測量手段是通過人工拉皮尺測量現(xiàn)場數(shù)據(jù)后,再人工完成現(xiàn)場圖草圖及現(xiàn)場比例圖。傳統(tǒng)的事故現(xiàn)場測量方法存在著測量效率低下、測量誤差較大、且測量工作可能影響事故地點車輛的正常通行,容易造成二次的交通事故;當事后需要補充事故現(xiàn)場的相關測量數(shù)據(jù),很難再次測量[1-2]。
于是有人提出基于攝影原理利用現(xiàn)場攝影圖像進行攝影圖像校正的測量方式。該方法主要是在場景中標定4點,通過場景點和成像點的對應關系找到點和點間的映射關系,進而找到場景平面和成像平面間任意點的映射關系[3]。基于這樣的原理,有公司推出了如PC—RECT、PhotoModeler、iWitness和123D Catch等魯棒好的攝影圖像測量分析軟件[4-7]。該類軟件實現(xiàn)了現(xiàn)場重建“平面到平面”的二維校正算法,可用于一般平面現(xiàn)場數(shù)據(jù)的測量。該方法具有簡單、快捷和信息可重建等優(yōu)點。但是其測量的數(shù)據(jù)受照片拍攝時攝影位置,角度的影響較大。當攝影傾角越小時校正測量的誤差越大。而且該類方法需要在拍照時在場景中加入4個校正面板,也有一定的局限性。
隨著無人機技術的發(fā)展,各類無人機廣泛應用于生產(chǎn)生活的方方面面。將無人機應用到現(xiàn)場拍攝上已成為可能,運用無人機對現(xiàn)場進行拍攝,可以簡單高效的拍攝到現(xiàn)場不同位置角度的圖像。同時經(jīng)無人機拍攝的照片在其頭部exif包含著拍攝時相機焦距,拍攝點高度及照片的分辨率等信息,利用攝影成像原理可以實現(xiàn)一種基于無人機的的場景測量方法。該方法需要無人機對場景進行垂直攝影但無需在場景中布置校正面板。該方法具有操作簡單,效率高,精度準,現(xiàn)場重現(xiàn)能力強等優(yōu)勢。該類現(xiàn)場測量方法在能配備無人機等相關設備的公安實戰(zhàn)部門具有較強的應用價值。提高了公安工作效率的同時,增強了工作的有效性。
無人機現(xiàn)場測量是通過無人機對現(xiàn)場目標進行垂直拍攝得到相關現(xiàn)場照片;然后通過計算機程序實現(xiàn)對照片exif信息的讀取,自動得到與相片相關拍攝高度,焦距及分辨率等相關信息;最后利用攝像原理通過“平面到平面”映射實現(xiàn)現(xiàn)場的快速測量。算法流程如圖1:
圖1 算法流程圖
exif是存儲在JPEG格式數(shù)碼圖片頭中描述圖片拍攝時的焦距、分辨率及GPS全球定位系統(tǒng)數(shù)據(jù)等信息的一種圖像文件格式。如圖2(a)是圖2(b)的exif信息。
圖2 無人機垂直拍攝現(xiàn)場圖(a.原圖exif信息b.原圖)
從圖2(a)可以看到圖2(b)垂直拍攝35mm等效焦距為20mm、高度為143.276m、圖像分辨率為4000*3000dpi。
運用python語言進行程序編寫可實現(xiàn)圖片exif信息的自動提取。然后進一步利用圖片相關exif信息實現(xiàn)“平面到平面”的映射完成現(xiàn)場測量。
相機成像利用了凸透鏡成像原理(凸透鏡成像原理如圖3所示),遠處距離為u的物體散射光線經(jīng)凸透鏡折射成像在凸透鏡另一側v處,經(jīng)推導物距u、像距v和透鏡焦距f之間有成像公式(1):
圖3 凸透鏡成像原理圖
無人機在高空垂直俯拍時,相機成像有如圖(4)的幾何比例關系。其中cmos成像長度為dist_cmos、真實場景長度為dist、拍攝高度為u(垂直高度可視為相機凸透鏡與拍攝物的物距u)、攝像機35mm等效物距為v則有公式(2)關系:
圖4 無人機成像場景圖
圖4中cmos影像和照片影響之間依然存在著幾何比例關系。通過將相機cmos等效為35mm效果,cmos成像長度dist_cmos同分辨率為photo_width*photo_height照片成像長度dist_photo有公式(3)關系:
利用透視鏡成像原理,并分析無人機高空垂直攝影時真實成像長度dist、cmos成像長度dist_cmos及照片成像長度dist_photo之間存在的幾何關系,得到了上述公式(1)~公式(3),整合公式(1)~公式(3)并整理公式可以得到真實成像長度dist的計算公式(4):
其中,u為物體到透鏡的距離即無人機垂直攝影時的垂直高度,f為35mm等效cmos焦距,Scmos_35mm為35mm等效cmos感光器件面積,photo_width為照片寬度,photo_height為照片高度。以上參數(shù)經(jīng)1.1節(jié)介紹的exif信息均可直接獲得。而dist_photo可通過點取照片中待測量線段兩個端點(x1,y1)和(x2,y2)并計算兩點歐式距離獲得。dist_photo的計算有公式(5):
在第二章的理論推導基礎上,運用python語言讀取圖片exif頭部信息并提取到35mm等效焦距、圖像高寬、拍照高度等信息,通過交互獲取照片中測量線段端點坐標。最終根據(jù)公式(4)、公式(5)計算出實際場景中對應線段長度。
為驗證本文現(xiàn)場測量算法的可行性及算法精度,實驗對無人機垂直拍攝籃球場場景進行測量,拍攝圖片如圖2(b)所示,讀取到圖片相關exif信息結果如前文所述,不在累述。
照片中實際籃球場的長為28m,寬為15m,中圈直徑3.6m,跑道寬度1m。對場景中上述對象運用本文現(xiàn)場測量算法分別進行三次測量計算每次測量的測量誤差及誤差率(表1記錄了本文測量算法對籃球場長、籃球場寬、籃球場中圈直徑及跑道寬進行測量的情況)。
表1 現(xiàn)場測量結果分析表
應用python語言實現(xiàn)本文算法對無人機垂直俯拍標準籃球場及跑道場景照片中的不同尺度對象進行測量,觀察表1中的實驗測試結果可以得出本文現(xiàn)場測試算法進行測量的結果是比較準確的且本文現(xiàn)場測量算法對無人機空中垂直俯拍的情況下得到的照片只需點擊照片中待測量對象首尾端點即可快速得到測量結果,相對傳統(tǒng)現(xiàn)場測量方法具有操作簡單,測量效率高等優(yōu)勢。
本文對圖片2(b)照片中不同尺寸的對象運用本文場景測量算法進行了多次測量并將實驗錄制成視頻,可通過掃描圖5中的二維碼觀看實驗效果。
圖5 實驗視頻
本文對運用無人機垂直拍攝現(xiàn)場進行測量展開了研究,通過自動提取無人機拍攝照片中的相關參數(shù)并運用透鏡成像原理及無人機拍攝中“平面到平面”的映射關系理論推導出了一種基于無人機的現(xiàn)場測量算法。通過python語言將算法加以實現(xiàn)并進行了相關實驗,證明了本文現(xiàn)場測量算法具有測量準確,操作簡便,測量效率高等優(yōu)點。該現(xiàn)場測量算法在公安現(xiàn)場測量領域具有一定的應用價值。