王嘉琦,劉洋,趙慶志
(山東理工大學(xué)機(jī)械工程學(xué)院,山東淄博 255012)
Shape from shading(簡稱SFS)算法是由美國麻省理工學(xué)院Horn教授[1]提出的一種單目測距算法。目前SFS算法在恢復(fù)單個(gè)物體外表面上有著重要應(yīng)用,我們在計(jì)算機(jī)等媒體上所見到的圖像實(shí)際上是由攝像機(jī)捕捉到的通過某一光源對物體的照射所反射出的能量[2-4]。SFS算法研究的正是輻射度與物體所反射出的能量之間的關(guān)系。
Ikuechi和Horn首先提出了SFS的變分求解方法[5]。通過將輻射度方程的灰度誤差表達(dá)為一個(gè)泛函,把SFS問題轉(zhuǎn)化為一個(gè)泛函的極小化問題,然后通過求解這個(gè)泛函極小化問題從而得到SFS問題的解[6-7]。Horn引入了光滑約束保證得到唯一的解使得恢復(fù)表面更加光滑的同時(shí)卻也變得更加扁平[8]。所以本文引入了綜合約束模型:在光滑約束的基礎(chǔ)上,增加了表面梯度約束和灰度梯度約束,改善了傳統(tǒng)變分法實(shí)驗(yàn)結(jié)果過于光滑和扁平的問題。
SFS技術(shù)是通過圖像的灰度值來計(jì)算物體實(shí)際高度的,所以物體顏色的不同會對高度獲取造成相當(dāng)大的影響,因此我們首先需要通過PhotoShop、Illustrator等專業(yè)圖像處理軟件對物體原圖進(jìn)行處理,處理之后獲得一張深度圖,再由深度圖通過轉(zhuǎn)換顏色空間得到圖像亮度,然后根據(jù)清晰度評價(jià)函數(shù)(TenenGrad)得到圖像塊(5×5)的清晰度,獲取到可靠性更高的深度灰介圖。
為使得圖像具有視覺統(tǒng)一性,需要將圖像轉(zhuǎn)換至LUV顏色空間,在LUV顏色空間中L代表亮度,U、V代表色度,本文通過利用XYZ顏色空間實(shí)現(xiàn)RGB顏色空間到LUV顏色空間的過渡,具體方法如下:
1)首先通過矩陣實(shí)現(xiàn)RGB顏色空間到XYZ顏色空間的轉(zhuǎn)換:
2)通過公式實(shí)現(xiàn)XYZ顏色空間到LUV顏色空間的轉(zhuǎn)換:
式中:
選擇標(biāo)準(zhǔn)光源D65作為參考光源,則Xn=95.047,Yn=100.000,Zn=108.883。代入上式可得:
由此便完成了由RGB顏色空間到XYZ顏色空間再到LUV顏色空間的轉(zhuǎn)換。
通過綜合約束條件解決SFS問題首先要建立約束模型和泛函表達(dá),輻射度方程的灰度誤差表達(dá)式為
由表達(dá)式可知,求解SFS問題就等同于求解F1(p,q)極小條件下的p和q。
假設(shè)重建表面光滑,且光滑約束表達(dá)式為
式中,px、py、qx、qy為表面梯度的偏導(dǎo)數(shù)。
為使所獲圖像在高度表達(dá)上更加理想,在光滑約束的基礎(chǔ)上再引入表面梯度約束和灰度梯度約束,表面梯度約束表達(dá)式為
式中,zx、zy為表面高度的偏導(dǎo)數(shù)。
灰度梯度約束表達(dá)式為
綜合以上可以得出綜合約束表達(dá)式為
式中,λ、μ、ν均為加權(quán)系數(shù)。由于高度z直接出現(xiàn)在表達(dá)式中,所以通過求上述泛函的極小化解,就可以直接得到z值,避免了從梯度到高度的積分過程中可能出現(xiàn)的振蕩。
由變分原理可知,方程的解等價(jià)于下面歐拉方程的解:
圍繞p和q進(jìn)行泰勒展開,有:
其余項(xiàng)同理展開后整理可得
其中:
于是有:
式中:δp為泰勒展開中的p-p0項(xiàng);δq、δz相同。這里將其定義為迭代一次后的增量,于是可建立如下迭代公式關(guān)系:
式中,k為迭代次數(shù)。
由于要在計(jì)算機(jī)中編程實(shí)現(xiàn),還需要應(yīng)用有限差分法對偏導(dǎo)數(shù)等一些非離散量進(jìn)行離散化處理。將圖像區(qū)域Ω按圖像本身像素進(jìn)行網(wǎng)絡(luò)劃分。以px為例,離散化形式為
式中,i、j表示像素在圖像中所處的行列數(shù),其他與此相同。
根據(jù)以上分析和推導(dǎo),建立迭代過程如下:給出光源入射方向(ps,qs,-1);給定初值p0、q0、z0,加權(quán)系數(shù)λ、μ、ν,并令k=0。
計(jì)算δp、δq、δz并令:
給定光源入射方向(0,0,-1),通過實(shí)驗(yàn)進(jìn)行驗(yàn)證,經(jīng)對比可知,前4次迭代,模型還原度逐步提高,直到第5次時(shí)模型高度出現(xiàn)了與加工要求所不符的噪聲。
圖1 原圖
圖2 迭代1次效果圖
圖3 迭代2次效果圖
圖4 迭代3次效果圖
圖5 迭代4次效果圖
圖6 迭代5次效果圖
由于通過SFS算法獲取的模型高度在z軸之上不能直接參與浮雕加工,因此還需要對模型高度進(jìn)行平移和縮放變換。具體過程如下:
1)整體平移處理。假設(shè)模型進(jìn)行變換前的高度為zq,變換后的高度為zh,將生成的浮雕模型整體沿Z軸方向下移Hmax,則
2)高度縮放變換。設(shè)縮放比例為p,則
圖7 高度變換
因此可以根據(jù)模型原高度zq求出模型在每一點(diǎn)處的加工深度zh:
實(shí)驗(yàn)結(jié)果如圖8所示,左邊通過直方圖與原始圖像的截面誤差分析對比表明迭代誤差滿足要求,右邊為仿真的圖像,結(jié)果顯示重建圖像還原度高,實(shí)驗(yàn)結(jié)果理想。
圖8 仿真實(shí)驗(yàn)結(jié)果
本文基于SFS技術(shù)通過數(shù)學(xué)演繹實(shí)現(xiàn)了對雕刻模型高度獲取的優(yōu)化。使得所獲產(chǎn)品在三維空間中的立體還原度進(jìn)一步改良。通過顏色空間的轉(zhuǎn)換獲取圖像每個(gè)像素點(diǎn)處的亮度,用圖像像素點(diǎn)處的亮度代替圖像像素強(qiáng)度。通過在光滑約束的基礎(chǔ)上引入表面梯度約束和灰度梯度約束實(shí)現(xiàn)綜合約束下變分法求解SFS問題,再根據(jù)所得結(jié)果和實(shí)際加工要求通過平移、縮放等方法調(diào)節(jié)浮雕模型,最終達(dá)到加工要求。