下彌 合光照多樣性,通過使用遮擋判斷的方法使得映射平順美觀,在取出了錯誤判斷和映射的 基礎(chǔ)上降低了計算的復(fù)雜度,使得最終的處理步驟不會拖慢其上一步快速重建的步驟。這 也使得本方法真正適配于快速三維重建系統(tǒng),適用于無序點云場景的快速上色,特別是對 于點云稠密度較低的點云可以還原其RGB信息,做到不因點云的密度而損失分辨率。本方 法針對快速重建的稀疏點云采取特別步驟,對其三維的紋理映射有著優(yōu)于其他方法的精度 和美觀程度,屬于國內(nèi)外首創(chuàng)。
【附圖說明】
[0024] 圖1是本法明方法的流程圖;
[0025] 圖2相機對三維空間中某一點成像是的映射關(guān)系和原理;
[0026] 圖3是遮擋判斷部分的算法流程圖。
【具體實施方式】
[0027] 參見圖1,本發(fā)明對三維場景進行顏色映射的方法,三維無序點云和不同視角的 RGB紋理,步驟如下:
[0028] S1,將系統(tǒng)輸入的無序點云進行快速三角化,得到基于面片的三維模型:這部分使 用貪婪投影三角化算法。貪婪投影三角化算法原理是處理一系列可以使網(wǎng)格"生長擴大"的 點(邊緣點),延伸這些點直到所有符合幾何正確性和拓撲正確性的點都被連上。該算法的 優(yōu)點是可以處理來自一個或者多個掃描儀掃描得到并且有多個連接處的散亂點云。但該算 法也有一定的局限性,它更適用于采樣點云來自于表面連續(xù)光滑的曲面并且點云密度變化 比較均勻的情況。
[0029] 該算法的三角化過程是局部進行的,首先沿著一點的法線將該點投影到局部二維 坐標(biāo)平面內(nèi)并連接其他懸空點,然后在進行下一點。所以這里設(shè)置如下參數(shù):
[0030] 1)控制搜索鄰域大小。定義可搜索的鄰域個數(shù),規(guī)定被樣本點搜索其鄰近點的最 遠距離,特征值一般是50-100和2. 5-3 (或者1. 5每柵格)。
[0031] 2)設(shè)置三角化后得到的每個三角形的最大可能邊長。
[0032] 3)設(shè)定三角化后每個三角形的最大角和最小角。兩者至少要符合一個。典型值分 別是10和120度(弧度)。
[0033] 4)處理邊緣或者角很尖銳以及一個表面的兩邊非??拷那闆r。如果某點法線 方向的偏離超過指定角度(注:大多數(shù)表面法線估計方法可以估計出連續(xù)變化的表面法線 方向,即使在尖銳的邊緣條件下),該點就不連接到樣本點上。該角度是通過計算法向線段 (忽略法線方向)之間的角度。另外應(yīng)該保證法線朝向,如果法線方向一致性標(biāo)識沒有設(shè) 定,就不能保證估計出的法線都可以始終朝向一致。
[0034] S2,讀入場景的RGB紋理信息和拍攝紋理信息時相機的位參并進行預(yù)處理,將對 應(yīng)位置的RGB信息和對應(yīng)相機的位參信息按對應(yīng)位置讀入相應(yīng)數(shù)組。使用圖像平滑,直方 圖均衡化等方法將多幅RGB紋理信息進行彩色矯正;
[0035] 場景的RGB紋理信息在快速重建場景時已經(jīng)拍攝并存下,保存為.png格式的圖 片,分辨率為640*480。
[0036] 算法讀入RGB紋理信息和相機位參后存為有對應(yīng)關(guān)系的數(shù)組,同時對紋理信息進 行圖像平滑和直方圖均衡化的處理。直方圖均衡化是圖像處理領(lǐng)域中利用圖像直方圖對對 比度進行調(diào)整的方法。這種方法通常用來增加許多圖像的局部對比度,尤其是當(dāng)圖像的有 用數(shù)據(jù)的對比度相當(dāng)接近的時候。通過這種方法,亮度可以更好地在直方圖上分布。這樣就 可以用于增強局部的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴展常用的 亮度來實現(xiàn)這種功能。本算法通過直方圖均衡化來彌合不同視角紋理之間光照的差異性, 有一定的效果。
[0037] 如果不做任何處理就將兩幅紋理映射到同一個三維模型上,交界處將出現(xiàn)明顯的 顏色差異。這種明確的顏色差異顯然是不便于觀察,而且是不美觀的。
[0038] 針對這種情況,本發(fā)明使用直方圖均衡化來彌合顏色差異,在進行直方圖均衡化 后,兩個視點的光照程度明顯地相似。光照差異帶來的模型顏色差異已經(jīng)有效的彌合。所 以,通過直方圖均衡化的方法可以很好地對三維模型可能出現(xiàn)的顏色差異進行修正。
[0039] 這里需要強調(diào)的是,本方法沒有采用先映射后做blending的方法,因為映射一定 意味著有部分二維圖像中的面片沒有映射到三維場景中去,也意味著二維原始圖像中光照 和顏色信息進一步丟失。在丟失信息后做blending -定意味著一定程度的算法不收斂和 假細節(jié),假顏色。所以本方法選擇在映射前對二維紋理圖像組的所有圖像進行統(tǒng)一的直方 圖矯正。以統(tǒng)一的標(biāo)準校對光照量,從信息的角度來說是有依據(jù)并且令人信服的;
[0040] S3:取輸入面片,判斷面片在某視角下是否可見并標(biāo)記,將輸入面片索引依次使 用內(nèi)外參數(shù)映射至當(dāng)前視角,判斷是否在相機視角內(nèi),如果在視角內(nèi),那么標(biāo)記為視場內(nèi)可 見。
[0041] 相機的投影關(guān)系見圖2。Oc點為攝像機光心,Xc軸和Yc軸與圖像的X軸與Y軸 平行,Zc軸為攝像機光軸,它與圖像平面垂直。光軸與圖像平面的交點,極為圖像坐標(biāo)系的 原點,由點Oc與Xc、Yc、Zc軸組成的直角坐標(biāo)系稱為攝像機坐標(biāo)系,OOc為攝像機焦距:
[0042] 由于攝像機可以安放在環(huán)境中任意位置,所以在環(huán)境中選擇一個基準坐標(biāo)系來描 述攝像機位置,并用它描述環(huán)境中任何物體的位置,該坐標(biāo)系為世界坐標(biāo)系。它有Xw、Yw和 Zw軸組成,攝像機坐標(biāo)系與世界坐標(biāo)系之間的關(guān)系可以用旋轉(zhuǎn)矩陣與平移向量t來描述。 如下:
[0043]
[0044] 對本算法,首先,算法讀入待投影三維模型的全部面片信息。面片采用三角面片 形式,即每個面片有三個頂點,每個頂點是一個三維的空間向量,依次代表其投影到空間 X,Y,Z軸的位置,設(shè)為Xw,Yw,Zw。
[0045] 將面片信息讀入后首先判斷哪些面片在相機視場內(nèi)。取視場1的內(nèi)外參數(shù),將三 維坐標(biāo)用以下關(guān)系投影至對應(yīng)的二維視場下。
[0046]
[0047] 其中Xw,Yw,Zw為面片頂點的三維坐標(biāo)。R,T代表相機的旋轉(zhuǎn)和平移矩陣,為相機 的外參。Fx, fy, uO, v0為相機的內(nèi)參,構(gòu)成內(nèi)參數(shù)矩陣。外參矩陣和內(nèi)參數(shù)矩陣由相機的位 參矩陣讀入得到。
[0048] 經(jīng)過矩陣相乘即可得到(u,V),即圖像的像素坐標(biāo)。若(u,V)在相機市場內(nèi),即其 屬于([1,640],[1,480]),那么認為空間中點(Xw,Yw,Zw)投影在該視點的紋理上,即該點 在相機市場內(nèi)。
[0049] 對于面片數(shù)據(jù)結(jié)構(gòu),設(shè)定標(biāo)志位visible,如果面片的三個頂點在該視角都可見 (即三個頂點投影后都落在二維圖像有意義的范圍內(nèi)),那么設(shè)定visible為I (true)。
[0050] 在遍歷所有面片后,將對標(biāo)志位為"真"的部分進行重新檢視;
[0051] S4:檢視前面所有視角,判斷當(dāng)前視角內(nèi)面片是否被前面視角遮擋,并改變標(biāo)記, 依次取S3輸出視角內(nèi)可見的面片,判斷前面所有視角已染色好的面片與需要投影的面片 的遮擋關(guān)系,如被遮擋,去掉標(biāo)記,否則保留標(biāo)記。
[0052] 算法經(jīng)過S3步驟后,得到的是落在視角內(nèi)的所有面片,但是這些面片并不是一定 值得去投影,由于相機投影的過程是一種放射變換。很可能互相遮擋的兩個面片經(jīng)過投影 后全部都落在相機市場內(nèi)。如果此時進行投影,很可能使得互相遮擋的兩個面片全部上色。 這顯然是不對的,因為被遮擋的面片理應(yīng)看不見。如果不考慮遮擋關(guān)系而直接上色,被遮