李 健, 馬泳潮, 馬 文
(陜西科技大學(xué) 電氣與信息工程學(xué)院, 陜西 西安 710021)
隨著多媒體技術(shù)的發(fā)展,三維重建技術(shù)被廣泛應(yīng)用于電影特效、數(shù)字城市、三維游戲、人機(jī)交互、非物質(zhì)文化遺產(chǎn)保護(hù)等領(lǐng)域,其研究意義與商業(yè)價值越來越凸顯出來[1-3].
由于計算機(jī)視覺理論的逐漸成熟,從圖像中獲取物體表面的三維信息的算法己經(jīng)達(dá)到了實際應(yīng)用的階段.立體視覺技術(shù)[4,5]、Shape From X技術(shù)、光度立體技術(shù)[6-8]等一系列圖形算法可以自動的從單幅或多幅真實物體照片中提取出其三維結(jié)構(gòu)的信息,而這些技術(shù)實施簡便,設(shè)備易于獲取,核心部件僅需幾臺數(shù)碼相機(jī)即可.所以,通過應(yīng)用計算機(jī)視覺理論,從真實物體的照片中重建物體的三維結(jié)構(gòu)的技術(shù)是目前得到真實物體3D模型的比較廉價的手段[9-12].
織物的三維仿真技術(shù)在服裝設(shè)計、電腦游戲、影視制作等方面的應(yīng)用前景非常廣闊.由于這項研究有著非常實際的應(yīng)用背景,世界各國的服裝研究機(jī)構(gòu)和企業(yè)對這一問題的研究開始高度重視.但是因織物本身的物理特性非常復(fù)雜,而且容易高度變形,因此要對織物進(jìn)行逼真的模擬是非常困難的,這也是計算機(jī)圖像處理領(lǐng)域內(nèi)極具挑戰(zhàn)性的一個課題,因此對織物的三維重建有著非常重要的意義[13,14].
在計算機(jī)視覺領(lǐng)域中對于織物的三維重建通常采用基于雙目視覺的立體匹配算法,但是立體匹配一直是雙目視覺的難點問題,通過這種方法實現(xiàn)重建是一個比較繁瑣的過程.為了簡單起見,我們在光度立體法的基礎(chǔ)上采用同材質(zhì)的采樣球,近似的求解出同樣環(huán)境下亮度與法向的關(guān)系,然后把這種關(guān)系運(yùn)用到被測的織物上來,以求出相對應(yīng)的三維信息.該方法不僅具有系統(tǒng)成本低廉、原理簡單的優(yōu)點,且三維數(shù)字化的效果較好.
從明暗恢復(fù)形狀(Shape From Shading,簡稱SFS)是計算機(jī)視覺中三維形狀恢復(fù)問題的關(guān)鍵技術(shù)之一,其任務(wù)是利用圖像中物體表面的明暗變化來恢復(fù)其表面各點的相對高度或表面法向等參數(shù)值,為進(jìn)一步對物體進(jìn)行三維重構(gòu)奠定基礎(chǔ).光度立體法就是在傳統(tǒng)SFS方法存在病態(tài)解的基礎(chǔ)上演變過來的.
光度立體法的實現(xiàn)就是在多個光源的分別作用下對物體拍攝一組照片,然后通過這組照片去求解物體表面的法向量,進(jìn)而求出深度.
在朗伯體表面反射模型下,物體表面一點的亮度只與其表面反射系數(shù)和表面法方向有關(guān),而且這個關(guān)系是線性的.這就給其向量場的計算帶了很大的方便,三幅不同光源的光度立體圖像中是可以唯一的決定物體表面向量方向的.設(shè)圖像一點的亮度為I0,其表面的單位法向量為N0,光源方向為S0,反射率為η.則根據(jù)朗伯體表面反射模型有:
I0=ηN0·S0
(1)
由于具有三個不同方向的光源分別照射同一點,所以通過公式(1)可以建立如下方程組.
(2)
將公式(2)寫成矩陣形式:
I=ηN·S
(3)
圖1 光度立體法
從公式(3)可見,如果已知η、S以及每點的亮度I就可以求出該點相對應(yīng)的法向量N.然而很遺憾,對一般物體,我們不能保證η是已知的,并且S的求解也需要一定的開銷.為了簡單起見,我們采用同材質(zhì)采樣球去近似的求解矩陣M=η*S的值.公式(3)可以改寫成:
I=M·N
(4)
所以只需要知道M的值,而不需要分別去求解出η與S的值,這樣就大大簡化了計算的過程.又因為采樣球和目標(biāo)物體的材質(zhì)是一樣的,所處的環(huán)境也是一樣的,所以它們表面亮度與法向量對應(yīng)的關(guān)系也是近似一樣的,即M是一樣的.
圖2 采樣球的二維到三維轉(zhuǎn)化
如圖2所示,右邊為空間坐標(biāo)系中的采樣球,左邊為正交投影后采樣球在圖像平面坐標(biāo)系中所對應(yīng)的像,并且圖像平面坐標(biāo)系與空間坐標(biāo)系中的YOZ平面重合.對于采樣球映射到圖片上的圓,可以先求出圓心坐標(biāo)(y0,z0),以及半徑r,再通過公式(5)求出圓上任何一點t(yt,zt)所對應(yīng)的采樣球上的點T(Xt,Yt,Zt),由于原點在球心上,坐標(biāo)值也為該點所在切面的單位法向量.
(5)
球上任一點T都有對應(yīng)的I向量(I1,I2,I3),因此由公式(4)可得:
(6)
把圓上每個像素點所對應(yīng)的值帶入公式(6)通過最小二乘法求解出矩陣M.然后通過公式(4)就可以直接求出被測物體圖片上任何一點的法向量N.這種方法比kd搜索最接近法向量要快的多,而且不會因為被測物體圖片像素的增大而影響運(yùn)算速度.
通過上節(jié)可以求出被測物體表面上點的切面法向量,再運(yùn)用法向量就可以求解出物體表面上點的相對深度值.由切平面理論,方向與切平面方向兩個主軸垂直,所以對每個像素點的深度都可以列兩個約束方程,如圖3所示.
圖3 像素三角化
如圖3所示,對于m×n的圖像,每個像素點(x,y)都有其對應(yīng)的深度值z.物體的表面切向可以用高度值來表示,即:
V1=(x+1,y,zx+1,y)-(x,y,zx,y)
=(1,0,zx+1,y-zx,y)
(7)
物體每一點的法向和表面切向相垂直,則:
N·V1=0
(8)
同理可得:
V1=(x,y+1,zx,y+1)-(x,y,zx,y)
=(0,1,zx,y+1-zx,y)
(9)
N·V1=0
(10)
展開,得:
nx+nz(zx+1,y-zx,y)=0
(11)
由此,對于m×n個像素的圖像,可以獲得2×m×n個如上的約束.每點的N是已知的,z是標(biāo)量.所有像素點的約束組成了一組方程,用矩陣表示的話,則可以得到稀疏矩陣A,A為2m×n.通過求解矩陣方程就可以得到被測物體投影到圖片上點的相對深度值z,它的大小是以圖像平面兩像素點的距離為單位長度的.從而確定了物體表面相對的三維坐標(biāo)(x,y,z).
在以上的理論基礎(chǔ)上,我們設(shè)計的算法如下所示.
輸入:采樣球與被測物體在三個不同方向光照射下各采集到的三張同樣大小的jpg格式照片.這些照片中被測物體位置始終不變,被測物體是在黑色背景前拍攝的,便于有效區(qū)域分離.
輸出:被測物體的三維點云數(shù)據(jù).
過程如下:
(1)對圖片做預(yù)處理,使圖片變成灰度圖像,根據(jù)灰度閾值(I1>20或I2>20或I3>20)區(qū)分有效區(qū)域和背景區(qū)域,對于處于背景區(qū)域的點的灰度值設(shè)置成(I1=0,I2=0,I3=0).
(2)對采樣球圖片運(yùn)用公式(5)與(6)求解出矩陣M.
(3)對被測物體圖片上的每一有效點通過公式(4)求解出對應(yīng)的法向量N.
(4)通過公式(7)~(11)求解出每一點所對應(yīng)的深度值,即可以得到這些點的相對三維坐標(biāo).
實驗的算法設(shè)計如1.4所示.直接輸入在實驗環(huán)境中所采集到的圖片,就可以求解出被測物體表面上點的三維坐標(biāo),即實現(xiàn)了對被測物體表面的三維數(shù)字化.如何搭建實驗環(huán)境以采集到較好的圖片是我們研究的另一個重要內(nèi)容.
為了快速得到理想的實驗環(huán)境,我們采用“虛實結(jié)合”的方法.“虛”是指在仿真軟件中操作實驗,目的是為了避免由于前期經(jīng)驗不足造成實驗器材的浪費(fèi),并且可以大大提高實驗速度.“實”是指在一定經(jīng)驗參數(shù)的指導(dǎo)下搭建真實的實驗環(huán)境,把理論付之實踐,對于現(xiàn)實中存在的問題再進(jìn)行修改.
通過反復(fù)實驗,我們最終確定的實驗環(huán)境如圖4所示.
圖4 實驗環(huán)境
搭建實驗環(huán)境注意以下幾點:
(1)三個平行光源與物體之間形成一個正三棱錐型,物體所在位置為頂點,三個面光源都朝向被測物體,照相機(jī)放在中軸線上,距被測物體遠(yuǎn)一些,用黑布作為背景.
(2)三光源與中心軸的角度保持在20 °~40 °之間,光源距被測物體的距離越遠(yuǎn)越好,但是要保證有足夠的光線照到物體上.
(3)照相機(jī)用中長焦、小光圈、慢快門,保證在不曝光的前提下使圖像盡量亮一點.
(4)標(biāo)定球和被測物體具有相同的材質(zhì),先對標(biāo)定球進(jìn)行拍照,然后移開標(biāo)定球,把被測物放在標(biāo)定球的位置進(jìn)行拍照.
通過上面的實驗可以得到標(biāo)定球和被測物體在三種不同光照下的圖片,把這些圖片輸入到1.4所示的算法里就可以得到被測物體的三維信息.
仿真實驗是在3DS max 軟件平臺上搭建的,并配備最流行的光路計算插件vray渲染器,這樣可以計算出比較真實的光線效果.在實驗中,為了得到平行光源,三盞燈均使用vray自帶的vray平面光源. 模擬環(huán)境下實驗的過程和結(jié)果如圖5所示,第一列為原物,把原物和采樣球放在實驗環(huán)境中分時開啟不同方向的光源就可以采集到六幅圖片(如圖5第二列所示).把這六幅圖片輸入到1.4的算法中就可以得到如圖5第三列的重建效果.
圖5 仿真實驗結(jié)果
從結(jié)果看,建模的效果非常理想.不足之處就是對于遮擋部分同樣沒法重建出三維結(jié)構(gòu).
真實實驗環(huán)境下,為了使點光源接近于互不干擾的平行光源,我們采用如圖6所示的燈頭裝置.為了滿足被測物體與采樣球材質(zhì)一樣,我們把和被測物體相同的材質(zhì)直接包裹在一個球體模型上,如圖6所示.
圖6 光源與采樣球
實驗結(jié)果如圖7所示:
圖7 真實環(huán)境實驗結(jié)果
從實驗結(jié)果看,重建的三維結(jié)構(gòu)與真實結(jié)構(gòu)較為接近,但是沒有仿真環(huán)境下的效果好.主要是因為仿真環(huán)境下物體與采樣球都是標(biāo)準(zhǔn)的朗伯體,這在真實環(huán)境下難以實現(xiàn).從圖7可以看到下一行中物體的垂直效果要比上一行的好一些,這跟被測物體與環(huán)境的相對大小有關(guān).如果環(huán)境大小一定的話,被測物體越小,物體表面到光源的距離對物體表面亮度的影響就越小,重建出的效果自然也就越好.所以該實驗適合在比較大的空間中操作,將光源放置在距物體比較遠(yuǎn)的位置.
本文通過采樣球去近似的求解被測物體在相同環(huán)境下亮度與法向的關(guān)系,然后把這種關(guān)系運(yùn)用到被測物體上以求出相對應(yīng)的法向.這樣就可以避開求解光源方向、反射率以及立體匹配等一些比較麻煩的步驟,并且可以取得令人滿意的重建效果.
本文考慮的是在織物不動的情況下進(jìn)行的三維重建,如果織物發(fā)生形變,這種方法就不太適合.然而動態(tài)變化的織物才具有更大的價值和研究意義,所以接下來的任務(wù)就是要結(jié)合其他三維重建的方法,尋找出一種能夠重建出動態(tài)織物三維結(jié)構(gòu)的方法.
[1]王宇宙.計算機(jī)視覺三維重建理論與應(yīng)用[D].西安:西北大學(xué),2004.
[2]張廣軍.機(jī)器視覺[M].北京:科學(xué)出版社,2005:3-10.
[3]蔡欽濤.基于圖像的三維重建技術(shù)研究[D].杭州:浙江大學(xué),2004.
[4]楊 明.基于雙目立體視覺的三維重建研究[D].武漢:武漢工程大學(xué),2012.
[5]錢曾波,邱振戈,張永強(qiáng).計算機(jī)立體視覺研究的進(jìn)展[J].測繪學(xué)院學(xué)報,2001,18(4):267-272.
[6]Daniel Vlasic,Pieter Peers, I Iya Baran,et al.Dynamic shape capture using multi-view photomeric stereo[J].ACM Transactions on Graphics (TOG),2009,28(5):174.
[7]張屹凌.基于光度立體算法的圖像建模系統(tǒng)的設(shè)計及實現(xiàn)[D].杭州:浙江大學(xué),2006.
[8]李德仁,王新華,黃培之.基于光度立體的物體三維表面重建[J].測繪學(xué)報,1995,24(3):197-203.
[9]佟 帥,徐曉剛,易成濤,等.基于視覺的三維重建技術(shù)綜述[J].計算機(jī)應(yīng)用研究,2011(7):2 411-2 417.
[10]陳 坤.多視圖三維立體重建方法[D].杭州:浙江大學(xué),2013.
[11]馮樹彪.基于圖像的三維重建[D].蘇州:江南大學(xué),2012.
[12]林慕清.基于光度立體法的三維重建技術(shù)的研究與實現(xiàn)[D].沈陽:東北大學(xué),2010.
[13]倪曉慶.織物的三維動態(tài)仿真研究[D].杭州:浙江理工大學(xué),2012.
[14]賈 玥.三維布料動態(tài)仿真[D].大連:遼寧師范大學(xué),2013.