荊樹旭,趙 嬌
(長安大學 信息工程學院,陜西 西安 710064)
當前人們通過手機、相機等可以很容易地獲取真實世界的高分辨率圖像并以數據的形式永久地保存下來。隨著人工智能的高速發展,從多幅圖像中恢復場景的三維幾何信息成為研究熱點,主要途徑是通過多視立體幾何(Multi-View Stereo,MVS)、深度學習等計算機視覺理論和方法恢復真實場景的三維幾何信息。
目前三維場景的表示形式有深度圖、點云、網格、體素等。根據所使用的圖像數據源的不同,恢復場景三維信息的方法[1]主要分為主動視覺和被動視覺兩種類型,主動視覺通過設備主動發射可被測量的激光、紅外等信號直接獲取場景的三維點云信息,其可靠性高,主要應用于實時任務,但存在設備成本高、環境條件限制大以及點云數據精度不足等問題。被動視覺通過提取和學習圖像數據中的視覺特征恢復場景的三維幾何信息,具有方便快捷、成本低、應用范圍廣的特點。被動視覺根據目標場景的多幅不同視角圖像,利用三角測量法、立體視覺法、視差法、深度學習等方法恢復場景三維幾何信息。圖像獲取相比基于激光、紅外傳感器的深度信息獲取更經濟,是時間不敏感任務的更好選擇。
基于MVS和深度學習的三維場景恢復需要獲取目標場景具有一定空間重合度的多視角圖像,多視角圖像相機位姿分布的規范度、重合度對三維恢復的效果有很大的影響,基于深度學習的訓練數據集在場景圖像相機位姿分布的規范度和重合度方面良好。在具體應用中,用戶拍攝的目標場景多視角圖像具有較大的隨機性,難以保證獲取到和訓練數據集質量等同或接近的場景圖像數據,從而影響恢復效果。為了緩解這一問題,該文提出了基于弱隨機相機位姿圖像的三維場景恢復方法,通過給用戶提供目標場景拍攝建議,降低所獲取目標場景圖像相機位姿分布的隨機性,提高場景的三維恢復效果。
基于被動視覺的三維場景恢復一般分為傳統多視幾何MVS和深度學習兩種方法。MVS方法將獲取的場景圖像通過相機模型、對極幾何約束、特征匹配等幾何原理進行解析,從而得到圖像中物體的三維幾何模型。卷積神經網絡CNN (Convolutional Neural Networks)的出現,為三維恢復算法改進以及性能優化提供了新思路,伴隨深度學習的發展,通過機器學習模仿動物視覺進行場景三維恢復,將深度學習算法和傳統MVS三維恢復算法進行融合實現優勢互補。
基于MVS的三維場景恢復通過多視角圖像來獲取場景三維信息。2018年Yao等人[2]提出了基于可微分的單應性變換立體匹配算法,然后結合深度學習提出MVSNet方法進行三維恢復。繼而一些研究者在MVSNet方法的基礎上做了許多改進:R-MVSNet[3]把3D卷積換成門控循環單元GRU (Gated Recurrent Unit),把損失函數改為多分類交叉熵損失,內存減小,精度也有所下降。Point-MVSNet[4]通過預測圖像深度信息并結合圖像構成三維點云,再用3D點云算法優化深度信息,提高了點云精度。P-MVSNet[5]將假想面上的特征匹配置信聚合變為一個向量,以此提高立體匹配的精度。CVP-MVSNet[6]提出成本體積金字塔模型,應用在深度網絡中,可處理高分辨率圖像并獲取高質量場景深度圖,縮小了匹配代價的搜索范圍。Fast-MVSNet[7]提出由稀疏到稠密、由粗糙到精細的框架進行場景深度估計,并增加高斯-牛頓層優化深度提高恢復速度。上述方法都需要獲取真實場景的三維數據,而三維場景訓練數據獲取比較困難,MVS2[8]提出了無監督的多視圖深度學習方法,在深度圖中引入了跨視圖一致性約束,并提出了一種損失函數來度量跨視圖一致性。Khot T等人[9]提出了穩健的光度損失函數以提高無監督學習的性能。PatchmatchNet[10]提出了一種新穎的、可學習的、用于高分辨率多視圖立體視覺的級聯公式,可以處理更高分辨率的圖像。Xu H等人[11]提出了一個基于語義共分詞和數據增強指導的可靠監督的框架,并設計了一種有效的數據增強機制,從而保證三維場景恢復的魯棒性。
MVSNet、P-MVSNet、R-MVS、MVS2等把DTU datasets、Blended MVS或Tanks and Temples作為訓練和評估網絡的數據集。DTU數據集[12]是針對室內場景和對象使用工業機械臂專門拍攝并處理的圖像,攝像機軌跡和視角都經過嚴格規劃和控制。Blended MVS數據集[13]是通過規范相機位姿的虛擬攝像機獲取的用于MVS訓練的合成數據集,包括106個訓練場景和7個驗證場景。Tanks and Temples數據集[14]針對更為復雜的室內和室外場景,主要用于驗證深度學習網絡是否對光照變化大、存在動態目標的場景仍具備較為精確的重建能力。總之,上述介紹的訓練數據集在獲取時通過搭建規范的拍攝場景,對相機以及相機拍攝的視角都有嚴格的控制。普通用戶在拍攝目標場景時多視角圖像的相機位姿具有較大的隨機性,難以保證獲取到和訓練數據集質量等同或接近的場景圖像數據。
在三維場景恢復應用方面,余生吉等[15]使用雙結構光相機直接獲取三維信息對莫高窟第45窟彩塑進行三維重建,在獲取高精度幾何信息的同時,達到了色彩、紋理、細節等高度還原效果。楊會君等[16]提出了交互式選擇和濾波器相結合的果實表型離群點去除方法,完成了基于普通圖像復雜背景下的作物果實三維表型重建。鄭亦然等[17]通過尺度不變特征變換匹配SIFT(Scale Invariant Feature Transform)算法以及PCL(Point Cloud Library)泊松曲面重構算法實現了實驗室復雜設備的結構重建。張瓊月等[18]設計了三維環物攝影裝置,從原始圖像質量和建模軟件選擇兩個方面,優化模型精度,完成巖礦標本精細化三維重建及虛擬仿真平臺搭建。周祖鵬等人[19]提出一種基于多圖像拼接三維重建算法,利用無人機操作的靈活性、視角可控制性等優點進行目標場景的三維重建。張香玉等[20]構建VR環境,借助VR生成的多視圖三維數據實現了場景稠密重建。Lin Z H等人[21]、Jonathan T. Barron[22]、Kara-Ali Aliev[23]提出一系列新穎的視圖合成算法,在基于單目視頻的三維重建的應用上具有更高的性能和速度;唐嘉寧等[24]提出一種深度網絡和邊緣檢測融合的單目視覺建圖方法,能夠實現無人機實施構建三維地圖的要求;吳長嵩等[25]對無人機航拍圖像的三維重建技術進行綜述,提出已經取得的突破和即將面臨的挑戰。以上高精度三維重建應用中使用結構光相機、三維環物裝置、無人機等設備對重建場景進行拍攝,并對相機的拍攝位姿有更嚴格的規范性和重合度要求,均未考慮弱隨機相機位姿的三維重建效果評價。
三維場景恢復一般步驟是用戶首先拍攝目標場景的多個不同視角的圖像,再對圖像進行特征提取和特征匹配并計算出各幅圖像對應的初始相機位姿,同時重建出稀疏的三維點云,最后,以多視角圖像和對應初始相機位姿作為深度網絡輸入,進行深度圖計算和相機位姿優化繼而生成三維稠密點云,點云的顏色依據多視角圖像在該點的相似RGB決定。
近些年,研究者更多關注于優化網絡以提高三維場景的恢復效果,而對于三維恢復應用中的用戶拍攝影響因素關注不足,通過實驗發現用戶在拍攝目標場景圖像時的規范性會直接影響三維場景恢復的效果。對于一般消費級的用戶在沒有相機滑軌、機械臂等輔助裝置和缺乏3D視覺專業知識的條件下,如何在目標場景圖像的獲取環節更好利用相機獲取目標圖像,從而提高三維恢復效果是一個有益的嘗試。例如,一般用戶在沒有拍攝建議的條件下拍攝的圖像,相比于規范的訓練數據集,前者的三維效果明顯較差,圖1(a)是DTU數據集的相機位姿分布,圖1(b)是一般用戶拍攝的相機位姿分布。通過對比可以發現,二者在相機位姿整齊度、圖像重合度及數量等方面有較大區別,這些區別會直接影響三維恢復效果。

圖1 DUT數據集和一般用戶相機位姿分布對比
該文通過一般用戶對目標場景實例進行圖像拍攝和三維恢復實驗,了解普通用戶的拍攝習慣,通過實驗研究提供一套系統的場景拍攝建議指導用戶拍攝,從而提高三維場景恢復效果。實驗邀請30個參與者,在沒有拍攝建議指導下,每個參與者拍攝30個場景的多視角圖像。對每個場景分別拍攝10張、20張、30張多視角圖像,分別稱為一個圖像集合,理論上,如果拍攝規范每個圖像集合都可以完成目標場景的三維恢復。把一個參與者拍攝的一個場景的圖像組稱為一組,實驗圖像組的總數量為b,本實驗一共有900組圖像。對900組圖像進行多視角相機位姿可視化以及三維恢復結果分析,一共有4種情況,如表1所示。第一種情況是一組圖像的10張、20張、30張的多視角圖像集合都能恢復出三維點云,第二種情況是一組圖像中僅有30張的圖像集合不能恢復出三維點云,第三種情況是一組圖像中僅有10張的圖像集合可以恢復出三維點云,第四種情況是一組圖像的10張、20張、30張的圖像集合都不能恢復出三維點云。第一、二、三、四種情況出現的數量分別記為a1、a2、a3、a4。

表1 900組多視角相機位姿圖像的恢復情況
該文把可以恢復出三維場景的多視圖圖像稱為拍攝成功,在表1中使用‘√’符號標注,符號‘×’代表拍攝失敗的多視角圖像。在沒有拍攝建議指導的情況下,拍攝的多視角圖像集合的三維場景恢復的成功率如公式(1)(三維恢復的成功率Z=可成功恢復出三維點云的多視角圖像集合A/所有進行實驗的多視角圖像集B)僅有(121×3+127×2+164)/(900×3)=28.93%。很明顯,大部分參與者第一次拍攝多視角圖像達不到三維恢復要求,僅有少數參與者的拍攝圖像相機位姿分布較為規范,可以恢復三維場景。
(1)
根據實驗結果,影響三維恢復的因素有圖像集合的圖像數量、圖像集合的拍攝相機位姿分布等,實驗表明相機位姿分布是最主要的影響因素。接下來,就實驗中計算相機位姿出現的具體問題進行分析,并通過給參與者提供拍攝建議嘗試解決這些問題。
圖2所示是目標場景拍攝時相機視角間隔過大或過小導致的問題,圖2左是拍照視角間隔過大導致圖像間場景空間重合度不足,在特征匹配時無法在圖像間匹配到相同目標特征的問題;圖2右是拍照視角間隔過小導致圖像間在小范圍內空間過度重合,而在更大的目標圍內重合度又不足的問題。

圖2 無拍攝建議時的拍攝視角間隔問題
圖3是比較規范的相機位姿拍攝視角分布,圖3左表明相機分布比較規則,每個視角的間隔比較接近且不重合,圖3右表明每個相機位置和主體場景的距離都約相等并呈弧線分布。由后期實驗可知,規則的相機位姿分布明顯提高了三維場景恢復的成功率。

圖3 規則的相機拍攝位姿分布
圖4左右分別是在無拍攝建議下多視角圖像成功恢復稀疏點云的效果,30張多視角圖像集合的相機位姿只有28個視角有效,由于圖片數量和能夠恢復的相機位姿數量不同,導致在輸入到MVS網絡中進行稠密重建時直接出錯。

圖4 無拍攝建議時的部分相機位姿無效問題
規劃拍攝的軌跡。實驗參與者在拍攝時,提前規劃好每一個拍攝視角,按照蛇形軌跡從左到右,從上到下進行拍攝可以有效提高拍攝圖像相機位姿的有效性。
實驗參與者拍攝的場景有室內和戶外兩種。戶外場景優點是拍攝相機運動自由、光線充足等,拍攝時的相機位姿相對室內更整齊,完整性更高。弊端是目標場景過大導致拍攝的相機位姿軌跡比較單一,例如目標場景上方視角圖像難以獲取,第二個弊端是目標背景復雜,主體和背景距離較近,在稠密重建時導致的目標對象不突出、噪點多等問題。
為了驗證是否由于現實場景的背景影響主體場景的三維恢復效果,實驗使用Adobe Photoshop 2021手動剔除了24張多視角圖像的背景,再進行三維恢復。圖5是其中一幅圖像的剔除背景前后對比圖,對背景剔除的多視角圖像進行三維場景恢復,圖6左是未剔除背景的多視角圖像恢復的三維點云,圖6右是剔除背景后的多視角圖像恢復的三維點云。可看出,剔除背景的三維恢復效果有明顯改進,未剔除背景圖片的重建結果看不出主體場景要表現的內容,由此實驗可證明復雜背景的干擾會影響主體場景的三維恢復效果。

圖5 剔除多視圖背景的對比

圖6 剔除背景前后的三維重建效果對比
雖然對圖片背景做剔除處理在一定程度上解決了戶外場景三維重建的問題,但其工作量比較大,需要將所有拍攝的照片進行背景剔除操作,浪費人力和時間。故可以借助相機的自動對焦或者模糊背景的功能,在拍攝戶外場景時凸顯主體場景,弱化背景影響。
用戶采集數據還應該注意以下問題:在采集過程中控制快門速度,避免模糊。圍繞目標對象物體或環境采集盡量多的圖像;在場景選擇方面,應選擇如圖7(a)相近的光線充足、光照條件變化不劇烈的環境,如果是(如圖7(d))光線較暗的環境,可以利用補光燈輔助補光。同時盡量避免選擇的物體(圖7(b))紋理單一;在重建物體的選擇上,需要避免拍攝透明或半透明等強反光材料環境(如圖7(c)),總之,圖7(a)是弱反光、紋理復雜的材料,環境光線充足,是個良好的場景圖像示例。


圖7 目標場景的其他影響因素示例
總之,在圖像采集任務中,相機、場景的選擇是第一步,更重要的是拍攝時的相機位姿規劃布設建議指導。首先,估計目標物體的中心點,如圖8(a)使用一個虛擬球把目標對象包裹在虛擬包圍球中,相機始終保持在接近虛擬包圍球表面進行運動拍攝,并且相機光軸始終接近正對虛擬球的球心,具體位姿分布以圖1左為參考。采用如圖8(b)分布的蛇形拍攝軌跡獲取更多的目標場景圖像,戶外拍攝可以使用自拍桿或無人機等設備布設更多條拍攝軌跡。

圖8 拍攝建議
實驗發現通過給用戶提供目標場景拍攝建議,可降低所獲取目標場景圖像相機位姿分布的隨機性,提高場景的三維恢復效果。
實驗運行的PC平臺配置如下:Windows10操作系統,Intel(R)Core(TM)i7-8700,NVIDIA TeslaK 40c,Intel(R) UHD Graphics 630。訓練環境:python 3.7,Tensorboard2.6.0,Torchvision0.5.0,pytorch1.4.0,Opencv-python4.5.3.5。
硬件:手機:根據拍攝意見拍攝場景的多視角圖像,注意拍攝視角和軌跡;補光燈:拍攝光線弱的場景時進行補光,減少光照對三維恢復效果的影響;軟件:COLMAP-3.6-windows-no-cuda:計算并可視化多視角圖像的相機位姿和稀疏三維點云,計算結果為相機、圖像和位姿信息,可作為MVS網絡的輸入信息,相機位姿可視化方便用戶觀察拍攝圖像的位姿并及時加以調整;Python:訓練數據集并進行三維場景稠密重建;Meshlab:可視化三維點云。過程:拍攝圖像數據,數據預處理,稀疏稠密三維恢復,優化三維模型,渲染重現。運用手機+Colmap+MVS+Meshlab的方式,實現了弱隨機相機位姿圖像的場景三維恢復。
基于平面掃描的多視圖立體視覺深度學習三維恢復的實現步驟如圖9所示。

圖9 三維場景恢復的完整流程
步驟一:用戶根據指導建議使用手機或單反相機采集同一場景不同視角的多視角圖像,圖9左側為手機拍攝的書桌場景的圖像組示例。
步驟二:把用戶拍攝的多視角圖像輸入到Colmap軟件中,Colmap首先由SIFT算法進行特征提取,構建不同尺度空間進而獲得更穩定的特征點,如公式(2)、公式(3),圖像的尺度空間L(x,y,σ),由高斯核G(x,y,σ)與圖像I(x,y)卷積獲得,其中σ是尺度參數,是模糊處理規模的大小,σ值越大,圖像越模糊。
L(x,y,σ)=G(x,y,σ)?I(x,y)
(2)
(3)
然后進行多尺度SIFT特征點匹配,最后利用對極幾何關系去除錯誤匹配的特征點對。一組多視角圖像分為一個參考圖像和其他多個源圖像,以參考圖像的圖像坐標系作為相機位姿的參考坐標系。假設某個源圖像坐標系為P,某一點p的坐標為X1;參考圖像為目標坐標系P',點p對應匹配點坐標為X2,已知參考圖像的相機內參K1,外參(R1,t1),源圖像的相機內參Ki,外參(Ri,ti),法向量n,n為目標平面法向量且朝向P,投影平面到對象平面的深度為d。通過求解P到P'的基礎矩陣F(fundamental)、單應矩陣H(homography)和本質矩陣E(essential)獲得源圖像的外參,核心求解公式為公式(4)~公式(6)。具體的計算過程見文獻[26]。

(4)
E=KTFK
(5)
(6)
步驟三:尋找一對初始的匹配圖像對,結合步驟二方法通過奇異值分解SVD (Single Value Decomposi-tion)獲得參考圖像和源圖像位姿,然后三角化生成三維點。通過每次增加一張新源圖像方式進行增量重建,具體的計算過程見文獻[21]。
步驟四:根據上述步驟,得到圖9中第二個黑框中相機信息、圖像信息、稀疏點云信息和相機位姿可視化結果;圖10左上和左下是拍攝的兩個場景的多視角圖像,圖10右上和右下是對應場景的相機位姿及稀疏點云可視化結果,其中右側兩幅圖中的黑框內是稀疏點云的三維坐標系,是由步驟二中提及的參考圖像坐標系轉換而來,也是后期進行稠密重建的參考坐標系。

圖10 多視角圖像及對應的相機位姿
步驟五:根據圖像拍攝時刻的攝像機位置姿態和稀疏三維點云,利用多視角立體匹配算法獲取稠密三維點云;根據MVS網絡[10]生成深度圖和相應的置信度,進行濾波融合和稠密重建。根據一系列具有各自校準相機參數的圖像,進行稠密點云恢復,恢復結果為圖9最右側的深度圖和三維點云圖。
計算深度圖,即平面掃描立體。原理是通過多視角機位姿對同一物體進行拍攝,首先大致估計出物體的深度范圍(即最小深度dmin和最大深度dmax),然后把深度范圍劃分為多個平行平面,判斷圖像上每個像素點在每個平行范圍的匹配代價,最后選出最小代價,即為該像素點的深度值。
為驗證數據采集指導建議對三維場景恢復的有效性,給予10位參與者拍攝建議,各拍攝30組多視角圖像,實驗發現,300組圖像僅有57組不能恢復出三維場景,故在指導下拍攝出的多視角圖像的三維場景恢復的成功率可達到(300-57)/300=81%。

圖11 拍攝指導前后的三維點云對比
圖11是在拍攝多視角圖像時,進行拍攝指導前后的三維場景恢復對比圖,左列是未經過指導拍攝的多視角圖像的三維恢復效果,右側是進行拍攝指導后的三維恢復效果。可以發現,圖11第一行的左圖中矩形框相較于右圖矩形框中的三維點云缺失比較嚴重,點云完整性和三維恢復效果都稍差。圖11第二行同理可觀察到,在進行指導后的右圖,用戶拍攝的多視角圖像在恢復出三維點云的視覺效果和點云精度方面都有較明顯的提高。
圖12是在建議指導下拍攝的多視角圖像的三維場景恢復效果與真實場景對比展示,圖12左列是拍攝的真實場景圖像,圖12右列是對應的三維場景恢復點云展示。可以發現,恢復的三維場景在點云精度、主體場景完整性方面和整體視覺效果上與目標場景十分接近。

圖12 拍攝指導下的三維恢復效果展示
基于深度和顏色數據的三維重建是目前三維恢復的一個途徑,需要通過深度相機獲取場景的深度數據,相較于單純基于圖像數據的三維恢復其代價較高同時方便性也有所降低。該文在多視角圖像獲取方面研究也有助于融合深度數據源的三維場景恢復。
通過研究基于MVS深度網絡的弱隨機相機位姿圖像的三維場景恢復,提出一系列拍攝建議,降低拍攝相機位姿分布的隨機性,提升了三維恢復的效果。實驗結果表明,普通用戶經過指導能將自己拍攝的多視圖二維圖像轉化為較高精度的三維模型。該文的文字指導容易存在歧義并且在實際操作時實現程度不高,故后期可以增加簡易便攜式輔助設備或輔助軟件指導用戶拍攝。比如規劃軌跡和拍攝視角,也可在相機中加入基于AR的實時引導功能等。
總之,基于多視角的被動視覺三維重建依舊面臨較大的困難。如透明或半透明,無紋理或重復紋理等都是三維恢復面臨的挑戰,在該方面的研究也需要盡快從研究轉化到應用層面,使更多的普通消費級用戶能夠分享三維恢復重建帶來的便利從而產生實際的應用價值。