圖片捕獲(huo)過程(cheng),請(qing)遵(zun)循以下指導方針(zhen)以獲(huo)得最佳重建結果:
1 捕捉具有(you)良好紋理的圖(tu)像(xiang)。避免使(shi)用完全沒有(you)質感的圖(tu)片(例(li)如,白色的墻或(huo)空桌子)。如果場景(jing)本(ben)身沒有(you)足夠的紋理,你可以放置額外的背景(jing)對象(xiang),如海報等。
2 在(zai)相似的照明條件下捕獲圖像。避免高動態范圍的場(chang)景(例(li)如,背對(dui)太陽有陰影的照片(pian)或透(tou)過門/窗拍(pai)攝(she)的照片(pian))。避免在(zai)有光澤的表面上拍(pai)攝(she)。
3 捕捉(zhuo)高視覺(jue)重疊的圖像。確保每個物體至少在3張圖片中看到,重疊圖片越(yue)多越(yue)好。
4 圍繞同一(yi)(yi)個(ge)物體進行不同的(de)角(jiao)度捕捉(zhuo)圖像(xiang),不要只旋轉相機(ji)從(cong)同一(yi)(yi)位置拍(pai)攝圖像(xiang)。同時,盡量(liang)從(cong)一(yi)(yi)個(ge)相對相似的(de)角(jiao)度拍(pai)攝足(zu)夠多的(de)圖片。注(zhu)意(yi),更多的(de)圖像(xiang)不一(yi)(yi)定更好,可能(neng)會導致(zhi)緩慢(man)的(de)重建過程。如果你使(shi)用視頻作為(wei)輸入,考慮(lv)下采樣(yang)幀率。
概(gai)述
基于圖像的三維(wei)重建傳統上首(shou)先使用(yong)運動結構(Structure-from-Motion)恢復場(chang)景的稀疏表示和輸(shu)入圖像的姿態(tai)。這個輸(shu)出(chu)然后作(zuo)為多視圖立體幾何(Multi-View Stereo)的輸入(ru),以恢復場(chang)景的密集(ji)表示。
SFM是通(tong)過(guo)一系列有重疊(die)的(de)(de)且不同視角(jiao)的(de)(de)圖片重建(jian)出物體的(de)(de)三維結構(gou)(稀疏點云(yun)),并且輸出相機的(de)(de)內(nei)外參(can)數,內(nei)參(can)指的(de)(de)是將真實空間的(de)(de)三維點通(tong)過(guo)內(nei)參(can)矩(ju)陣轉換(huan)為相機圖片上(shang)的(de)(de)二(er)維點,外參(can)包含相機在(zai)切換(huan)不同視角(jiao)時的(de)(de)平移和旋(xuan)轉信息。
通常(chang)情況下,運動(dong)結構系(xi)統將這(zhe)一過(guo)程分為三個階段(duan):
1 特征檢測與提取(qu)
2 特征匹配和幾何驗(yan)證
3 結(jie)構與運動重建

多視圖立體幾何(MVS)采用SfM的(de)輸出來計算圖像(xiang)(xiang)中每個(ge)像(xiang)(xiang)素的(de)深(shen)度和法(fa)(fa)向信(xin)息。在3D點(dian)云中融合(he)(he)多幅圖像(xiang)(xiang)的(de)深(shen)度圖和法(fa)(fa)向圖,然后生成場(chang)景(jing)的(de)密集點(dian)云。利用融合(he)(he)點(dian)云的(de)深(shen)度和法(fa)(fa)向信(xin)息,泊松曲面(mian)(Poisson),三(san)角剖(pou)分(delaunay)重建等算法(fa)(fa)可以恢復(fu)場(chang)景(jing)的(de)三(san)維曲面(mian)幾何。
實施:
COLMAP創建一個(ge)新(xin)項目(mu)必須包含(han)存(cun)儲數(shu)據(ju)庫的位置(zhi)以(yi)及包含(han)輸(shu)入圖像的文件夾(jia)。可(ke)以(yi)將整(zheng)個(ge)項目(mu)設置(zhi)保(bao)(bao)存(cun)到(dao)配置(zhi)文件中(zhong),項目(mu)配置(zhi)文件中(zhong)保(bao)(bao)存(cun)存(cun)儲數(shu)據(ju)庫和圖像文件夾(jia)的絕(jue)對(dui)路(lu)徑信(xin)息。整(zheng)個(ge)項目(mu)的目(mu)錄結構如下(xia):

第一(yi)步:特征檢(jian)測/提取(qu)
特(te)征檢測/提取在圖像中找(zhao)到稀疏的特(te)征點(dian),并使(shi)用數值描(miao)(miao)述(shu)符(128維向量)描(miao)(miao)述(shu)特(te)征點(dian)。主要使(shi)用SIFT特征(zheng)提(ti)取(qu)方法。
jpge圖像的(de)頭(tou)部(bu)保存(cun)了(le)EXIF信(xin)息(xi) 里面(mian)包括拍攝時的(de)光(guang)圈、快門(men)、白(bai)平衡、ISO、焦距、日期時間等(deng)各種(zhong)和拍攝條件以(yi)及(ji)相機(ji)品牌、型號、色彩(cai)編碼、拍攝時錄制的(de)聲音以(yi)及(ji)GPS全球(qiu)定(ding)位系統數據、縮(suo)略(lve)圖等(deng),COLMAP可以(yi)從(cong)嵌入式EXIF信(xin)息(xi)中自(zi)動提(ti)取焦距信(xin)息(xi)。
提取到的特征(zheng)信(xin)息(xi)如下:
NUM_FEATURES代(dai)表(biao)一張(zhang)圖像(xiang)提(ti)取到(dao)多(duo)少個特(te)(te)(te)征點,x,y代(dai)表(biao)特(te)(te)(te)征點的(de)坐標, scale代(dai)表(biao)尺度(即(ji)相機距離物體遠近的(de)比(bi)例),ORIENTATION代(dai)表(biao)特(te)(te)(te)征點的(de)梯度方(fang)向, D_1…D_128代(dai)表(biao)特(te)(te)(te)征描述符的(de)128維(wei)向量,所有提(ti)取的(de)數據都將存儲在數據庫(ku)文件(jian)中。
其中X, Y, SCALE, ORIENTATION為浮點數,D_1…D_128為0…255范圍(wei)內的值。

例如,一張(zhang)圖片有4個(ge)特征:

第二步:特(te)征(zheng)匹配和幾何驗證(zheng)。
特征(zheng)匹(pi)配(pei)(pei)首先匹(pi)配(pei)(pei)圖(tu)像(xiang)(xiang)對,下(xia)面列出圖(tu)像(xiang)(xiang)匹(pi)配(pei)(pei)的(de)(de)(de)(de)(de)幾(ji)種策略。其次(ci)再將匹(pi)配(pei)(pei)后的(de)(de)(de)(de)(de)圖(tu)像(xiang)(xiang)上的(de)(de)(de)(de)(de)特征(zheng)點(dian)進行(xing)匹(pi)配(pei)(pei),利用特征(zheng)點(dian)的(de)(de)(de)(de)(de)128維描述符(fu)向量的(de)(de)(de)(de)(de)相似性(xing)度量進行(xing)特征(zheng)點(dian)匹(pi)配(pei)(pei)。
圖像對匹配算法(fa):
窮(qiong)盡匹配(Exhaustive Matching):如果(guo)(guo)數(shu)(shu)(shu)據集中的(de)圖(tu)像(xiang)數(shu)(shu)(shu)量相對較低(最(zui)(zui)多(duo)數(shu)(shu)(shu)百個),那么這種(zhong)匹配模式應該足夠(gou)快(kuai),并能(neng)獲得(de)最(zui)(zui)佳(jia)的(de)重構結(jie)果(guo)(guo)。在這里,每個圖(tu)像(xiang)都(dou)與其他圖(tu)像(xiang)進行匹配,而塊大(da)小決定同時(shi)從磁盤加(jia)載到(dao)內(nei)存中的(de)圖(tu)像(xiang)數(shu)(shu)(shu)量。
序列匹配(pei)(Sequential Matching):由一個攝(she)像機。在這種情況下(xia),連續的幀具(ju)有(you)視覺重疊,不(bu)需要(yao)用盡全力地匹配(pei)所(suo)有(you)的圖(tu)像對(dui)。而(er)是將連續捕獲的圖(tu)像相互匹配(pei)。
空間匹(pi)配(Spatial Matching):這種(zhong)匹(pi)配模(mo)式將每(mei)個圖像與它的空間近(jin)鄰進行匹(pi)配。COLMAP還會從(cong)EXIF中提取GPS信息,并(bing)使用(yong)它進行空間最近(jin)鄰居搜索(suo)。
傳遞性匹配(pei)(Transitive Matching):這種匹配(pei)模式利用已有特征匹配(pei)的(de)傳遞關(guan)系,生成更完(wan)整(zheng)的(de)匹配(pei)圖。如果一個圖像A匹配(pei)到一個圖像B,而(er)B匹配(pei)到C,那么這個匹配(pei)器(qi)會嘗試直接將A匹配(pei)到C。
建立圖像(xiang)(xiang)對(dui)(dui)之(zhi)后,在參考圖像(xiang)(xiang)中的(de)一個特(te)征(zheng)(zheng)點,如(ru)何(he)從目(mu)標圖像(xiang)(xiang)中的(de)所有(you)特(te)征(zheng)(zheng)點中找出與之(zhi)相對(dui)(dui)應的(de)特(te)征(zheng)(zheng)點。如(ru)果(guo)使用(yong)暴力(li)計算法,計算每一對(dui)(dui)特(te)征(zheng)(zheng)點的(de)相似距離(li),如(ru)果(guo)特(te)征(zheng)(zheng)的(de)描述符(fu)向量的(de)維(wei)度和特(te)征(zheng)(zheng)點的(de)數量較多的(de)話,暴力(li)法是不可取的(de)。需要使用(yong)KD樹算法建立(li)一(yi)個搜索樹,基于KD樹最鄰近(jin)查找算法,方便特征(zheng)點(dian)進(jin)行(xing)快速(su)匹配。
由于(yu)sift提(ti)取的(de)特征(zheng)點(dian)和描述子在匹(pi)配(pei)(pei)過程中(zhong)可能會存在誤匹(pi)配(pei)(pei)的(de)情況,所(suo)以需(xu)要(yao)將錯誤的(de)匹(pi)配(pei)(pei)點(dian)對剔除。幾何(he)校驗是篩(shai)除一些誤匹(pi)配(pei)(pei)的(de)特征(zheng)點(dian)。幾何校驗是指利用對極(ji)幾何進行(xing)約(yue)束。
對極幾(ji)何:空間中的(de)一點與兩張圖片相機(ji)的(de)光心,三者圍(wei)成(cheng)一個(ge)極(ji)(ji)(ji)平(ping)面,極(ji)(ji)(ji)平(ping)面與兩張圖片相交形成(cheng)兩條極(ji)(ji)(ji)線(xian)(xian),對(dui)極(ji)(ji)(ji)幾何約束是指,空間點X在攝(she)像(xiang)機(ji)1的(de)成(cheng)像(xiang)平(ping)面中的(de)像(xiang)素點x,與之(zhi)相匹配的(de)攝(she)像(xiang)機(ji)2的(de)成(cheng)像(xiang)平(ping)面中的(de)像(xiang)素點 x' 一定落在極(ji)(ji)(ji)線(xian)(xian)上。
公式約束(shu)為: x'的轉置 × F × x =0 ;F為基(ji)礎矩陣,F可(ke)以通(tong)過8對匹(pi)配(pei)的特(te)征(zheng)點聯立方程組求得 分解F矩陣可(ke)以求得相(xiang)機的內參矩陣。

幾(ji)何約束方法:隨機選取圖像對的8對匹配(pei)點,使用(yong)歸一化八(ba)點算法求解(jie)基礎矩陣(zhen)F,然后(hou)統計滿(man)足對極幾(ji)何關系的點對數量,在設定(ding)的次(ci)數內重復(fu)上述步驟(zou),選取滿足條(tiao)件的點對數量最多的匹配(pei)為精化匹配(pei)結果。
第(di)三步(bu):稀(xi)疏(shu)重(zhong)構(gou)
首先初始化主要(yao)是指選取兩(liang)張(zhang)匹配的(de)圖(tu)(tu)像(xiang),設定其(qi)中一張(zhang)圖(tu)(tu)像(xiang)的(de)位(wei)姿為單位(wei)陣,然后通(tong)(tong)過它們之間的(de)匹配點對估(gu)計(ji)出(chu)(chu)E矩陣,將E矩陣分解獲得另一張(zhang)圖(tu)(tu)像(xiang)的(de)位(wei)姿。在估(gu)計(ji)出(chu)(chu)兩(liang)張(zhang)圖(tu)(tu)像(xiang)的(de)位(wei)姿后,就可以通(tong)(tong)過三角化(triangulation)來生成三維點。
然后進行增量式(shi)重(zhong)建(jian):
1 獲取下一最佳匹(pi)(pi)配(pei)圖像(匹(pi)(pi)配(pei)點對(dui)數量(liang)最多)
2 利(li)用匹(pi)配的(de)特征(zheng)點估(gu)(gu)計出E矩陣(本質矩陣),估(gu)(gu)計圖像(xiang)位(wei)姿
3 進行(xing)三角(jiao)化(hua)生成三維(wei)空間點,三角(jiao)化(hua)是利用兩(liang)個(ge)匹(pi)配的(de)圖像坐標和圖像(xiang)位姿以(yi)及(ji)相機(ji)的內(nei)參矩陣,求得匹(pi)配點(dian)的三維點(dian)坐標。
4 對所有已(yi)生成的(de)三維(wei)點和已(yi)估計出的(de)位姿(zi),使用ceres庫進(jin)行ba(bundle adjustment)優化。通過最小化重投(tou)影誤差實現剔除誤差過大的(de)點
5 最后對所有數據進(jin)行ba優化 即全局優化
第四步:稠密重建
在重建(jian)場景的(de)(de)稀疏表示和(he)輸入圖像的(de)(de)相機姿勢(shi)后,MVS現在可(ke)以恢復更密(mi)集的(de)(de)場景幾何。COLMAP有(you)一個集成的(de)(de)密(mi)集重建(jian)管道,可(ke)以為(wei)所(suo)有(you)的(de)(de)配準圖像生成深度(du)和(he)法向圖,將深度(du)和(he)法向圖融(rong)(rong)合(he)到一個將稀疏點云融(rong)(rong)合(he)成密(mi)集點云,最后使用泊松(song)(Poisson)或三(san)角剖分(Delaunay)重建方法從融合的點云中估計出一(yi)個密集曲面。
稠密重建分為:
1 是還原圖像,去除圖像的畸變
2 是計算深(shen)度圖(tu)和法(fa)向圖(tu)
3 將深(shen)度和(he)法(fa)向圖融合成(cheng)到點云里
4 點(dian)云網格劃分形成曲面
colmap命令(ling)行執行過程
初始數據(ju)為圖像文(wen)件(jian)和數據(ju)庫文(wen)件(jian)

圖(tu)像文件包含128張(zhang)jpg圖(tu)像


1 特(te)征(zheng)提取(qu) 利用(yong)特(te)征(zheng)提取(qu)算法提取(qu)每一張圖片的特(te)征(zheng)點并獲(huo)得特(te)征(zheng)點的描(miao)述符

2 窮盡匹(pi)(pi)配 匹(pi)(pi)配每一張圖片與其他所(suo)有圖片的(de)特(te)征(zheng)點,并進行幾何校驗(yan)。

3 稀疏重建
首(shou)先使用兩張(zhang)圖(tu)(tu)(tu)片(pian),將(jiang)第一(yi)(yi)張(zhang)圖(tu)(tu)(tu)片(pian)的位(wei)姿(zi)(zi)記(ji)為單位(wei)陣,通過(guo)(guo)匹(pi)配的特征點(dian)利用本質矩陣求得另一(yi)(yi)張(zhang)圖(tu)(tu)(tu)像(xiang)位(wei)姿(zi)(zi),通過(guo)(guo)估計基礎(chu)矩陣得到(dao)相(xiang)機(ji)的內參矩陣,利用兩個(ge)匹(pi)配的圖(tu)(tu)(tu)像(xiang)坐(zuo)標(biao)和圖(tu)(tu)(tu)像(xiang)位(wei)姿(zi)(zi)以(yi)及相(xiang)機(ji)的內參矩陣,進行三(san)(san)(san)角化(hua)(hua)(hua)生(sheng)成三(san)(san)(san)維空間(jian)點(dian)。接(jie)著使用ba(bundle adjustment)優(you)(you)化(hua)(hua)(hua)生(sheng)成的三(san)(san)(san)維點(dian),通過(guo)(guo)最小(xiao)化(hua)(hua)(hua)重(zhong)投影(ying)誤差實現剔除誤差過(guo)(guo)大的點(dian)。然后(hou)每(mei)增(zeng)加一(yi)(yi)張(zhang)圖(tu)(tu)(tu)片(pian),重(zhong)復進行估計圖(tu)(tu)(tu)像(xiang)位(wei)姿(zi)(zi)、三(san)(san)(san)角化(hua)(hua)(hua)、ba優(you)(you)化(hua)(hua)(hua)、全局ba優(you)(you)化(hua)(hua)(hua)等步驟。直至添加完所有(you)圖(tu)(tu)(tu)片(pian)

稀疏重建效果(guo)



4 稠密重(zhong)建
(1) 圖(tu)像去畸變,還原未(wei)失(shi)真的圖(tu)片

(2)計算深度和法向(xiang)圖

立體匹配后(hou)生成(cheng)的深度(du)圖

立體匹(pi)配后生成的法(fa)向圖

(3)在稀(xi)疏點云中融合多幅圖(tu)(tu)(tu)像的(de)(de)深度圖(tu)(tu)(tu)和法向圖(tu)(tu)(tu),然后生成場景的(de)(de)密集點云。

稠密點云效果(guo)如下:

(4)使用三角剖(pou)分(fen)算(suan)法進行(xing)曲面重建,重建效果如(ru)下(xia):
