楊博雄 黃鑫 周波 李社蕾 楊婷婷 梁志勇
(1.三亞學院信息與智能工程學院,海南三亞 572022;2.三亞學院陳國良院士工作站,海南三亞 572022)
無人機傾斜攝影測量進行地面和空間信息采集時,野外像控點目標選擇的好壞和指示點位的準確度直接影響測圖成果的精度[1-2]。像控點首先需要包圍測區(qū)邊緣以控制測區(qū)范圍內(nèi)的位置精度,需要在傾斜攝影測量前按無人機飛行航線統(tǒng)一提前布設,以提高刺點精度,增強外業(yè)控制點的可靠性[3-4]。在實際中,航攝區(qū)域未必都有合適的像控點,為保證成圖精度,一般會在航攝前采用紅色油性噴漆在地面敷設人工標志或者木板、硬紙板等制作標靶板來提前布置像控點。當?shù)孛嫦窨攸c標志設置成功以及無人機傾斜攝影測量外業(yè)采集完成之后,測圖任務進入內(nèi)業(yè)數(shù)據(jù)處理時,對像控點進行刺點是一項重要的工作[5-6]。在空三計算加密過程中,像控點的刺點誤差需控制在一個像元內(nèi)才能進行下一步的處理[7-8]。但是目前內(nèi)業(yè)刺像控點還主要停留在人工作業(yè)層次,需要從大量的傾斜影像中逐點去找,極大地降低了實景三維建模和測圖的工作效率。
在傾斜攝影測量相機拍攝的高清影像數(shù)據(jù)中,地面像控點目標在整個圖像中很小,如圖1,像控點目標相對于整張影像的尺寸及其微小,要想利用圖像識別算法自動從海量傾斜影像中找到包含有像控點的圖像十分困難。

圖1 傾斜影像中的地面像控點Fig.1 Ground image control points in tilted images
YOLO(You Only Look Once)是一種采用卷積神經(jīng)網(wǎng)絡來實現(xiàn)端到端目標檢測的方法[9]。由于YOLO的目標檢測網(wǎng)絡僅支持處理1024×1024像素大小的三通道圖像,而當前傾斜攝影測量拍攝的高清影像達5000×5000像素以上,因此YOLO目標檢測算法對于輸入圖像的尺寸有局限性,超過規(guī)定尺寸的圖像不可直接應用于高清航攝的圖像處理中[10]。
為此,本文對傾斜攝影測量原始影像進行處理,將整張圖像轉(zhuǎn)換為多張1024×1024像素的分割子圖像,將分割后的圖片放入內(nèi)存中,作為能夠輸入到Y(jié)OLO檢測框架進行預測的子圖。然后利用滑動窗口循環(huán)調(diào)用YOLO目標檢測框架進行目標檢測。檢測后框信息也存在內(nèi)存的特定數(shù)據(jù)結(jié)構(gòu)中,同時重寫檢測框的繪制機制,將存于數(shù)據(jù)結(jié)構(gòu)的目標框數(shù)組中每一個預測框的位置、大小信息讀取后統(tǒng)一繪制檢測框[11]。
如圖2。首先給定滑動窗口的長寬、正交方向步進值,通過簡單的數(shù)學計算可以獲取每一次滑動窗口截取到的圖像像素位置。遍歷順序為先遍歷行,再遍歷列。其遞歸終止條件是每一次遍歷到行尾后判斷是否還有下一行以及每一次換行需判斷是否為最后一行。1、2、3分別代表同一個滑動窗口的不同時刻,從圖中可以看出,當進行到2階段時滑動窗口可以檢測到目標,此時對此滑動窗口中的像素值進行灰色覆蓋,保證滑動窗口在3階段時不會重復檢測目標。

圖2 基于滑動窗口的像控點搜索Fig.2 Image control point search based on sliding window
對于切割出來的每一個小圖,使用YOLOv3 模型進行預測。通過重寫YOLO 框架的代碼獲得目標檢測框的坐標、長寬、置信度信息,將此信息存于內(nèi)存中,待所有小圖檢測完畢后,開始循環(huán)遍歷內(nèi)存中的信息,獲取信息后調(diào)用繪制代碼進行目標檢測框的繪制。
1.2.1 數(shù)據(jù)集
本文選取傾斜影像數(shù)據(jù)共5826張圖片,其中無像控點圖片和有像控點圖片均存放于同一目錄,并存在多張圖片指向同一個L型像控點圖片的情況。訓練集來自對5826張圖片中包含像控點目標圖片的裁剪(416×416像素),共75張,部分圖片如圖3。

圖3 目標圖片裁剪Fig.3 Target image crop
1.2.2 檢測過程
實驗采用64位Windows10 Pro操作系統(tǒng),利用NVIDIA GeForce GTX 1060加速,整個實驗過程分4步。
(1)數(shù)據(jù)標注:基于Pascal VOC 2007數(shù)據(jù)集格式,使用416×416三通道的圖片,共計75張,作為訓練數(shù)據(jù)集,并通過LabelImage軟件對所有數(shù)據(jù)集中的像控點目標進行標注,標注類別僅包含“L”類。
(2)模型訓練:將標注好的數(shù)據(jù)用于模型訓練,等待模型訓練完成,訓練過程中將會生成多個模型文件,擇優(yōu)選擇靠后訓練出的最優(yōu)模型作為預測模型。
(3)模型預測:將訓練好的最優(yōu)模型放到指定的文件目錄,并運行代碼進行預測。代碼的入口函數(shù)傳入滑動窗口的相關(guān)配置參數(shù)如表1。

表1 滑動窗口配置參數(shù)Tab.1 Sliding window configuration parameters
本文使用x=208,y=208,sw=416,sh=416 的滑動窗口配置參數(shù),運行入口函數(shù)開始自動預測。預測完畢后封裝有效、完整的round_list數(shù)據(jù)結(jié)構(gòu),其長度代表所有滑動窗口切割圖片的數(shù)量。
(4)鼠標刺點:當程序的圖片預測運行完畢后,會自動彈出刺點操作界面來供用戶手動點擊鼠標進行精確的像控點刺點。刺點操作界面顯示的是滑動窗口所截取的圖片,該滑動窗口圖片成功檢測到了像控點目標,包含了完整的像控點圖像。程序彈出多次操作界面,數(shù)量取決于整張預測大圖包含的像控點數(shù)量。
1.3.1 實驗結(jié)果
本文使用416×416像素大小滑動窗口,正交方向步進值為208像素,對一張745×479大小的三通道圖片進行預測,并完成鼠標刺點操作。算法自動標注出檢測框,并顯示出精確的刺點圖片坐標,如圖4。

圖4 像控點搜索與自動標注Fig.4 Image control point search and automatic labeling
實驗相關(guān)耗時數(shù)據(jù)如表2、表3、表4所示。

表3 模型預測耗時(CPU)Tab.3 Model prediction time (CPU)

表4 模型預測耗時(GPU)Tab.4 Model prediction time (GPU)
1.3.2 實驗分析
當前傾斜攝影測量相片較大,本文中所用實驗相片高達6000×6000。而一個標準的像控點僅僅只占100×100左右的像素,占整個像面篇幅的1%左右,而且隨機分布在5826張相片中,通過人眼尋找像控點極其繁瑣,操作人員需要不停地放大、縮小圖片來搜尋像控點。使用本文所述方法,經(jīng)過前述目標搜索和查找后,自動將包含有像控點的圖像通過數(shù)據(jù)結(jié)構(gòu)集中起來,程序可直接顯示出像控點所在位置的圖片,用戶通過刺點程序,循環(huán)在刺點界面手動點擊鼠標進行精確刺點,刺點操作的重復次數(shù)僅取決于像控點數(shù)量,省去了人工尋找像控點和人工縮放打點標注的繁瑣流程。
本文巧妙利用YOLO 算法進行目標檢測,并使用滑動窗口法進行像控點目標的搜索。同時設計像控點自動刺點程序進行自動刺點和像素坐標記錄與標注。實驗結(jié)果顯示,通過本文所提出的方法可以完成圖像群搜索,并能迅速找到像控點圖像以及自動識別像控點,大大提高了傾斜攝影測量的建模效率。