一種大場景對象的三維重建方法
【專利摘要】一種大場景對象的三維重建方法,其特征在于:包括以下步驟:1)用相機從不同視角、位置對場景對象采集若干張序列照片;2)、將序列照片劃分為若干單元Ni,3)、采用SIFT算法對每個單元的三張序列張片進行特征檢測、匹配;4)將單元N1,(i=1)的第一張序列照片初始化,計算另外兩張序列照片的基礎矩陣F、本質矩陣E;5)、求解其他單元中每張序列照片的相機參數Ri、Ti和三維點云坐標Mj);7)、種子面片的擴展;8)、種子面片的過濾;本發(fā)明采用三視圖約束有效的去除誤匹配點得出準確的基礎矩陣,重建的精度高,并且單元之間不需要坐標轉換,降低了計算復雜度,通過在運動恢復結構的基礎上進行稠密重建使得到三維模型的點云更加稠密。
【專利說明】
一種大場景對象的三維重建方法
技術領域
[0001] 本發(fā)明涉及一種計算機視覺和計算機圖形學領域,尤其是一種大場景對象的三維 重建方法。
【背景技術】
[0002] 三維重建的最終目的是恢復目標場景的三維結構,基于圖像序列的三維重建是獲 取三維結構的主要手段之一。該方法可以看作是照相的逆過程,其成本相對較低,只需要普 通的攝像機即可,操作簡單、攜帶方便,基于圖像序列的特征點匹配與多視圖立體重建是計 算機視覺技術中的研究基礎和重點。
[0003] 針對大場景對象的三維重建方法現在用的比較多的方法是SFM(Structure From Motion),其缺點是特征檢測與匹配時采用的是對極幾何約束,只能確定匹配點在對應極線 上,而不能確定匹配點準確位置,這種約束比較弱。一旦誤匹配點刪除不掉,求解基礎矩陣 就是錯誤的,得到的三維點云坐標也是錯誤的,以此求得的其他圖像匹配點對應的點云坐 標也是錯誤的,就會出現誤差累積問題。還有一種是基于獨立三視圖的三維重建,把每三幅 圖作為一個獨立單元進行三維重建,重建之后各單元之間進行坐標變換、比例變換把所有 的三維點云轉化到同一個坐標下,該方法計算復雜度比較大。另外這兩種方法有一個共同 的問題是重建的點云都比較稀疏,不能滿足可視化的效果。一般稀疏重建之后還需要進行 稠密重建,稠密重建方法用的最多的是基于面片的三維重建(Patched-based Multi-View Stereo,PMVShPMVS方法的輸入是一組圖像序列集合以及稀疏重建求得的相機參數R、T,然 后輸出三維模型的密集點云。
【發(fā)明內容】
[0004] 針對現有技術的不足,本發(fā)明提供一種大場景對象的三維重建方法。
[0005] 本發(fā)明的技術方案為:一種大場景對象的三維重建方法,其特征在于:包括以下步 驟:
[0006] 1)用相機從不同視角、位置對場景對象采集若干張序列照片,并按照采集的先后 順序將若干張序列照片編號為Ii,(i = l,2,3···!!);
[0007] 2)將序列照片按照編號的先后順序劃分為若干單元&,(1 = 1,2,3-_1〇,每個單元 包括依次采集的三張序列照片,并將單元&,(丨=1,2,3···!!)的第三張序列照片作為相鄰下 一單元Ν 1+1,(? = 1,2,3···η)的第一張序列照片,并將該序列照片作為該兩相鄰單元的公共 序列照片;
[0008] 3)通過采用SIFT算法對每個單元Ni,(i = l,2,3…η)包含的三張序列照片進行特 征檢測、匹配,并利用三視圖約束去除誤匹配點;
[0009] 4)將單元Ni,(i = 1)的第一張序列照片的相機參數初始化,并采用RANSANC算法求 出單元心,(1 = 1)中另外兩張序列照片的基礎矩陣F、本質矩陣E,得到該兩張序列照片中每 張序列照片的相機參數心、!\和三維點云坐標Mj;
[0010] 5)相鄰兩單元中將單元化,(1 = 1,2,3-_11)中公共序列照片的相機參數1^、1\作為 其相鄰下一單元化+1,(1 = 1,2,3 - 1〇的公共序列照片的相機參數的初始值,并求解其相鄰 下一單元Ni+1,(i = 1,2,3…η)中其他兩張序列照片的相機參數Ri、Ti和三維點云坐標Mj,以 此計算出單元11,(1 = 1,2,3-1〇其他兩張序列照片中每張序列照片的相機參數1?1、1'1和三 維點云坐標Mj;
[0011] 6)利用步驟4、5得到其他單元中每張序列照片的相機參數RhTdP三維點云坐標 Mj,并將所有的序列照片的相機參數RnTjP三維點云坐標W作為PMVS算法的輸入,從而得 到場景對象的種子面片;
[0012] 7)種子面片的擴展:將序列照片IJ分為若干個圖像塊QUj),利用相鄰種子面 片具有位置和法向相似的特性對種子面片進行擴展,從而使擴展后的種子面片逐步覆蓋目 標物體的表面;
[0013] 8)種子面片過濾:采用局部灰度一致性約束和全局可見一致性約束來剔除擴展錯 誤的種子面片。
[0014] 上述技術方案中,步驟1)中相機圍繞場景目標采集序列照片時,相鄰兩張序列照 片之間的角度為5°~15°,采集的所述序列照片數量為奇數,采集的序列照片至少為3張。
[0015] 上述技術方案中,步驟1)中采集的序列照片為45張。
[0016] 上述技術方案中,步驟3)中采用SIFT算法對序列照片進行特征檢測、匹配,從而計 算出每個單元中三張序列照片的同名像點my,其中任意兩張序列照片的同名像點在另一張 序列照片上的匹配點在該任意兩張序列張片同名像點對應極線的交點上,若匹配點與交點 的距離超過兩個像素則作為誤匹配點刪除。
[0017] 上述技術方案中,步驟4)中初始化后的單元化,(1 = 1)的第一張序列照片的相機 參數Ri為3 X 3的單位矩陣,1\為3 X 1的零矩陣;
[0018] 采用RANSANC算法求解基礎矩陣F,結合相機內參K求解本質矩陣E,然后對本質矩 陣E進行奇異值分解得到相機參數!^、!^,并得到三維點云坐標…,然后采用集束調整 (Bundle Adjustment)算法局部優(yōu)化序列照片的相機參數Ri、Ti、三維點云坐標Mj,通過集束 調整(bundle adjustment)算法使三維點云坐標Mj的重投影點與在第i張序列照片的同名 像點差值的平方和最小,其計算式為:
[0019] ~ KiRilTtlMj)2,
[0020] 其中D是歐氏距離,N為序列照片數,Μ為三維點云坐標數。
[0021] 上述技術方案中,步驟7)中通過種子面片的擴展使得至少在每個圖像塊中重建出 一個種子面片。
[0022] 上述技術方案中,步驟8)中擴展錯誤的種子面片包括外部種子面片和內部種子面 片,將種子面片擴展、過濾循環(huán)迭代3次使目標物體表面被稠密的種子面片完全覆蓋。
[0023] 本發(fā)明的有益效果為:采用三視圖約束可以有效的去除誤匹配點得出準確的基礎 矩陣,重建的精度高,并且單元之間不需要坐標轉換,從而大大降低了計算復雜度,通過在 運動恢復結構的基礎上進行稠密重建使得到三維模型的點云更加稠密。
【附圖說明】
[0024]圖1為本發(fā)明的三視圖約束示意圖;
【具體實施方式】
[0025]下面結合附圖對本發(fā)明的【具體實施方式】作進一步說明:
[0026]如圖1所示,一種大場景對象的三維重建方法,其特征在于:包括以下步驟:
[0027] 1)用相機從不同視角、位置對場景對象采集若干張序列照片,并按照采集的先后 順序將若干張序列照片編號為Ii,(i = l,2,3···!!);
[0028] 2)將序列照片按照編號的先后順序劃分為若干單元牝(1 = 1,2,3-_1〇,每個單元 包括依次采集的三張序列照片,并將單元化,(丨=1,2,3···!!)的第三張序列照片作為相鄰下 一單元Ν 1+1,(? = 1,2,3···η)的第一張序列照片,并將該序列照片作為該兩相鄰單元的公共 序列照片;
[0029] 3)通過采用SIFT算法對每個單元Ni,(i = l,2,3…η)包含的三張序列張片進行特 征檢測、匹配,并利用三視圖約束去除誤匹配點;
[0030] 4)將單元Ni,(i = 1)的第一張序列照片的相機參數初始化,并采用RANSANC算法求 出單元化,(1 = 1)中另外兩張序列照片的基礎矩陣F、本質矩陣E,得到該兩張序列照片中每 張序列照片的相機參數R:、!\和三維點云坐標Mj;
[0031] 5)上一單元Ni,(i = l,2,3…η)中公共序列照片的相機參數Ri、Ti作為下一單元 化+1,(1 = 1,2,3~1〇第一張序列照片的相機參數的初始值,并求解下一單元化+1,(1 = 1,2, 3…η)中其他兩張序列照片的相機參數Ri、Ti和三維點云坐標Mj,以此計算出單元Ni+1,(i = 1,2,3…η)其他兩張序列照片中每張序列照片的相機參數RnTjP三維點云坐標MJ;
[0032] 6)利用步驟4、5得到其他單元中每張序列照片的相機參數RnTjP三維點云坐標 Mj,并將所有的序列照片的相機參數RnTjP三維點云坐標W作為PMVS算法的輸入,從而得 到場景對象的種子面片;
[0033] 7)種子面片的擴展:將序列照片劃分為若干個圖像塊QUj),利用相鄰種子面 片具有位置和法向相似的特性對種子面片進行擴展,從而使擴展后的種子面片逐步覆蓋目 標物體的表面;
[0034] 8)種子面片過濾:采用局部灰度一致性約束和全局可見一致性約束來剔除擴展錯 誤的種子面片。
[0035] 上述技術方案中,步驟1)中相機圍繞場景目標采集序列照片時,相鄰兩張序列照 片之間的角度為5°~15°,采集的所述序列照片數量為奇數,采集的序列照片至少為3張。 [0036]上述技術方案中,步驟1)中采集的序列照片為45張。
[0037] 上述技術方案中,步驟3)中采用SIFT算法對序列照片進行特征檢測、匹配,從而計 算出每個單元中三張序列照片的同名像點my,其中任意兩張序列照片的同名像點在另一張 序列照片上的匹配點在該任意兩張序列張片同名像點對應極線的交點上,若匹配點與交點 的距離超過兩個像素則作為誤匹配點刪除,圖1中χ、,、^為任意單元三張序列照片的同名 像點,其中兩張序列照片的同名像點x'、x〃的匹配點在點該兩張序列照片同名像點x'、x〃對 應的極線1 12、113的交點上,如果匹配點與這個交點的距離超過2個像素則作為誤匹配點刪 除。
[0038] 上述技術方案中,步驟4)中初始化后的單元化,(1 = 1)的第一張序列照片的相機 參數Ri為3 X 3的單位矩陣,1\為3 X 1的零矩陣;
[0039] 采用RANSANC算法求解基礎矩陣F,結合相機內參K求解本質矩陣E,然后對本質矩 陣E進行奇異值分解得到相機參數!^、!^,并得到三維點云坐標…,然后采用集束調整 (Bundle Adjustment)算法局部優(yōu)化序列照片的相機參數Ri、Ti、三維點云坐標Mj,通過集束 調整(bundle adjustment)算法使三維點云坐標Mj的重投影點與在第i張序列照片的同名 像點差值的平方和最小,其計算式為:
[0040] η?ηΚι;ι·.Μ] Ef=J. 〇 (m,;y· - ΚγΚ-,χΓ^Μρ2,
[0041] 其中D是歐氏距離,N為序列照片數,M為三維點云坐標數。
[0042]上述技術方案中,步驟6)中采用Harris和D0G算子檢測序列照片的特征點,找到滿 足對極幾何約束的潛在匹配點對,對潛在匹配點對采用三角原理方法求得三維點云坐標 Mj,種子面片中心C(p)為三維點云坐標Μρ序列照片集合為ImzihlizldJ,...,!!},空間 面片P的單位法向量n(p)為由空間面片中心c(p)指向參考圖像R(p)的相機光心,即:
[0043] c(p)^{Triangulation from f and f/ }
[0044] n(p) ·<- c(p)(){/,) / ?<;·(p) 0(/,} |
[0045] R(p)-Ii
[0046] 同時初始化¥(?),,(?),¥(?)為準可見圖像集,¥(?)序列照片的空間面片?的單位 法向量n(p)和空間面片中心c(p)所在光線之間的夾角小于60°,即:
[0048]其中0(li)為序列照片Ii對應相機的光心,
[0049] V$(p)為可見圖像集,V$(p)中的序列照片的空間面片中心c(p)投影到參考圖像R (P)與該序列照片之間的灰度一致性函數的值大于閾值α = 0.4,即:
[0050] V*(p) = {l|leV(p),h(p,I,R(p))>a},
[0051] 其中h(p,I,R(p))是指序列照片I和參考圖像R(p)之間的灰度一致度量,取為1減 去其NCC(歸一化相交相關值)值,然后用空間面片p在集合V$(p)上的灰度一致性函數
來進一步優(yōu)化空間面片中心c(p)和 空間面片的單位法向量n(p),用優(yōu)化后種子面片中心c(p)和種子面片的單位法向量n(p)來 更新面片的V(p)、V$ (p),如果|V$ (p) | > γ,則生成種子面片成功,然后將每張序列照片Ijij 分為大小為β X β(β = 32)的圖像塊Ci (X,y),任意圖像塊Ci (X,y)有兩個對應的集合Qi (X,y)、 Q^(x,y)用來存儲該圖像塊對應的可見空間面片,其中,x,y為序列照片1:的索引;然后把生 成的種子面片投影到劃分的序列照片上,記錄種子面片所在的圖像塊(^(^ 7),
[0053]上述技術方案中,步驟7)中通過種子面片p的擴展使得至少在每個圖像塊中重建 出一個種子面片,
[0054]上述技術方案中,步驟8)中擴展錯誤的種子面片p包括外部種子面片和內部種子 面片,將種子面片擴展、過濾循環(huán)迭代3次使目標物體表面被稠密的種子面片完全覆蓋。 [0055]上述實施例和說明書中描述的只是說明本發(fā)明的原理和最佳實施例,在不脫離本 發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進,這些變化和改進都落入要求保 護的本發(fā)明范圍內。
【主權項】
1. 一種大場景對象的Ξ維重建方法,其特征在于:包括W下步驟: 1) 通過相機從不同視角、位置對場景對象采集若干張序列照片,并按照采集的先后順 序將若干張序列照片編號為Ii,(i = l,2,3…n); 2) 將序列照片按照編號的先后順序劃分為若干單元扣,。=1,2,3-'11),每個所述單元 包括依次采集的Ξ張序列照片,并將單元Νι,α = 1,2,3···η)的第Ξ張序列照片作為相鄰下 一單元Νι+ι,α = 1,2,3···η)的第一張序列照片,并將該序列照片作為該兩相鄰單元的公共 序列照片; 3) 通過采用SIFT算法對每個單元Νι,α = 1,2,3…η)包含的Ξ張序列張片進行特征檢 巧。、匹配,并利用Ξ視圖約束去除誤匹配點; 4) 將單元Ni,(i = l)的第一張序列照片的相機參數初始化,并采用RANSANC算法求出單 元Νι,α = 1)中另外兩張序列照片的基礎矩陣F、本質矩陣E,得到該兩張序列照片中每張序 列照片的相機參數Ri、Ti和Ξ維點云坐標Mj; 5) 相鄰兩單元中將單元Ni,a = l,2,3…η)中公共序列照片的相機參數Ri、Ti作為其相 鄰下一單元Νι+ι,α = 1,2,3…η)的公共序列照片的相機參數的初始值,并求解其相鄰下一 單元Ni+i,α = 1,2,3···η)中其他兩張序列照片的相機參數Ri、Ti和Ξ維點云坐標Mj,W此計 算出單元扣+1,。= 1,2,3-,11)其他兩張序列照片中每張序列照片的相機參數私、1'1和;維點 云坐標Mj; 6) 利用步驟4、5得到其他單元中每張序列照片的相機參數Ri、Ti和Ξ維點云坐標Mj,并 將所有的序列照片的相機參數Ri、Ti和Ξ維點云坐標心作為PMVS算法的輸入,從而得到場景 對象的種子面片; 7) 種子面片的擴展:將序列照片Ii劃分為若干個圖像塊Ci(x,y),利用相鄰種子面片具 有位置和法向相似的特性對種子面片進行擴展,從而使擴展后的種子面片逐步覆蓋目標物 體的表面; 8) 種子面片過濾:采用局部灰度一致性約束和全局可見一致性約束來剔除擴展錯誤的 種子面片。2. 根據權利要求1所述的一種大場景對象的Ξ維重建方法,其特征在于:步驟1)中相機 圍繞場景目標采集序列照片時,相鄰兩張序列照片之間的角度為5°~15°,采集的所述序列 照片數量為奇數,采集的序列照片至少為3張。3. 根據權利要求1所述的一種大場景對象的Ξ維重建方法,其特征在于:步驟3)中采用 SIFT算法對序列照片進行特征檢測、匹配,從而計算出每個單元中Ξ張序列照片的同名像 點mu,其中任意兩張序列照片的同名像點在另一張序列照片上的匹配點在該任意兩張序列 張片同名像點對應極線的交點上,若匹配點與交點的距離超過兩個像素則作為誤匹配點刪 除。4. 根據權利要求1所述的一種大場景對象的Ξ維重建方法,其特征在于:步驟4)中采用 RANSANC算法求解基礎矩陣F,結合相機內參K求解本質矩陣E,然后對本質矩陣E進行奇異值 分解得到相機參數Ri、Ti,并得到Ξ維點云坐標Mj,然后采用集束調整算法局部優(yōu)化序列照 片的相機參數Ri、Ti、Ξ維點云坐標Mj,通過集束調整算法使Ξ維點云坐標Mj的重投影點與 在第i張序列照片的同名像點mu差值的平方和最小,其計算式為:其中D是歐氏距離,N為序列照片數,Μ為Ξ維點云坐標數。5. 根據權利要求1所述的一種大場景對象的Ξ維重建方法,其特征在于:步驟7)中通過 種子面片的擴展使得至少在每個圖像塊中重建出一個種子面片。6. 根據權利要求1所述的一種大場景對象的Ξ維重建方法,其特征在于:步驟8)中擴展 錯誤的種子面片包括外部種子面片和內部種子面片,將種子面片擴展、過濾依次循環(huán)迭代3 次使目標物體表面被稠密的種子面片完全覆蓋。7. 根據權利要求2所述的一種大場景對象的Ξ維重建方法,其特征在于:采集的序列照 片為45張。
【文檔編號】G06T17/00GK106097436SQ201610406617
【公開日】2016年11月9日
【申請日】2016年6月12日
【發(fā)明人】林靖宇, 鄭恩
【申請人】廣西大學