隗 娜,郭向坤,董志勇,張兆偉
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術研究所,沈陽 110168)
3(陸軍炮兵防空兵學院 士官學校,沈陽 110867)
近幾十年來,在計算機圖形學、虛擬現實和通信等方面人們對3D 模型的需求和要求與日俱增.但是用于構建3D 模型的許多現有系統是圍繞專用硬件(例如立體設備)構建的,導致成本較高,不能滿足其新應用的要求.對于集成虛擬和真實數據的許多應用來說從攝影圖像自動重建物體和環境的三維模型是很重要的.其中稠密重建是至關重要的一環,對其相關算法進行改進和優化具有十分重要的意義.近年來,國內外學者對稠密重建相關算法進行深入的研究,并提出了許多優秀的算法.
通常用基于特征分割的區域增長和聚類的方法,而基于體素的算法很少使用.區域增長的方法是從具有預定標準的點云中選擇種子點,然后把滿足種子點預定要求的所有相鄰點添加到與種子點相同的子集中.隨后,選擇除此種子點之外的子集中滿足預定標準的點作為新的種子點.重復該過程直到不能將任何點添加到子集中[1].但是該方法計算量大、且效率不高,難以滿足時效需求.
Yasutaka Furukawa 等人在2009年提出基于面片的多視圖立體三維稠密重建PMVS 算法,其在三維重建的完整性和精度上都具有較為突出的表現[2].目標體的圖片經過特征點匹配,擴展,過濾等步驟生成稠密點云,相比較于其他稠密重建算法該算法準確,簡單,高效,能夠自動檢測和忽略外部點和障礙點,是現在使用最廣泛的方法之一.但是在紋理稀疏的區域重建效果不好,甚至出現孔洞殘缺,部分細節失真的情況.
本文針對上述問題提出了基于像素插值的特征點選取算法和對PMVS 候選點匹配策略的改進優化.該方法不僅能保證紋理稀疏區域較好的重建效果,還能提高效率有效剔除誤匹配點,得到多且分布均勻的稠密點云數據.
PMVS 是用于多視圖立體視覺稠密重建的算法,是一種使用同一物體不同角度的多幅圖像進行三維建模的技術,其需要的圖像數量至少兩幅.該算法最終輸出一組覆蓋整個重建目標可見部分的小矩形塊密集集合.PMVS 的實現過程有匹配,擴展和過濾,從稀疏的匹配關鍵點集開始,重復擴展,然后經過可見性約束來過 濾掉錯誤匹配.過程如下圖所示:

圖1 PMVS 算法流程圖
首先對輸入的一組圖片用Harris 和DoG 算子來提取圖像的特征角點,最終產生面片的稀疏集合,作為種子點.在每張圖片上劃分網格,每個網格大小為a×a(a=32 pixel)且選擇n(n=4)個局部極大值點.當前操作圖片作為參考圖像,剩余的圖片作為其他圖像.進行特征點對匹配時,選取其他圖片中主光軸與參考圖像夾角小于60 度的圖片[3].對于每張圖片,以及對應的光心,依次作為參考圖像按照極線約束在其他圖像中進行同種類型特征點匹配,由每一特征點對按照三角化方法求出模型點坐標.然后由模型點輪流初始化patch,直至成功.
由于初始匹配只有一組稀疏的面片,因此擴展對于生成足夠密集的面片非常重要.上一步生成的稀疏點依次作為種子面片向其領域進行擴散.新生成的面片具有和種子面片相同的法向量,通過鄰域網格中心的光線與種子面片所在平面的交點作為其中心.若鄰域內已經存在平均相關系數較大的patch,則不向該鄰域擴散[3,4].Patch 投影到圖片和參考圖片之間的相關系數要大于閾值則認為是成功擴散了一個patch,否則失敗.稀疏面片集中的每個patch 依次作為種子點進行擴展,直至每幅圖片的每個網格Ci(x,y)中至少有一個重建patch 為止.
過濾是為了盡可能的去除一些面片擴展中生成的錯誤面片,以此來提高重建的準確性.濾除的過濾器大都遵從可視一致性的原則:過濾掉網格中不連續的面片;通過每個面片P和它八鄰域內映射的面片數進行二次曲面擬合,過濾掉八鄰域殘差之和大于閾值的面片P;通過深度測試計算得到可視面片組的數目,對于數量較小的patch 組會被認為是異常值過濾掉[3].
一些角點檢測方法,如Harris 等,是旋轉不變的.這意味著,即使圖像旋轉,我們也可以找到相同的角點[5-7].這很明顯,因為角點在旋轉的圖像中也是角點,但是在縮放的圖像中角點可能就不是角點了.所以Harris 不是尺度不變的.
尺度不變特征變換(SIFT)是計算機視覺中的特征檢測算法.在加拿大獲得專利,并于1999年由David Lowe 出版[8].應用包括物體識別,機器人繪圖和導航,圖像拼接,3D 建模,手勢識別和視頻跟蹤.
SIFT 的一個重要特征是特征點在原始場景中的相對位置不會隨著圖像的角度變換而改變.如果正在處理的集合中的兩個圖像之間存在幾何形狀的變化,則位于形變對象中的特征通常不起作用.然而,在實踐中SIFT 并不受尺度的影響,可以檢測到來自圖像的更多特征,減少了由這些局部變化引起的平均誤差.SIFT 還可以在噪點和部分遮擋下穩健地識別物體,因為SIFT 特征描述符對于均勻縮放,方向、光照變化和仿射失真是不變的.
SIFT 方法從圖像特征生成大量特征向量,每個特征向量對于圖像平移,縮放和旋轉都是不變的,對于照明變化是部分不變的,對局部幾何失真是魯棒的.在一系列平滑和降采樣圖像的尺度空間中應用高斯卷積得到結果的最大值和最小值定義為關鍵點,沿著邊緣的低對比度候選點和邊緣響應點則被剔除.主導方向作為關鍵點的方向.高斯差分公式如下:

其中,σ是尺度因子,k是相鄰兩個尺度空間倍數的常數.因此,尺度kiσ和kjσ之間的DoG 圖像恰好是尺度kiσ 和kjσ處的高斯模糊圖像的差異.其中L(x,y,σ)是原始圖像I(x,y)與高斯模糊函數G(x,y,σ)在 尺度空間kσ上的卷積:

但是對于紋理稀疏的區域SITF 選取的局部極值點有限,最后得到的點稀疏且不均勻.為了獲得更多對比度較好的關鍵點,在選取同種特征點時,一般選擇降低閾值,但這種方法增加特征點個數的同時,干擾因素也相應增加了.為了解決這個問題,在SIFT 計算過程中得到極值點后,加入像素插值的計算,然后在與閾值進行比較來提取特征點.
通過SIFT 算法計算得到的關鍵點存在噪聲點,所以要通過閾值篩選來剔除一些低對比度和不穩定的邊緣關鍵點.在這里像素插值的作用就是不用降低閾值,也能篩選出一些低于閾值但有較高對比度的關鍵點[9].插值公式如下:

式中,F(x,y)代表插值后的像素值,F0(x,y)代表原來圖像坐標為(x,y)處的像素值,其中u(0 <u<1),n(0 <n<10).假設3×3窗口像素矩陣分布如下:

前提:矩陣(a)是需要重建的目標區域,(b)是不需要重建的非目標區域.假設:閾值|ε|>4.1.
這兩個窗口的中心都是極值4.0,根據預設條件這兩個窗口的極值點不會被篩選出來.但通過前提條件可知,(a)這個窗口是應該被選取的.否則無法保證該部分的重建精度.根據式(4),不妨設u=v=0.01,n=3,則計算得到插值后的像素排列是:

從上述結果看出,(a)插值后的窗口(a*)中可以提取到特征點,而(b*)中不符合條件,這樣就與前提相符.插值計算并沒有改變原來圖像中的像素值,只在特征點選取時將符合條件的點篩選出來.這樣一來不僅能增加紋理稀疏區域的特征點,使得獲得的特征點多且均勻,還為后面的稠密重建提供更多的信息,提高重建的完整性.
PMVS 算法對一般的模型重建效果較好,但模型表面凹凸不平,粗糙不光滑時,PMVS 算法在生成種子候選點時可能出現錯誤匹配,導致細節出錯.前面已經提到了,在初始特征匹配時,參考圖像上的每一個特征點在其他圖像上尋找候選的匹配點,每一對候選匹配點對交會得到模型點.然后求得模型點與參考圖像攝像機中心的投影距離,把模型點按照距離升序排序[10].這種方式在圖2點A和B的選取中是適用的,但是并不適用與C和D的選取.如圖2所示,設原點為光心,假設A,B,C,D四點為候選模型點.當投影距離和直線距離成正比時,投影距離可代替直線距離,如點A和B中自然是選擇更近的點A.但也有特殊的情況,如圖中的點C和D,從圖中可以看出C點的投影距離小于D點的投影距離,按照原有的方法應該選取C點.但C點距光心直線距離比D點大,實際上D點更近些,應該首選D點.至此,我們可以看出原來的方法會造成特征點匹配失誤,增加匹配時間且影響最終重建效果.所以本文提出在匹配候選點選取時改投影距離為直線距離,這樣可以兼顧多種情況,選取的候選點會更加可靠,理論上重建效果比原來要好.

圖2 候選點與光心距離示意圖
下面給出改進算法的基本步驟和算法流程圖:
PMVS 改進算法
1) 根據SIFT 方法提取所有圖像的DoG 空間極值點;
2) 計算所有局部極值點的像素插值,再通過尺度空間DoG 函數進行曲線擬合,進行閾值篩選;
3) 對模型點到攝像機光心的實際距離進行升序排序,然后進行初始特征點匹配;
4) 生成初始patch,作為種子點;
5) 選擇初始種子點進行面片擴展,得到空間有向面片的稠密集合;
6) 對錯誤的點云數據進行濾除;
7) 步驟5)至步驟6)重復至少3 次,完成物體的稠密三維重建.
本文使用VS 2015 和OPENCV 構架實驗平臺,并對本文算法和Yasutaka Furukawa 等人提出的PMVS 算法在特征點數和時間效率上進行比較分析.為了驗證算法的有效性,實驗選取了不同場景,如建筑物、玩偶、行人、車輛等,這里本文只列舉了兩類數據集中兩組圖片的重建效果和實驗數據,I 類數據集取自https://github.com/openMVG/ImageDataset_SceauxCastl e/tree/master/images,包括11 張圖片,II 類數據集是用oppo 手機拍攝的不同角度下的同一場景,包括33 張圖片.算法運行環境為CPU:Intel(R) CoreTMi5-2450M 2.5 GHz,內存:4 GB.
圖4結果對比圖中的(b)、(c)組圖是示例圖像的局部區域,(b)是SIFT 算法提取特征點效果,(c)是加入插值計算的效果,可以看出,引入插值計算的部分提取到了更多的特征點,從而使得重建效果更好更完整.根據表1可知,本文像素插值算法在進行特征提取時比經典SIFT 算法提取的特征點增加了19%-27%;改進PMVS 候選點選取策略后與經典PMVS 算法重建獲得面片數增加了26%-28%,雖耗費的時間有所增加,但從圖4中的(d)、(e)可知重建效果更好了,填補了孔洞區域,失真的邊緣部分區域細節更完善了.

圖4 實驗結果對比圖
將PMVS 算法初始特征選取時的Harris 方法改為尺度不變的SIFT 算法,在過程中引入像素插值計算,并在匹配候選模型點時采用距相心直線距離的策略.從實驗結果可以看出,在一些紋理稀疏的區域該方法提取到了更多分布均勻的種子點,且效果顯著,使稠密重建細節更加清晰,減少因錯選匹配點而造成的信息錯誤,獲得更精確的稠密點云模型.因此,本文提出的方法具有更好的效果和實用性.

表1 對比試驗結果圖