一種實體三維模型自動建模方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及點云處理技術(shù)、三維建模技術(shù)和紋理生成技術(shù),屬于虛擬現(xiàn)實領(lǐng)域,具 體來說是一種實體三維模型自動建模方法。
【背景技術(shù)】
[0002] 圖像的建模與植染技術(shù),簡稱 IBMR(Image_Based Modeling and Rendering),利 用物體的二維圖像來生成三維模型,物體的幾何特征信息和渲染特征信息不需要用戶輸 入,直接從攝像頭采集到的圖像中獲得。
[0003] IBMR技術(shù)分為兩種方式:主動法和被動法。主動法在圖像采集過程中,使用光源 向場景中發(fā)射光線,如紅外線或者可見光,主動地獲得場景的反饋,從而建立場景的三維模 型;被動法不直接控制光源,通過被動地分析圖像來建立模型。主動法直接獲得物體表面的 各種特征,簡化建模過程,隨著三維信息處理算法越來越成熟可靠,以及三維信息采集硬件 的不斷涌現(xiàn),主動法三維建模技術(shù)正在迅速地發(fā)展。
[0004] 三維建模技術(shù)在工業(yè)制造、游戲娛樂和虛擬現(xiàn)實等領(lǐng)域中有廣泛的應(yīng)用。在實際 應(yīng)用中,人們對實體三維模型可視化效果提出了越來越高的要求,例如逆向工程所獲得的 實體模型是否可以更精確,三維電子游戲中的人物和環(huán)境是否可以更真實等等。除了模型 的精確度,人們還對三維建模技術(shù)的快速性和便利性提出了要求,例如如何縮短建模時間, 如何減小建模過程的復(fù)雜性,如何降低三維建模技術(shù)的使用難度,這些都是三維建模技術(shù) 研宄的方向。
[0005] 目前,國內(nèi)外已經(jīng)有多種多樣的三維建模系統(tǒng),包括結(jié)構(gòu)光建模系統(tǒng)、激光三維掃 描儀等。現(xiàn)有的建模系統(tǒng)難以在保證性價比的同時實現(xiàn)高效用,并且還存在以下缺點:
[0006] -方面,高精度的三維建模系統(tǒng)常?;谝恍?fù)雜昂貴的傳感器,例如結(jié)構(gòu)光傳 感器、激光測距傳感器或者激光雷達;
[0007] 另一方面,三維建模系統(tǒng)的建模過程中往往離不開繁復(fù)的人工交互過程,例如參 數(shù)調(diào)整、點云手動配準等等,費時費力。
[0008] 基于上述缺點,研宄快速、自動的實體模型建模技術(shù)越來越重要,以相對低的成本 實現(xiàn)自動化三維建模,使得實體的三維模型可以和照片視頻一樣方便地獲取,滿足不同領(lǐng) 域?qū)θS建模技術(shù)越來越大的需求。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明的目的是為了解決三維建模流程中人工交互操作復(fù)雜繁瑣的問題,以及依 賴昂貴傳感器的問題,提出了 一種實體三維模型自動建模方法。
[0010] 一種實體三維模型自動建模方法,基于Kinect傳感器搭建實體三維模型建模系 統(tǒng),該系統(tǒng)包括Kinect傳感器、轉(zhuǎn)臺和計算機,轉(zhuǎn)臺由計算機通過串口進行通訊。該方法具 體步驟如下:
[0011] 步驟一、利用Kinect傳感器采集轉(zhuǎn)臺點云和建模物體點云,并通過實時配準獲得 物體和轉(zhuǎn)臺的混合點云;
[0012] 轉(zhuǎn)臺點云是指利用Kinect傳感器采集沒有放置建模物體時的點云;
[0013] 建模物體點云是指放置建模物體于轉(zhuǎn)臺上,在轉(zhuǎn)臺旋轉(zhuǎn)過程中利用Kinect傳感 器米集的點云;
[0014] 對建模物體點云利用三維重建項目Kinect Fusion進行實時配準,得到物體和轉(zhuǎn) 臺的混合點云。
[0015] 步驟二、對物體和轉(zhuǎn)臺的混合點云做點云預(yù)處理,得到帶有底面點的建模物體的 表面點云。
[0016] 步驟201、采用RANSAC平面提取方法,提取并刪除物體和轉(zhuǎn)臺的混合點云中包含 的轉(zhuǎn)臺底座點云,得到物體和轉(zhuǎn)臺旋轉(zhuǎn)平臺的混合點云。
[0017] 物體和轉(zhuǎn)臺的混合點云中包括了建模物體的點云,轉(zhuǎn)臺底座點云和轉(zhuǎn)臺旋轉(zhuǎn)平臺 部分的點云,將轉(zhuǎn)臺底座點云剔除,獲得物體和轉(zhuǎn)臺旋轉(zhuǎn)平臺的混合點云;
[0018] 步驟202、采用歐氏距離聚類分割方法,濾除轉(zhuǎn)臺點云中所包含的轉(zhuǎn)臺底座點云。
[0019] 步驟203、對步驟201和步驟202得到的點云,均采用體素柵格降采樣方法處理,獲 得物體和轉(zhuǎn)臺的混合點云的簡化點云,以及轉(zhuǎn)臺點云的簡化點云。
[0020] 步驟204、分別計算物體和轉(zhuǎn)臺混合點云的簡化點云以及轉(zhuǎn)臺點云的簡化點云的 FPFH三維特征,獲得物體和轉(zhuǎn)臺混合點云的特征點云以及轉(zhuǎn)臺點云的特征點云。
[0021] 步驟205、經(jīng)過步驟204處理后,將物體和轉(zhuǎn)臺的混合點云的特征點云以及轉(zhuǎn)臺點 云的特征點云進行配準,獲得配準點云。
[0022] 配準方法以點云的FPra特征作為配準依據(jù),通過比較各自的特征點云的FPra特 征,將兩個特征點云統(tǒng)一到同一個坐標系下,得到配準點云。
[0023] 步驟206、使用RANSAC方法分割配準點云,獲得轉(zhuǎn)臺旋轉(zhuǎn)平臺點云和物體點云;
[0024] 將配準點云使用RANSAC方法提取平面,將進行配準的兩個特征點云中重合的屬 于轉(zhuǎn)臺旋轉(zhuǎn)平臺部分的點云提取出來,形成轉(zhuǎn)臺旋轉(zhuǎn)平臺點云,其余部分形成物體點云。
[0025] 步驟207、用歐氏距離聚類分割方法濾除物體點云中的噪聲,得到?jīng)]有底部的物體 點云;
[0026] 步驟208、從步驟206中的轉(zhuǎn)臺旋轉(zhuǎn)平臺點云通過基于k-d樹的點搜索方法提取構(gòu) 成物體點云底部的點云。
[0027] 從轉(zhuǎn)臺旋轉(zhuǎn)平臺點云中獲取部分屬于建模物體的底面點云,該部分點云的密度明 顯低于其他部分的點云,通過基于k-d樹的點搜索方法去除點密度較大的點集,剩余的點 云構(gòu)成物體點云底部的點云。
[0028] 步驟209、融合步驟208中的物體點云底部的點云與步驟207中的沒有底部的物體 點云,得到帶有底面點的建模物體的表面點云。
[0029] 步驟三、將帶有底面點的建模物體的表面點云上的點連接成三角形網(wǎng)格,表面重 建后獲得物體的三維表面模型;
[0030] 采用Poisson表面重建方法進行表面重建,建立三維網(wǎng)格模型。
[0031] 步驟四、對物體的三維表面模型進行模型簡化處理,建立出物體的三維簡化表面 模型。
[0032] 根據(jù)仿真系統(tǒng)的具體要求,采用邊折疊方法,按照比例刪去三維網(wǎng)格模型上的點 和邊,建立出點數(shù)較少、三角形面片數(shù)較少的三維模型。
[0033] 步驟五、對步驟四中物體的三維簡化表面模型進行紋理映射。
[0034] 紋理映射分為兩部分,首先是將帶有彩色信息的點投影,生成彩色紋理點圖;然后 是對彩色紋理點圖進行鄰域顏色插值,填充點圖上的未著色區(qū)域,形成完整的紋理圖片。
[0035] 投影的步驟如下:
[0036] 步驟501、計算輸入點云X的三維質(zhì)心坐標,得到投射中心點C :
[0038] 其中,點云X是沒有底部的物體點云,投射中心點C坐標為:(X。,y。,z。),點云X上 的點坐標為(Xi, yi, Zi),η是點云X的點數(shù),η為整數(shù);
[0039] 步驟502、點云X投影到以投射中心點C為球心、半徑R的球體上,得到點集Ps
[0041] 其中,(xsi, ysi, zsi)是點集Ps上的點坐標,
[0042] 半徑R需要滿足條件R > MAXkiWyiWzi2I,ti是點云X上的點(X i,yi,Zi)在球體 上的距離系數(shù),該系數(shù)的數(shù)值不同,則點(Xi^pz i)在球體上的投影點(xsi,ysi,zsi)位置不
[0044] 步驟503、把點集己平移到以C為原點的直角坐標系下,得到點集P s',再轉(zhuǎn)換成球 坐標,得到點集P,〃 :
[0047] 其中,(xsi',ysi',zsi')是點集Ps'中點P si'的直角坐標系坐標,Cri, Φρ Θ D是點 psi'的球坐標系坐標,:Ti表示球坐標系原點C與點P si'之間的距離,Θ i表示有向線段Cp si' 與z軸正向的夾角,(J)i表示從z軸正方向看自X軸按逆時針方向轉(zhuǎn)到有向線段Cpsi'在xCy 平面的投影所轉(zhuǎn)過的角度;
[0048] 步驟504、將點集Ps〃進行等距圓柱投影,得到紋理坐標點集Pc:
[0050] 其中,(Ui, Vi)是紋理坐標點集匕內(nèi)的點二維坐標系內(nèi)的坐標,u $水平方向的像 素坐標,Vi為垂直方向的像素坐標;
[0051] 點云X中的每個點都對應(yīng)一個紋理圖片上二維坐標系內(nèi)的坐標(Ui, Vi)。
[0052] 步驟505、新建一張黑色圖片,將紋理坐標點集Pc中點(u i,Vi)的RGB值填充為點 云X的點(Xi, yi, Zi)的RGB值Credi, greeny Wuei),形成彩色紋理點圖。
[0053] 鄰域顏色插值的步驟如下:
[0054] 步驟I、檢索投影得到的彩色紋理點圖的每一個像素點,如果當前像素點?1的RGB 值是(〇, 〇, 〇),該點為非彩色點,進入步驟Π ,否則,像素點PiRGB值不是(0, 0, 0),為彩色 點,跳到步驟V。
[0055] 步驟II、在以非彩色點Pi為中心、邊長為l_t像素的正方形鄰域中進行遍歷,判斷 遍歷結(jié)束后鄰域內(nèi)是否存在彩色點,如果至少存在一個彩色點,則進行步驟III,否則,該鄰 域內(nèi)不存在彩色點,進入步驟IV。
[0056] 遍歷次數(shù)設(shè)為整數(shù)N ;當鄰域跨越彩色紋理點圖的邊界時,則超出邊界的部分從 當前邊界相對的另一條邊界處起繼續(xù)遍歷像素。
[0057] 步驟III、計算鄰域中每個彩色點的權(quán)重,再進入步驟V ;
[0058] 公式如下:
[0060] Wk為當前彩色點pk的權(quán)重,k為整數(shù);dk= I |pk-p」I,dk為當前彩色點pk到中心 點距離;d」是鄰域中每個彩色點p」距中心點p滿距離,j = I. . . k. . . m ;m是鄰域內(nèi)彩 色點的數(shù)量,m為整數(shù);
[0061] 步驟IV、改變鄰域大小為l_t= 1 ^t+Δ 1,遍歷次數(shù)加 1,重新進行遍歷。如果存 在至少一個彩色點,則進入步驟III ;如果遍歷次數(shù)N達到預(yù)設(shè)的上限后,沒有任何彩色點, 進入步驟VI ;
[0062] 步驟V、如果Pi是步驟I傳輸過來的彩色點,則直接將p RGB值添加到新的點 集Pt中;如果P i是步驟IV傳輸過來的點,則利用權(quán)重計算點p』勺RGB值,并添加到新的點 集Pt,完成鄰域顏色的插值;
[0064]點 口丨的 RGB 值為(red " greeny Wuei),點 pk的 RGB 值為(red k, greenk, bluek),ω k 為彩色點Pk的權(quán)重。