無人機影像的空間三維建模:Pix4Dmapper運動結構恢復法

瘋狂學習GIS發表於2023-12-09

  本文介紹基於Pix4Dmapper軟體,實現由無人機影像建立研究區域空間三維模型的方法。

  前面兩篇部落格分別基於不同軟體、不同方法,詳細講解了空間三維模型建立的過程:物體三維模型的構建:3DSOM軟體實現側影輪廓方法介紹了基於3DSOM的側影輪廓方法物體空間三維模型重建,空間三維模型的編碼結構光方法實現:基於EinScan-S軟體介紹了基於EinScan-S的編碼結構光方法物體空間三維模型重建。

  那麼本次,綜合以上兩篇部落格所提到的方法與原理總結,我們就將進行更進一步的空間三維建模實踐——基於若干無人機航拍影像,藉助Pix4Dmapper軟體,完整建立研究區域的空間三維模型。

  本文所用的軟體:Pix4Dmapper 4.3.31軟體、ArcMap 10.2軟體、Microsoft照片2020軟體。

1 背景知識

  透過上方提及的兩篇部落格,我們瞭解了空間三維模型重建的側影輪廓方法與編碼結構光方法,並對兩種方法加以分析、比較;其中,側影輪廓方法為一種被動方法,編碼結構光方法則為主動方法。隨著21世紀後全球城市化快速發展,針對城市或某一空間區域的室外大範圍場景三維模型重建具有較大應用需求[1]。由於主動方法成本相對較高,操作整體較為複雜,難以進行大規模複雜場景掃描[2],在城市或空間區域三維建模應用中將受到限制;而側影輪廓方法則無法獲取目標物體表面部分細節資訊。

  本文中,我們將詳細介紹一種新的被動方法——運動結構恢復(Structure From Motion,SFM)方法,其可較好地對自然地形、城市景觀等大規模場景進行三維重建[2],目前已廣泛應用於礦廠等大範圍區域管理、農業、災害治理,以及文物修復等多領域[3-6]。

1.1 運動結構恢復方法原理

  運動結構恢復方法由整體觀之,即利用運動相機(如處於飛行狀態無人機所攜帶攝像機)所拍攝若干不同角度二維影像,解算相機引數,恢復得到三維點的空間位置[3]。其中,這一方法的知識基礎包括相機成像模型、相機標定與多視幾何等[1]。以下先分別對各知識基礎所對應原理加以描述,並最終將各獨立部分結合,得到運動結構恢復方法的完整原理。

  在計算機視覺中,最常用的相機成像模型即小孔成像模型[7]。小孔成像原理如圖1所示。

圖1 小孔成像原理示意圖

  其中,obj為目標物體,H為小孔,W為成像屏,f為焦距。

  由圖可知,小孔成像所得結果為倒像;若將成像屏置於小孔前側(靠近目標物體一側),且距離小孔距離依然為一個焦距長度,則可使得小孔成像結果與原物體方向一致,如圖2所示。

圖2 小孔成像(正像)原理示意圖

  與上述兩篇部落格類似,在運動結構恢復方法中,同樣需要牽涉到目標物體真實三維空間與二維影像空間之間座標系的轉換;這一過程牽涉到如下四種座標系[3]:

  1)世界座標系。世界座標系即人類所處現實世界構成的座標系,其中每一物體、每一位置都有唯一座標表示。

  2)相機座標系。相機座標系依據相機位置定義,以相機光心為座標原點,X軸與Y軸分別平行於像平面座標系X軸與Y軸,將與光軸重合的直線作為相機座標系Z軸。

  3)影像物理座標系。影像物理座標系即像平面座標系,以相機座標系Z軸與影像所在平面交點為原點,X軸與Y軸分別平行於影像兩對應邊緣;儘管與下方畫素座標系所表示均為影像上位置,但影像物理座標系以物理單位表示這一位置。

  4)畫素座標系。畫素座標系以影像畫素為單位,以矩陣形式表示影像畫素位置。

  其中,影像物理座標系與畫素座標系均表示影像上某一點的位置資訊,因此可能較易混淆;針對二者的區別,如圖3所示。

圖3 影像物理座標系與畫素座標系對比

  圖中,O_1為影像物理座標系原點,x與y為影像物理座標系座標軸;O_0為畫素座標系原點,u與v為畫素座標系座標軸;黑色與紅色線段組成區域為影像區域。其中,影像物理座標系單位為毫米,畫素座標系單位為畫素[3]。由此即可看出,二者為影像中各位置的不同表達方式。

  上述各座標之間均具有一定轉換關係,目標物體表麵點位置的確定即為上述各座標間相互轉換的過程。

  在座標系轉換過程中,需涉及投影矩陣;而投影矩陣則由相機外部引數與相機內部引數組成[3]。其中,相機內部引數由相機內部結構決定,包括相機焦距、像主點座標、畫素大小等。一般地,相機內部引數由相機定標得出——即找到影像二維座標與空間三維座標的對映關係,亦即計算得出各影像對應相機引數[3];相機定標技術可分為傳統標定法與相機自標定法[3],在上述兩篇部落格中我們對相機定標已有接觸。

  相機外部引數指相機在拍攝過程中的運動引數,用以描述相機位置、姿態資訊;透過其可以恢復影像拍攝時相機的運動軌跡與姿態資訊。一般地,分別利用特徵點提取與匹配演算法與對極幾何原理獲取匹配點畫素座標與相機旋轉矩陣、相機平移向量。

  基於上述匹配點畫素座標與相機旋轉矩陣、相機平移向量,再結合前述由相機標定獲取的相機內部引數矩陣,即可組成投影矩陣,從而將全部二維畫素座標對映至三維空間座標,生成三維點雲,恢復研究區域空間三維場景模型。此外,為緩解噪聲或誤差帶來的影響,可對上述生成的空間三維座標加以最佳化,提升其精度。

  傳統運動結構恢復方法所選用最佳化方法為光束平差法(Bundle Adjustment,BA),以其計算重投影誤差,並最小化重投影誤差函式,從而最佳化相機引數與目標物體各點空間三維座標。光束平差法認為,空間內部任意物體點,其所對應不同檢視的畫素點與相機光心連線都相交於一點,且這一點即該物體點;基於此,對於空間內部全部物體點,應具有大量光束。而由於噪聲的存在,使得應相交於一點的光線往往未相交於一點。因此,不斷調整相應引數,選擇不同待求資訊取值,以使得光線相交於一點,從而實現降低重投影點與實際畫素點之間的距離誤差[3]。

  綜上所述,可將各獨立原理綜合,得到三維模型重建運動結構恢復方法的較為完整機理——運動結構恢復方法首先利用小孔成像等相機成像模型,獲得目標區域一定數量的二維影像;隨後利用相機定標以及其它演算法,獲取相機內部引數與外部引數;基於相機內部引數與外部引數所組成的投影矩陣,藉助四種座標系之間的轉換規則,將二維影像中特徵點對映至三維空間座標系,形成三維點雲;最終利用最佳化後的三維點雲,對區域空間三維場景特徵加以描述,實現目標區域的空間三維模型重建。

1.2 運動結構恢復方法流程

  其實,前述部分針對運動結構恢復方法的原理探討,已將這一空間三維模型重建方法的大致流程展示出來。在此,對上述流程加以具體歸納,展示如圖4所示。

圖4 運動結構恢復方法流程

2 軟體與資料準備

  本文需要藉助Pix4Dmapper軟體,對大量無人機航拍影像所組成的空間系統進行三維模型重建。因此,在正式開始本次操作部分前,需完成初始資料與軟體的準備。

  本部分結合Pix4Dmapper 4.3.31軟體安裝與目標研究區域選取、無人機影像資料獲取等,對本文操作的前期準備工作,所遇到的問題以及相應解決方案加以總結。

  需要注意的是,Pix4Dmapper軟體的安裝並不是本文的重點,這裡也只是大概記錄了我在安裝軟體時出現的一點問題,而非詳細的軟體安裝教程;詳細的安裝方法大家百度即可。另一方面,本文的資料由於並不是我的,因此本部分對資料的介紹亦比較模糊,且資料也不能夠一併提供給大家,還請大家見諒。但是依據本篇部落格的思想與對操作步驟的詳細解釋,大家用自己手頭的無人機航拍圖片,可以將相關操作與分析過程加以完整重現。

2.1 軟體準備

  依據網上一位大佬部落格的內容,首先開始直接安裝軟體,如下圖所示。

  隨後發現,Pix4Dmapper軟體開始安裝一段時間後,將出現系統“使用者賬戶控制”報錯,單擊“關閉”後將自動停止軟體安裝,此外無其他選項。多次重複,這一問題依然存在。

  其中,報錯情況如下首圖所示;報錯後軟體自動停止安裝,如下第二幅圖所示。

  針對這一問題,結合相關部落格,嘗試關閉專用網路防火牆、調整使用者賬戶控制設定(如下圖所示)等,但均無效果。

  隨後查閱更多部落格內容得知,這一問題可用本地組策略編輯器加以解決。然而,發現個人電腦並無這一編輯器所對應檔案(即“gpedit.msc”檔案),因此無法開啟組策略編輯器。進一步查閱資料後得知,由於個人電腦為Windows 10 家庭中文版,預設狀態下無(或未啟用)組策略編輯器。

  因此,在網路中下載Windows 10 “gpedit.msc”檔案資源,並放置於C盤對應路徑下,發現依然無法正常開啟編輯器(開啟後為空,此處未及時截圖);進一步對比發現,可能是由於個人所下載檔案僅適用於Windows 10 專業版,與自己電腦系統不匹配導致。

  由此繼續探索,由另一部落格中找到可以使用的、用以啟用Windows 10 家庭中文版組策略編輯器的連結器配置檔案程式碼,如下圖所示。

  儲存後將其轉換為“.cmd”格式,右鍵“以管理員身份執行”,稍等片刻即可完成。隨後,即可正常開啟編輯器,如下圖所示。

  隨後,在本地組策略編輯器中調整使用者賬戶控制規則,如下圖所示。

  隨後再次安裝軟體,即可成功,如下圖所示。

  安裝後開啟“硬體獲取.exe”,配置計算機名稱並生成HWID,如下圖所示。

  其中,計算機名稱由“系統”介面獲取,如下圖所示。

  開啟“4D-Permit-4X.exe”,將HWID複製,並調整軟體期限(單位為天),如下圖所示。

  隨後,雙擊所生成的登錄檔編輯器,如下圖所示。

  以上完成全部安裝操作。最後,開啟“Pix4DTool.exe”,點選“Auto Start”,隨後開啟軟體即可;但有時這一操作會導致電腦其他軟體(如瀏覽器)連線網際網路較慢,因此亦可在開啟軟體時直接將WLAN禁用。

  軟體開啟後如下圖所示。

2.2 資料準備

  本文中,初始資料為某學校千餘個影像獲取點,每點各對應一幅無人機航拍影像。其中,多數影像大致按照西南-東北方向的標準網格模式(Regular Grid Pattern)拍攝;在校園主幹大道沿線,增設西北-東南的拍攝路徑,與前者組成雙重網格影像(Double Grid Image)。

  全部影像獲取點位置如下圖所示。

  其中,考慮到計算機效能、用時等條件限制,由上述影像獲取點中選取100個左右作為研究物件,所選納入計算區域如下圖所示。

  其中,紅色邊框內部為納入計算區域,呈現藍色的點則為落入這一區域內部的影像獲取點,共108個。上述區域詳細資訊如下圖所示。其中,為提高後期拼圖效果,研究區域應較小於納入計算區域。

  獲得研究區域內點後,將其資訊匯出,並依據點編號下載對應資料。

  至此,完成全部資料準備工作。

3 研究區域模型建立

  經過上述資料與軟體準備,即可開始研究區域的建模工作。本文操作過程所遇問題以及值得思考的問題除部分直接附於本部分外,其它附於本文第四部分。

3.1 資料匯入與配置

  開啟Pix4Dmapper軟體,選擇“新專案”,並配置專案對應名稱與路徑;如下圖所示。

  這裡需要注意,不要將專案直接建立在C盤,否則很可能由於儲存空間不足出現程式執行問題。在本文第一次執行建模操作時,就因只考慮到路徑需要簡潔(不得過長且不含中文),而疏忽了所得模型可能所佔用的大量空間,將新專案建立在C盤,從而導致第一次程式執行接近尾聲時由於無法寫入結果檔案出錯。

  隨後,將前述下載好的影像檔案匯入專案中。其中,可以將全部整理好的影像放置於同一資料夾下,並透過“新增路徑…”的方式將多張影像批次匯入新專案中。

  “選擇影像”過程如下圖所示。

  隨後,對影像座標系、相機屬性等引數加以配置,其中程式亦會給出預設引數;這些引數需要根據影像拍攝時無人機攝像機所處的狀態、所選用的座標系決定。同時還可瀏覽各影像對應經緯度、高度、位置精度、方向角度等資訊,如下圖所示。

  隨後,對輸出結果與地面控制點(Ground Control Point,GCP)座標系加以配置。預設條件下,二者對應座標系一致,以此使得建模結果與GCP同處於同一座標系中;如二者不一致,而若其對應座標系分別均存在於軟體座標系資料庫中,軟體亦將自動實現兩種座標系的轉換。

  此外,還可對座標系單位(預設為米)等加以調整。其中,若影像自身含有空間位置資訊,則可選擇自動檢測。

  此處配置如下圖所示。

  隨後,對處理選項模板加以配置。在左側選擇“標準”→“3D Maps”,軟體將自動以“3D地圖”模板進行應用處理。如下所示。

  其中,選擇“3D Maps”模板將得到3D地圖(包括點雲與3D紋理網格)、數字地表模型(Digital Surface Model,DSM)與正射拼影像(Orthomosaic)等結果;選擇“3D Models”模板將僅得到點雲與3D紋理網格結果。各類不同模板適用於不同應用。

  點選“Finish”按鈕。若此時個人電腦記憶體或磁碟空間較小,軟體會彈出相應警告提示。在我第一次執行操作時,記憶體空間與磁碟空間均彈出警告資訊,但點選“OK”後,警告資訊均消失且可繼續下一步;其中記憶體不足提示資訊如下圖所示。

3.2 第一次模型建立

  隨後進入地圖檢視。如前所述,在開啟軟體時需要關閉網路連線,而在隨後即可恢復網路連線;若此時網路恢復,則可在地圖檢視中看到研究區域及其附近的衛星影像。如下圖所示。

  開啟“處理選項”,需要選中三個選項,並配置相關屬性,如下圖所示。

  配置全部屬性完畢後,即可開始執行程式,如下圖所示。

  可以看到,在程式執行一段時間後(約20分鐘左右),即可自動彈出質量報告介面。如下圖所示。由此可知,此時程式已完成部分工作。

  儘管已彈出質量報告,但程式依然在執行,且報告中內容會逐步新增。由此可以看出,Pix4Dmapper軟體的質量報告是隨著程式執行而實時產生的;每完成一步驟,若這一步驟對應有需要寫入質量報告的內容,此報告均會自動更新。這樣的方式極大方便使用者實時跟蹤程式執行情況。

  而在另一方面,可以明顯感受到Pix4Dmapper建模程式在執行過程中(尤其是軟體執行中後期),電腦效能受到較大影響——甚至有時滑鼠移動都會產生延遲。由此亦可以看到,依據無人機拍攝影像進行空間三維模型重建,是一項十分複雜的過程。

  經過兩個小時左右的等待,發現在程式介面中下方出現類似於操作日誌的內容,其中出現“ERROR”字樣英文提示,大意為一些結果檔案無法寫入我所設定的儲存路徑內。

  此時才意識到,如前所述,在前期設定專案儲存路徑時,為保證路徑的簡潔,自己直接將其放置於C盤,而未考慮到C盤空間大小可能無法放置結果檔案。

  因此,在不斷的卡頓中艱難開啟資源管理器,發現電腦C盤甚至僅剩餘90 MB左右空間。隨後立即切回Pix4Dmapper軟體,準備取消程式執行。而此時電腦已完全無法操作;隨後,電腦即開始重啟。

3.3 第二次模型建立

  電腦重新開啟後,Pix4Dmapper軟體自然已是關閉狀態。此時發現,在結果儲存路徑中依然留有3 GB左右的剩餘結果檔案。而考慮到上一次操作在軟體執行途中強制關閉,不確定這一結果檔案是否完全,是否還可進一步利用並最終得到研究區域的正確空間三維模型重建結果;因此選擇重新建立專案,更換儲存路徑至其它空間充裕磁碟後開始執行程式。

  此處值得一提的是,電腦重啟後,可以看到C盤自動清空了10 GB左右的空間。

  其中,除專案儲存路徑外,其它屬性配置與前述第一次模型建立過程所述一致。隨後即開始第二次建模程式執行。在本次執行過程中發現,程式的“總進度條”與已執行時間或剩餘執行時間之間並無直接關係——如第二次執行開始於當日21:00左右,至當日23:00左右已達“20/23”狀態;而最終執行完畢時已是次日01:20左右。由此或許可以說明,DSM、正射影像與指數生成環節所需時間應明顯較多於初始化處理與點雲與紋理處理過程。此外,在質量報告中亦有各部分執行時間;這一討論附於本文第四部分。

3.4 模型外觀檢查與調整

  經過四個半小時左右的漫長等待,程式最終成功執行,並得到最終版質量報告,如下圖所示。

  得到空間三維模型如下圖所示。

  隨後,對所得研究區域空間三維模型加以細緻瀏覽,並嘗試對其中所具有的問題加以分析。透過檢查得知,所得模型除部分地物側面形狀具有偏差、部分建築物紋理出現混亂外,並無其它明顯問題;模型在整體地勢、建築物位置與大致形狀等方面均整體較為良好。

  其中,關於上述所得模型外觀問題、模型組成與質量報告等詳細分析附於本文第四部分。

  其中,可能會出現一些與模型其他位置相獨立等錯誤的點雲,我們可以將其刪除。選擇“Edit Densified Point Cloud”選項,用滑鼠左鍵將其圈畫,如下圖所示。

  圈畫完畢後,點選滑鼠右鍵,即可實現對圈畫區域內點的選取。所選中的點呈現紅色,如下圖所示。

  隨後,將其歸類為“Disabled”,點選“Assign”,所選擇的點即可消除,如以下兩幅圖所示(此後我將軟體語言更換為了英文,因此檢視會有一些變化)。

  當然,上述這些點並非真正完全刪除,而僅僅是沒有在檢視中展示而已——若在左側圖層中選中“Point Groups”→“Disabled”選項,即可看到此類點重現出現。

  透過上述步驟,即可將所得空間三維模型中效果較差的點或點雲加以選擇與去除。在去除過程中,發現出現這一問題的點往往集中於模型邊緣區域——這或許是由於邊緣區域點所對應無人機影像數量較少,從而其在建模過程中容易出現空間位置問題。

  完成後,退出編輯狀態,重新生成紋理,如下圖所示。

  本次執行只生成3D紋理表面,因此執行所消耗時長較之整個模型生成時所耗時長短。

  隨後,可對點雲與3D網格模型加以儲存。

3.5 模型量測

  得到模型後,可以對模型中具有代表性的地物加以量測。可量測的指標包括地物長度、面積、體積等;透過量測,可以對模型加以定量角度的檢驗,同時可由模型中獲取更多資訊。

  首先,對新體育館佔地面積加以量測。利用“New Surface”功能將其基部包圍,從而得到其底面周長(二維與三維)以及佔地面積(二維與三維)。量測過程如下圖所示。

  基於上述同樣操作,對第一教學樓底面周長與佔地面積加以測量,如下圖所示。

  此外,還可藉助“Volume”模組對地物體積加以測量;但體積測量時較易卡頓,如下圖所示。

  隨後發現,體積測量的卡頓是由於左側“Objects”視窗拖動導致;但若不拖動,體積資料無法顯示完全。隨後想到,可以直接將體積資料複製到剪下板,從而得到完整體積資料,如下圖。

  繼續測量其他地物,如下圖所示。

  其中,選取上述所得測量效果較好的地物,對其測量值加以歸納,如表1所示。

  其中,各地物長度與寬度相加並不一定為底面周長一半,是由於各次測量之間誤差、地物並非標準長方體等導致。

  上述底面面積與DSM面積均由依據地物底面劃定的面決定,但二者具有較大差距;關於二者的差異對比附於本文第四部分。

4 建模部分問題與思考

  前述操作部分已列舉部分操作過程中的思考與理解,本部分則對前述未提及的問題加以探討。

4.1 模型外觀與組成分析

  在經過前述漫長等待後,所得到研究區域的初步模型如下圖所示。

  其中,可以看到此時未顯示出真正的完全模型外觀,而是由較為稀疏的點雲所組成的表面。將其放大後可以看到高低不同、錯落有致的點雲所組成的簡化模型外觀,如下圖所示。

  隨後新增點雲組,得到結果如下圖所示。

  對比上述二者結果,可以發現前者以稀疏點雲表示了平面資訊(如地面、樓房頂面等),且表示得並不是很充分,僅可以大致刻畫出某平面所處在的位置,而無法展示其具體外觀與紋理;而後者則將各類物體表面的一些凸出細節(如地面的汽車與樹木、樓房頂面的裝置與側面凸出的窗簷等)展示出來,並進一步突出了不同地物的顏色與部分紋理特徵(如操場跑道與足球場、汽車顏色、遠處東運動場不同顏色的觀眾席等)。

  隨後,新增三角紋理,如下圖所示。

  由此即顯示出完整模型,同樣由此可以看出模型所存在的問題——側面的外形與紋理與實際地物相差較大。

  首先,結合新增三角紋理後的上圖與未新增紋理的上上圖可以看到,在上圖中出現外形或紋理彎曲、變形的部分均為上上圖中點雲未覆蓋的區域——如樓南側牆體、西北側牆體與房頂、“逸夫教”三字處等位置變形嚴重,而上上圖中這些部分點雲幾乎為空;反之則反,在上圖中較為正常、符合實際的部分均為上上圖中點雲分佈較為密集區域——如樓西南側牆體、南側花壇、南側房頂與“學樓”兩字處模型效果較好,而上上圖中這些部分點雲則十分密集、豐富。

  由此可以進一步說明:

  1)與本文開頭所提到的第二篇部落格中編碼結構光方法類似,運動結構恢復方法所得空間三維模型同樣由點雲所組成;點雲質量將對最終所得模型質量具有重要影響。

  2)模型結構僅由點雲決定,其紋理則在模型搭建完畢後貼於地物表面,即模型重點依然為點雲。

  3)點雲亦有重要程度之分,稀疏點雲作為模型的初始狀態,具有決定平面與位置的作用,或許可視作模型的骨架;而點雲組中點在稀疏點雲確定位置後,對模型細節加以最佳化。

4.2 模型部分外形與紋理錯誤分析

  得到模型後,可以看到部分地物在外形或紋理方面具有明顯的扭曲、模糊等錯誤,如下圖所示。

  但是,若由研究區域頂部俯視地物,則可看到各不同地物在外形、紋理等方面觀之較為正常,效果較好,如下兩幅圖所示。

  即上述地物在外形、紋理等方面所具有的問題往往存在於其側面被其他地物遮擋位置。由此可初步判斷,外形偏差問題或許是由於其未被無人機航拍影像拍攝得到,從而在空間三維模型建立過程中點雲位置出現一定偏離導致;並進一步使得貼合於其表面的紋理出現錯誤。

  隨後,分別對外形、紋理均較為良好的位置與外形、紋理均存在一定問題位置加以分析。首先,用滑鼠多次隨機選中外形符合實際、紋理清晰位置的點,可以發現這些點與多張無人機航拍影像相連,即這些三維空間點是由多幅影像中不同畫素點所對應資訊得出;用滑鼠多次隨機選中外形出現錯誤、紋理模糊位置的點,可以發現這些點不與任何無人機航拍影像相連。由此猜測,這些外形或紋理異常位置或許正是由於未獲取充足無人機影像,從而在建模過程中出現點雲位置的錯誤確定。

  請教大佬後,確定了這一猜測。由於無人機飛行高度較高,地物側面位置或被其它地物遮擋位置的資訊獲取不足;若需對上述異常問題加以修復,可以在後期對地物其它角度資訊加以拍攝、獲取。

4.3 模型質量報告分析

  得到模型後,同時會得到一篇內容豐富的模型質量報告(Quality Report)。結合相關網路資源,主要對質量報告中部分內容加以分析。

  首先,針對“Summary”部分,如下圖所示。可以看到,所得結果的平均地面取樣點距離(Average Ground Sampling Distance)為4.30 cm。同時,可以看到研究區域模型佔地面積為0.540 km2。

  其次,針對“Quality Check”部分,如下圖所示。由“Datasat”部分可知,所選研究區域108張無人機航拍影像中有104張完成定標並參與後續操作;而有4張影像未完成定標。點選這些影像可以看到,其“Tie Points”數量為0,而其它正常完成定標的影像則均具有較多數量的“Tie Points”。由“Camera Optimization”部分可知,原始相機內部引數與最佳化後的相機內部引數具有0.8%的相對誤差(這亦與本文第一部分原理所對應)。

  再次,透過“Calibration Details”可以得到無人機影像的位置資訊,並直觀地看到出現問題的影像在哪一部分,如下圖所示。

  隨後,針對“Bundle Block Adjustment Details”模組,得到空中三角測量中誤差(Mean Reprojection Error)為0.143,如下圖所示。其中,需要注意的是這一誤差的單位為畫素(pixels),則其所代表的物理長度單位即為0.143乘以畫素大小。

  此外,質量報告中還將程式執行時各部分所需時間(如預處理時間、點雲稠化時間、DSM生成時間等)列出,如下圖所示。

4.4 模型邊界缺失問題

  可以看到,在所得三維模型邊緣位置,往往會出現不規則的模型缺失,如下圖所示。

  針對這一問題,個人認為是由於:在現實場景中,臨近研究區域邊界的點,所對應無人機影像數量較少(例如研究區域北側的地物,其僅能由其南側5張左右無人機影像所拍攝,而處於研究區域中心位置的地物則可由八個方位加中心的九張甚至更多影像所拍攝),即對其不同角度的描述資訊較少,不足以依據這些資訊對其空間三維位置加以恢復,導致部分地區無法建模。

  當然,我的這一想法依然具有一定不足:如上圖所示,兩個紅色的框分別代表某棟宿舍在無人機影像與實際模型中的位置;而在其北側,還有一棟宿舍,其被多張無人機影像所拍攝(如圖中黃色框所示),但最終所得到的模型並無這一建築。

  針對這一問題,猜測或許只有當某一實際地物被一定數量(如可能為5張)的無人機影像所拍攝到,才可以獲得充足的資訊並參與建模;而若實際所得影像數量少於這一數值,則其不可參與後續建模。

4.5 地物底面面積計算問題

  在進行地物底面面積量算過程中,發現具有類似意義的兩個指標“Projected 2D area”與“Terrain 3D Area”;剛開始,以為二者僅僅是不同量測功能下對底面面積的不同表達。隨後,發現二者數值相差較大,如表1(底面面積與DSM面積)。

  隨後,為確定二者差異,先後結合實際情況(如大致回憶某棟樓實際佔地面積)、利用其他地物資訊(如測量廣場某輛轎車佔地面積)以及利用軟體幫助等方式,嘗試找出二者異同。

  最終,依據軟體幫助資訊對二者加以區分:“Projected 2D area”所代表即為某一地物底面所佔面積(當然這一底面需要手動繪製,因而可能與實際情況具有一定誤差),而“Terrain 3D Area”則表示其所代表的地物在所劃定平面上各高度的面積之和。

  此處以某棟教學樓為例,“Projected 2D area”度量數值即為此樓所佔據地表面積;而這一教學樓高低錯落、層次有質,具有很多門簷、窗簷等設計,如下圖所示,因此利用“Terrain 3D Area”計算得到的是教學樓這一“Volume”所有處於建築外部的面積之和——亦即教學樓除去底面之外其它各面的表面積。

  透過上述討論,即可解釋“Projected 2D area”與“Terrain 3D Area”二者在數值方面所具有如此之大差異的原因。

參考文獻

[1] 李永露. 基於無人機影像的運動恢復結構技術(SfM)研究[D]. 哈爾濱理工大學, 2017.

[2] 徐超, 李喬. 基於計算機視覺的三維重建技術綜述[J]. 數字技術與應用, 2017(01):54-56.

[3] 李明傑. 基於運動恢復結構的露天儲煤場三維場景重建的研究與應用[D]. 中國礦業大學, 2019.

[4] 張豔超, 莊載椿, 肖宇釗, 等. 基於運動恢復結構演算法的油菜NDVI三維分佈[J]. 農業工程學報, 2015,31(17):207-214.

[5] 許志華, 吳立新, 劉軍, 等. 顧及影像拓撲的SfM演算法改進及其在災場三維重建中的應用[J]. 武漢大學學報(資訊科學版), 2015,40(05):599-606.

[6] 沈長浩, 徐伯慶. 基於運動恢復結構的雕塑的3D重建研究[J]. 資料通訊, 2017(04):48-51.

[7] Aipiano. OpenCV實現SfM(一):相機模型[EB/OL]. [2020.05.13].