您當前的位置:首頁 > 詩詞

PMVS:多檢視匹配經典演算法

作者:由 怪僧小凡 發表于 詩詞時間:2021-12-12

導語:

Multi-View Stereo(MVS)多檢視立體匹配與三維重建的任務是:以已知內外引數的多幅影象(SfM的結果)為輸入,重建出真實世界中物體/場景的三維模型。

本文作者提出了PMVS的經典演算法,深入瞭解傳統演算法的實現效果,可以幫助我們與基於深度學習的方法進行對比,對“如何評估多個檢視間相似性”這一問題有更深刻的認識,希望能對相關研究人員有一定的參考幫助。

論文題目:

Accurate, Dense, and Robust Multiview Stereopsis

作者:Scentea|來源微信公眾號:3D視覺工坊

PMVS:多檢視匹配經典演算法

論文地址:

https://

ieeexplore。ieee。org/doc

ument/5226635

程式碼地址:

https://

github。com/pmoulon/CMVS

-PMVS

該論文提出的方法可以分解為三個主要的部分:1。 重建出若干可以完整覆蓋目標物體/場景的面片;2。 將面片模型轉換為多邊形漁網模型;3。 最佳化多邊形漁網模型。這裡重點分析文中提出的“匹配-擴張-剔除”策略,這也是PMVS演算法的核心內容。

PMVS:多檢視匹配經典演算法

圖 1 演算法流程演算法效果如下圖所示,從左到右依次為輸入影象(不同角度共48張),特徵點提取,特徵匹配結果,擴張剔除迭代3次後效果,轉換為網狀模型效果。

PMVS:多檢視匹配經典演算法

圖 2 演算法效果總覽

1、基本模型

基本模型中提及的符號含義

PMVS:多檢視匹配經典演算法

1.1、面片模型

先來了解什麼是面片模型 (Patch Model),所謂面片,是指三維物體表面的區域性切平面,可以近似地表示某一區域性範圍內的三維物體表面,與數學中在某一範圍內用切線研究曲線的做法一致,都是“將非線性函式線性化來近似處理”的思想。本質上看,一個面片是三維空間中的一個矩形,由其中心點、單位法向和參考影象三者共同確定,中心點

c

p

)是其對角線交點的座標,單位法向

n

p

)是從中心點指向參考影象

R

p

) 對應的攝影中心的單位向量,這裡之所以要引入參考影象的概念,是因為一個面片會在多幅影象中出現,選定其中的某一影象作為該面片的參考影象,將包含該面片的所有影象組成的集合

V(p)

稱為該面片的可視集。(思考:如何確定一個面片的可視集並從中指定其參考影象?)

PMVS:多檢視匹配經典演算法

圖 3 面片模型

1.2、成像差異函式

接著作者在面片可視集的基礎上引入了成像差異函式 (Photometric Discrepancy Function) 的概念,或者叫灰度差異函式。

PMVS:多檢視匹配經典演算法

PMVS:多檢視匹配經典演算法

圖 4 成像差異函式

PMVS:多檢視匹配經典演算法

1.3、影象模型

基於面片的表面表示方式最大的優勢是其靈活性,但缺少面片與面片之間的連線資訊,這使得尋找鄰近面片,面片規整等操作實現起來較複雜,為此引入影象模型(Image Model),建立起重建出的面片和其可檢視像上投影間的聯絡。具體的講,將每張影象分割為β×β的網格單元

Ci

x,y

),在第i張影象的(

x,y

)處儲存一個數組

Qi

x,y

),其中包含投影在該網格單元上的所有面片資訊。

PMVS:多檢視匹配經典演算法

圖 5 影象模型

2、初始面片生成

該論文提出的多檢視匹配三維重建方法,可以分為初始面片生成、面片加密、面片剔除三部分,經過初始特徵匹配得到一組稀疏的面片集合,然後透過反覆加密、剔除面片的過程得到最終的結果。每幅影象透過Harris和DoG運算元提取出特徵點後,進入到特徵匹配階段,這是PMVS演算法的核心內容,思路如下:

PMVS:多檢視匹配經典演算法

PMVS:多檢視匹配經典演算法

圖 6 特徵匹配演算法虛擬碼

PMVS:多檢視匹配經典演算法

圖 7 特徵匹配後的效果

3、面片加密

經過上述的特徵匹配後,重建出了一組稀疏的面片,接下來透過已有的面片在周圍空處生成新的面片進行加密,期望達到的效果是每個影象網格單元上都至少包含有一個面片。首先,對於一個面片

p

,明確其周邊可以擴張的網格單元,然後按照某種擴充套件策略進行擴充套件,具體思路如下:

確定可擴張網格單元

存在面片

p

的網格單元

Ci

x,y

),根據下式,將其上下左右四個網格單元視作鄰近網格單元,但並非每個鄰近網格單元都是可擴張的網格單元,還需要滿足兩個基本條件。

PMVS:多檢視匹配經典演算法

圖 8 鄰近網格單元

第一個條件:該網格單元中不存在鄰近面片

p’

,鄰近面片的判定條件如下,意思是說兩個面片中心點的距離不能過大,且兩個面片的朝向不能偏差很大。

PMVS:多檢視匹配經典演算法

第二個條件是作者從深度方面考慮的,擴張出的面片

p’

和麵片

p

對應的實際深度不能相差過大,但是實際的深度要在完成三維重建的過程後才能知道,這裡就進入了一個“雞生蛋”的邏輯死迴圈中,該論文中作者在這裡僅做了一個簡單的處理,判斷兩者間的成像差異函式。簡單總結一下,結合下圖,在確定可擴張的網格單元時分為三種情況,沒有面片時(綠色箭頭a)進行擴張;有面片且為鄰近面片時(紅色箭頭b)沒有必要擴張;有面片但非鄰近面片時(橙色c)需要進一步判斷成像差異係數,若小於給定閾值沒必要擴張,大於給定閾值則擴張。

PMVS:多檢視匹配經典演算法

3.2、擴張策略

在明確了哪些網格單元可以擴張後,接下來的問題就是如何根據已有的面片構建出新的面片了,思路如下:

PMVS:多檢視匹配經典演算法

PMVS:多檢視匹配經典演算法

圖 9 擴張策略的虛擬碼

4、面片剔除

在擴張的過程中,為應對那些變化較大、較難重建的區域,調大了成像差異的閾值,但與此同時不可避免地會出現一些冗餘、灰度差異大等低質量的面片,在這一步中進行剔除,“擴張-剔除”的操作需要迭代進行若干次(該論文中統一進行3次),每次剔除分三步進行,每步的側重不同,前兩步從成像一致性/灰度一致性入手,第三步強調面片間的關聯性。第一步剔除掉出現在同一個網格單元中,但並非鄰近面片的粗差情況;第二步透過視差圖測試,剔除掉那些較少影象上能看到的面片;第三步,剔除掉在相鄰網格單元中相鄰面片個數佔總面片數小於1/4的面片。下圖表示了整個演算法過程中面片的個數變化,透過“擴張”後面片個數急劇增加,然後透過三種策略剔除較差的面片,面片數不斷減少,再進行下一次的“擴張-剔除”。

PMVS:多檢視匹配經典演算法

圖 10 不同階段的面片數

PMVS:多檢視匹配經典演算法

圖 11 最終重建出的面片(物體)

PMVS:多檢視匹配經典演算法

圖 12 最終重建出的面片(場景)可以看出,除了重複紋理區域(人的頭髮)、凹陷部分、深度突變區域外,重建的整體效果還是不錯的,這得益於“匹配-擴張-剔除”策略的成功,成像差異函式的提出是立體匹配從雙目走向多檢視的關鍵,可視集

V(p)

在極線約束下利用幾何資訊,更新可視集

V*(p)

進一步考慮灰度資訊,在深度學習出現後,已有論文實現透過學習的方式來評估多個面片間的相似性。

參考文獻:

Y。 Furukawa and J。 Ponce, “Accurate, Dense, and Robust Multiview Stereopsis,” in IEEE Transactions on Pattern Analysis and Machine Intelligence, vol。 32, no。 8, pp。 1362-1376, Aug。 2010, doi: 10。1109/TPAMI。2009。161。

備註:

作者也是我們

「3D視覺從入門到精通」

特邀嘉賓:

一個超乾貨的3D視覺學習社群

本文僅做學術分享,如有侵權,請聯絡刪文。

3D視覺精品課程推薦:

1。面向自動駕駛領域的多感測器資料融合技術2。面向自動駕駛領域的3D點雲目標檢測全棧學習路線!(單模態+多模態/資料+程式碼)

3。徹底搞透視覺三維重建:原理剖析、程式碼講解、及最佳化改進

4。國內首個面向工業級實戰的點雲處理課程

5。鐳射-視覺-IMU-GPS融合SLAM演算法梳理和程式碼講解

6。徹底搞懂視覺-慣性SLAM:基於VINS-Fusion正式開課啦

7。徹底搞懂基於LOAM框架的3D鐳射SLAM: 原始碼剖析到演算法最佳化

8。徹底剖析室內、室外鐳射SLAM關鍵演算法原理、程式碼和實戰(cartographer+LOAM +LIO-SAM)

9。從零搭建一套結構光3D重建系統[理論+原始碼+實踐]

10。單目深度估計方法:演算法梳理與程式碼實現

更多幹貨

歡迎加入【3D視覺工坊】交流群,方向涉及3D視覺、計算機視覺、深度學習

、vSLAM、鐳射SLAM、立體視覺、自動駕駛、點雲處理、三維重建、多檢視幾何、結構光、多感測器融合、VR/AR、學術交流、求職交流等。工坊致力於乾貨輸出,為3D領域貢獻自己的力量!歡迎大家一起交流成長~

新增小助手微信:CV_LAB,備註學校/公司+姓名+研究方向即可加入工坊一起學習進步。

標簽: 面片  網格  影象  單元  3D