數字城市三維模型是個勞心勞力的體力活,前期需要外業飛行人員投入繁瑣細緻的準備工作,講究一個天地人和,才能抓住少有的時間窗口,在截止期限的壓力前,內業的催促下,採集整個測區的有效數據。當幾十上百G新鮮出爐的影像被送進機房,內業工作人員帶著十二萬分的緊張和期待,調配所有的計算資源,安裝調試好軟硬體環境。從此內業處理的徵程開始了!
傾斜空三可以說是三維建模的關鍵步驟,是重中之重的環節。傾斜影像空三是指解算相機參數、影像位置和姿態,以及加密點三維坐標的過程。傾斜影像空三整體流程主要分為影像特徵點提取與匹配、構建自由網以及帶控制數據的傾斜影像光束法區域網平差的三個步驟,空三處理的效果決定我們後期處理效果。
然而,當我們在實際生產過程中,往往會遇到軟體空三運行完成後,空三結果出現斷裂、分層、彎曲等等現象,即使最後通過人工幹預,也是耗費大量的心力!
對於空三結果的「測不準原理」。首先我們先了解一下常見的傾斜空三算法SFM(structure-from-motion)原理,從原理找到現象的本質。
SFM(structure-from-motion)算法
SFM(structure-from-motion)算法是一種基於各種收集到的無序圖片進行稀疏三維重建的離線算法。首先從圖片中提取焦距信息,然後利用SIFT等特徵提取算法去提取圖像特徵,用kd-tree模型去計算兩張圖片特徵點之間的歐式距離進行特徵點的匹配,從而找到特徵點匹配個數達到要求的圖像對。對於每一個圖像匹配對,計算對極幾何,估計F矩陣並通過ransac算法優化改善匹配對。這樣如果有特徵點可以在這樣的匹配對中鏈式地傳遞下去,一直被檢測到,那麼就可以形成空三連接點。
為了識別和描述圖像中的目標,需要從圖像中提取出與目標相聯繫的特徵。利用這些特徵可以從眾多背景目標中識別出所需目標。
為了確保準確無誤地識別出目標,要求在各種視角、光照、距離以及噪聲條件下仍然可以準確地進行匹配。
在SFM部分,關鍵的第一步就是選擇好的圖像對去初始化整個自由網構建過程。首先對初始化選擇的兩幅圖片進行第一次(Bundle Adjustment,平差),然後循環添加新的圖片進行新的BA,最後直到沒有可以繼續添加的合適的圖片,BA結束。得到相機估計參數和場景幾何信息,即稀疏的3D點雲。
SFM流程如下:
不同的三維軟體採用的算法往往不太一樣,但是大多數算法都會參考一些比較經典的算法或者是在其基礎上進行創新的。從算法原理角度分析,可以推測出軟體空三結果出錯或是無法成功的原因可能來自如下方面:
1、三維軟體空三算法對光照變化比較敏感。同一個測區,不同時段拍攝的影像,因天氣、光照變化導致影像色彩存在一定差異時,會導致空三匹配不穩定,從而導致空三失敗。這樣會導致空三結果出現斷裂的情況,如下圖所示:
2、傾斜影像數據量往往比一般正射數據量大很多倍。我們常用的三維空三軟體處理海量的大數據時,為了提高生產的效率,採用對數據進行分塊、逐塊空三、最後合併的策略,但是其空三合併功能仍有待提高穩定度,並且往往進行並行空三時,只對特徵點提取和匹配兩個步驟進行了並行化處理,對於耗時大的自由網構建步驟並未有效並行化;所以導致合併後的空三結果出現問題。
同時,有些軟體的區域網平差未有效利用航帶信息。航空攝影時,GPS位置往往存在按航帶分布的系統誤差,稱為航帶誤差。
在經典的GPS輔助平差時,往往需要對航帶誤差進行改正,如果軟體沒有進行此處理,故往往無法獲得高精度平差結果。另外,進行航帶改正的另一個優勢是當控制點的坐標系和GPS的坐標系不相同時(如分別為2000和WGS84時),可通過航帶誤差改正的方式使二者在平差中高精度對應,進而獲得高精度平差結果。缺少了利用有效的航帶信息,有時候就會導致平差後的結果雜亂無章。如下圖所示:
三維模型從數據採集到生產,涉及多部門、多人員協作,使用軟體進行數據處理時已經走到了整個鏈路的尾部,同時也是理論上風險最可控成本最小的一環。
從現實角度出發,我們無法要求外業人員保證在特定光照、天氣、時段來進行數據採集,又或者按照軟體處理的最理想方式進行測區分塊和航帶設計,外業數據採集總是會有一定的不確定性,這些漏洞的彌補,就壓在內業處理上,因此,數據處理軟體的選擇往往就會決定了我們作業的效率以及效果了。
目前國內三維數據生產中,比較有代表性的技術軟體有Smart 3D、ContextCapure、Photoscan、Pix4DMapper、街景工廠等。那麼,當我們在這些常用的軟體處理海量傾斜數據時,遇到了空三結果斷裂、分層、彎曲等問題時,我們一般都是怎麼處理的呢?
(1)首先會根據高度不同而分開空三,另外也要考慮拍攝時間過長導致拍照時有陰天晴天等差別,如果這種光線的差別較明顯也有必要區分開來,比如定義到不同的組別裡。空三的運算的第一步就是解算同名點,即匹配多張照片中同一物體的位置信息。像田地、海水等等紋理不明顯的物體來說,解算同名點比較困難,需要在邊界處人為多定義一些控制點。另外如果結果顯示的模型大小形狀基本匹配,而只是方向傾斜的話,可以在空三前另外定義幾個一些連接點來控制方向。
(2)選擇多次進行空三,藉助多次失敗積累的經驗反覆調整參數,或者常需反覆人工幹預,比如手工添加連接點之類的,從而得到比較合適的結果。
(3)可以先使用相關軟體進行初始空三結果,將空三結果作為初值導入三維軟體中,再次空三計算,提高空三的成功率。
通過以上的操作。我們一定程度提高空三成功率,減少失敗的次數,但是治標不治本,本質還是無法解決傾斜空三的問題,並且會消耗掉我們大量的時間,可以說是「無可奈何數據多,似曾相識效果差」。
俗話說的好,數據千千萬,卻是各有各的不同啊。在處理傾斜空三時,我們的確會遇到各種各有的數據問題,使用單一的軟體或許可以完成我們的生產任務,但是會耗費大量的精力和時間。隨著傾斜攝影的發展,處理傾斜影像的相關軟體也是越來越多。但是,想要讓我們的數據生產更加的優化,到達更好更快的效果的話,往往會需要多種類型軟體進行搭配使用了,立足找到一套最優的生產技術路線。
END
社群交流 / 原創投稿 / 商務
(請添加下方小家微信:mysurvey)
來源:廣州君和
↓↓↓點擊下方「閱讀原文」查看更多精彩內容...