楊晨暉,陳 辰
(廈門大學(xué)信息科學(xué)與技術(shù)學(xué)院,福建 廈門361005)
在虛擬試衣環(huán)境中,輸入的數(shù)據(jù)都是通過攝像頭等視頻設(shè)備得到的二維圖像或者圖像序列.這些圖像是僅有的包含了用戶信息的數(shù)據(jù),利用這些數(shù)據(jù)得到用戶參數(shù)并生成個性化的三維人體模型的過程與基于圖像建模的方法非常相似.基于圖像的建模研究是使用二維圖像生成或者修改三維模型,通過這樣一種更自然的方式,使得三維建模的過程更加直觀和高效.
根據(jù)建模過程中二維圖像的不同種類,可以分為基于草圖/手繪圖的建模[1]和基于單張/多張圖片的建模.其中基于草圖/手繪圖的建模主要關(guān)注通過用戶使用筆型輸入設(shè)備以傳統(tǒng)繪圖的方式構(gòu)建三維模型,例如文獻(xiàn)[2]中提到的利用手繪筆畫對模型進(jìn)行局部調(diào)整的方法,該方法能夠快捷自然地修改模型,但是此方法需要人工標(biāo)注模型輪廓線,且必須事先定義影響區(qū)域(ROI),操作復(fù)雜;文獻(xiàn)[3-4]中介紹的草圖建模方法使用了手繪線條的方式生成復(fù)雜模型,但是要使生成的模型準(zhǔn)確,則需要繪制大量不同角度的線條來控制生成過程.基于單張/多張圖片的建模目的在于從圖像中重構(gòu)出物體的三維模型,文獻(xiàn)[5]中提出了一種從單張圖片中生成三維模型的方法,但是生成的模型細(xì)節(jié)程度并不高;文獻(xiàn)[6]使用了高斯過程隱變量模型方法從一組不同姿勢的同一種物體的三維模型中訓(xùn)練得到人體模型姿勢和體型的參數(shù),并用來合成新的人體模型.
綜合來說,基于草圖的建模方法因其大量的交互操作并不能直接應(yīng)用于虛擬試衣中,而基于圖片的建模過程需要使用大量的同類模型作為訓(xùn)練集,而虛擬試衣中的人體模型是通過特殊的建模工具得到并綁定了衣物信息,難以得到同類的訓(xùn)練樣本集.本文提出的變形算法通過均值坐標(biāo)保存模型表面細(xì)節(jié),使用人體輪廓圖像與三維人體模型的匹配作為變形的約束,整個變形過程只需求解一個能量函數(shù)的最小二乘.無需任何人工交互,也不需要前期的預(yù)計算和學(xué)習(xí)過程.
在虛擬試衣系統(tǒng)中,我們使用工具制作身著衣物的人體模型,如圖1(a)所示.這個人體模型被映射上用戶的體型以及動作并在物理仿真階段用作支撐衣物模型,但在渲染時并不被送入管線,所以最后用戶只會看見衣物,如圖1(b)所示.簡單的說,人體模型就是用戶的“替身”.為了使衣服能匹配用戶體型,需要對人體模型進(jìn)行變形,使其盡量能與用戶體型對應(yīng).
如圖2所示,輸入為原始三維網(wǎng)格模型M和二維輪廓圖C,輸出為新的網(wǎng)格M′.期間經(jīng)過了模型編碼、對應(yīng)關(guān)系尋找、模型簡化、模型變形和頂點恢復(fù)等階段.
圖1 用戶模型替換人體模型Fig.1 The user′s body replace human model
圖2 模型變形算法流程Fig.2 The process of model deformation
本文使用一種基于均值坐標(biāo)的形狀編碼對原始模型進(jìn)行重新編碼[7].
錨點是網(wǎng)格上由用戶指定的少數(shù)幾個特殊頂點,通過移動錨點來控制整個網(wǎng)格的變形效果,如圖3.
圖3 原網(wǎng)格與變形后的網(wǎng)格Fig.3 Original model and twisting model
網(wǎng)格M由頂點集V和邊集E組成.為了計算這個編碼,使用這個頂點vi和它的鄰接頂點vj1,…,vjm建立一個局部坐標(biāo)系.其中vj1,…,vjm按順時針排列.定義一個投影平面Pi:
其中平面的法線為ni=(nx,ny,nz),di表示了從這些頂點到局部坐標(biāo)系原點的平均距離.
均值編碼中,每個頂點的編碼包括兩部分:正切部分wij和法線部分bij.其中正切部分是基于頂點在投影平面投影點,法線部分基于頂點對投影平面的距離偏移.
給定了這個投影平面后,將頂點vi和其鄰接點vj都投影到此平面上:
最后得到
其中γij為角為角為‖v′
法線部分bij首先計算邊(v′i,v′j)與法線ni的余弦值得到:
然后計算角度的余切值即該頂點編碼的法線部分:
綜上,得到了一個頂點均值編碼的兩部分:{wij|(i,j)∈E}和{bij|(i,j)∈E}.
通過頂點vi的均值編碼和vi所有鄰接頂點vj的坐標(biāo)可以還原出vi的位置.根據(jù)文獻(xiàn)[7]中的推導(dǎo),vi可由以下解碼公式得到:
其中Ni是一個3×3的矩陣:
在給出了單個頂點的解碼方法后,對于整個網(wǎng)格,可以通過設(shè)置一個能量函數(shù),并求解非線性最小二乘來得到變形后的網(wǎng)格:
其中V′=V\Va·Va表示網(wǎng)格中錨點的集合.
以上闡述了如何為網(wǎng)格編碼,并通過解碼得到變形后的網(wǎng)格.變形過程由網(wǎng)格上的錨點來控制,下面將說明如何得到錨點.
在虛擬試衣系統(tǒng)中從外部輸入設(shè)備提取用戶人體輪廓作為人體三維模型變形的依據(jù),將原始的人體三維模型變形為與用戶體型相符的人體模型,為此必須將離散的二維輪廓點與三維網(wǎng)格模型的頂點對應(yīng)起來,將這些對應(yīng)后的網(wǎng)格頂點作為錨點向輪廓點移動以帶動三維人體模型整體變形,如圖4.本文使用基于隱馬科夫鏈模型的筆畫與模型匹配算法來建立人體輪廓與人體模型的對應(yīng)關(guān)系.
圖4 輪廓點與模型頂點的對應(yīng)關(guān)系Fig.4 The correspondence of outline and model′s vertex
3.2.1 局部相似性的量度
首先我們定義一些衡量的手段,使用兩個量來界定輪廓點與模型頂點的性質(zhì):
其中np為輪廓點的法線,因為輪廓點在二維圖像空間中建立時并沒有法線信息,所以定義輪廓點的法線為np=((pi-pi-1)+(pi+1-pi)⊥(圖5).nv為三維模型頂點的法線.dp定義了一種輪廓點與模型頂點在距離上的量度,而dN從朝向上衡量點之間的相似性.
3.2.2 基于隱馬科夫鏈模型的匹配
在給出了衡量輪廓與模型局部相似度方法之后,我們的目標(biāo)就是求出使這些度量值的和最小的匹配.為了得到最優(yōu)解,我們使用一種動態(tài)規(guī)劃的方式來測試所有的匹配可能.這種動態(tài)規(guī)劃解法建立在隱馬科夫鏈模型的基礎(chǔ)之上[8].
在隱馬科夫鏈模型中,輸入是一組觀察結(jié)果的狀態(tài)序列,而目標(biāo)是根據(jù)狀態(tài)間的發(fā)散概率和轉(zhuǎn)移概率找到一組最有可能產(chǎn)生這組觀察序列的隱藏狀態(tài)序列.在輪廓點與模型頂點匹配時,將輪廓頂點作為觀察結(jié)果
圖5 輪廓點的法線Fig.5 The normal of outline vertex
某組模型頂點序列作為隱藏狀態(tài)
同時用局部相似性的量度定義發(fā)散概率和轉(zhuǎn)移概率:
本文采用基于動態(tài)規(guī)劃的Viterbi算法來求解.從第一個輪廓點p1開始,計算每一個隱藏狀態(tài)vi產(chǎn)生當(dāng)前的觀察結(jié)果pj的概率P(pj|vi),然后迭代計算在此基礎(chǔ)上下一個隱藏狀態(tài)vi+1產(chǎn)生下一個觀察結(jié)果pj+1的概率P(vi+1|vi)×P(pj+1|vi+1),最后回溯求得最優(yōu)的隱藏狀態(tài)序列.設(shè)ψc(i)為迭代至輪廓點pc,且狀態(tài)序列為v′1,v′2,…,vi時產(chǎn)生觀察結(jié)果p1,p2,…,pc的概率值;φc(i)則記錄了迭代至pc且狀態(tài)序列為v′1,v′2,…,vi時vi的前一個狀態(tài),記錄了迭代的每一步并在最后用于回溯得到最優(yōu)的狀態(tài)序列.算法的步驟如下.
1)初始化:
ψ1(i)=max1≤j≤nP(pj|vi),1≤i≤n
φ1(i)=0
2)迭代:
ψc(i)=max1≤j≤n(ψc-1(j)P(pc|vi)),1≤i≤n,2≤c≤m
φc
3)回溯:
由于模型頂點的數(shù)量可能非常巨大,在算法中需要直接過濾那些發(fā)射概率小于某個閾值的模型頂點,防止循環(huán)次數(shù)過多.而算法最后得到的輪廓點與模型頂點的匹配可能出現(xiàn)多對一的情況,因此在結(jié)束算法前還需進(jìn)行后處理,根據(jù)發(fā)射概率將多對一簡化為一對一.例如:p2和p3同時匹配到了v1,這時需比較v1對p2和v1對p3的發(fā)射概率,假設(shè)對p2發(fā)射概率為0.5而對p3概率為0.4,則選取概率值高的p2作為與v1的匹配輪廓點,剔除p3.造成多對一匹配的原因是網(wǎng)格頂點密度與輪廓點密度不相稱,輪廓點的密度過大,所以此時并不需要將所有的輪廓點都匹配到模型頂點之上,而是將多余的輪廓點剔除.回溯之后得到的模型頂點序列v′1,v′2,…,v′m就是與輪廓點序列匹配的最優(yōu)結(jié)果,如圖6.
圖6 匹配結(jié)果(局部)Fig.6 The result of match(partial)
解碼實際上是對一個非線性最小二乘問題進(jìn)行求解,其解空間的維度為3×模型的頂點數(shù),當(dāng)需要變形的人體模型頂點數(shù)為1 000時,求解過程中使用的雅克比矩陣就高達(dá)上萬維,直接導(dǎo)致算法效率低下.為了使解碼過程更有效率,本文采用一種類似于文獻(xiàn)[7]中使用的層次編碼技術(shù)在編解碼過程中引入網(wǎng)格簡化操作,大幅減少解碼階段求解非線性最小二乘問題的規(guī)模.
在建立輪廓點與模型頂點的匹配后,得到V′={v′1,v′2,…,v′m}為網(wǎng)格上與輪廓匹配的頂點,同時也是控制整個網(wǎng)格變形用的錨點,ˉV=V-V′為非錨頂點.然后通過移除部分非錨頂點生成一個簡化的網(wǎng)格.本文中使用了一種較為簡單的網(wǎng)格簡化方法,該方法基于文獻(xiàn)[9]的頂點移除網(wǎng)格簡化算法.流程如下.
1)計算頂點誤差Ev={ei,e2,…,en},
2)移除頂點vi,其中i=argmaxi(Ev),
3)更新網(wǎng)格三角布局,更新vi鄰接點的誤差值,
4)如果maxi(Ev)或者‖Ev‖小于某個閾值時,則結(jié)束,否則執(zhí)行步驟2).
頂點的誤差值代表了移除這個頂點之后的新網(wǎng)格與原網(wǎng)格的誤差大小,而誤差值可以根據(jù)頂點包含的局部細(xì)節(jié)程度定義,某個頂點越“尖銳”則其包含的細(xì)節(jié)程度越高,移除該頂點后造成的網(wǎng)格幾何信息的損失也越大.每次移除時都選擇誤差值最小的頂點,以此在簡化過程中保持模型的幾何特征.如文獻(xiàn)[10]中所提到的,可以根據(jù)頂點與其鄰接三角面的平均距離計算該頂點的誤差值,通過為每個頂點計算一個誤差矩陣,可以很快地從某個頂點與其鄰接頂點的誤差矩陣中得到頂點誤差值.具體的計算過程見文獻(xiàn)[10].
在通過移除頂點的方式來簡化網(wǎng)格的同時,每次移除操作之前先計算該頂點的均值編碼并儲存起來.移除的模型頂點為Vr={Vr1,Vr2,…,Vrn}∈ˉV,最后剩余的頂點為ˉV∪V′,包括小部分非錨頂點和全部的錨點,且‖ˉV∪V′‖<‖V‖,簡化后的網(wǎng)格模型為M′.然后對網(wǎng)格M′編碼解碼,其中解碼過程由于簡化了大量的頂點,因此計算速度得以提升.加入網(wǎng)格簡化之后的模型變形詳細(xì)流程如圖7.
圖7 結(jié)合網(wǎng)格簡化的變形流程Fig.7 The deformation process with simplified mesh
在變形過程中加入模型簡化操作,雖然使得編碼過程需要更多的時間,但是大大加快了解碼時計算非線性最小二乘優(yōu)化的速度,且對于每個模型,只需要進(jìn)行一次編碼并保存均值編碼和頂點移除的順序,每次變形均可使用,這樣整體變形過程將大大加快.
本實驗使用Visual Studio 2008軟件環(huán)境,運(yùn)行平臺硬件環(huán)境為Pentium(R)Dual-Core 3.20GHz/DDR2 2.0G/Intel G41集成顯示芯片組.實驗結(jié)果如圖8~10.對于球體模型,通過均值編碼配合模型簡化,最終能夠很好得到紡錘狀的三維模型,并保持了球體特征;而對于人體模型,使用變形算法生成了不同體型的模型.圖10展示了不同身材的人穿著綠色衣服的效果.表1分別對比了球體與人體模型在未使用簡化操作和使用簡化操作的情況下變形算法執(zhí)行情況,可以發(fā)現(xiàn)使用了簡化操作之后算法效率大大提高.
圖8 原模型的網(wǎng)格經(jīng)過簡化以及變形Fig.8 The mesh of original model have been simplified and deformed
圖9 對人體模型變形后得到的不同體型的人體模型Fig.9 Different shape model of human body after deformation
圖10 不同身材的人試穿同款衣服Fig.10 Different men wear the same clothes
表1 網(wǎng)格變形算法結(jié)果Tab.1 The result of mesh deformation
本文介紹了三維網(wǎng)格變形的過程以及其在虛擬試衣中的應(yīng)用.首先描述了網(wǎng)格模型的編碼與解碼,然后建立輪廓點與模型點的匹配關(guān)系,并利用輪廓點控制網(wǎng)格的變形,最后通過網(wǎng)格簡化操作提高變形算法的效率.
在以后的工作中,我們將提高模型變形的精度,并將此模型變形算法應(yīng)用到其他領(lǐng)域.
[1]Olsen L,Samavati F F,Sousa M C,et al.Sketch-based modeling:a survey[J].Computers&Graphics,2009,33(1):85-103.
[2]Nealen A,Sorkine O,Alexa M,et al.A sketch-based interface for detail-preserving mesh editing[C]∥ACM Siggraph 2007Courses.New York:ACM,2007:42.
[3]Cherlin J J,Samavati F,Sousa M C,et al.Sketch-based modeling with few strokes[C]∥Proceedings of the 21st Spring Conference on Computer Graphics.New York:ACM,2005:137-145.
[4]Schmidt R,Wyvill B,Sousa M C,et al.shapeshop:sketchbased solid modeling with blobtrees[C]∥ACM Siggraph 2006Courses.New York:ACM,2006:14.
[5]Cashman T,F(xiàn)itzgibbon A.What shape are dolphins?Building 3Dmorphable models from 2Dimages[J].IEEE Trans Pattern Anal Mach Intell,2013,35(1):232-244.
[6]Chen Y,Kim T K,Cipolla R.Inferring 3Dshapes and deformations from single views[C]∥Computer Vision—ECCV 2010.Berlin Heidelberg:Springer,2010:300-313.
[7]Kraevoy V,Sheffer A.Mean-value geometry encoding[J].International Journal of Shape Modeling,2006,12(1):29-46.
[8]Kobbelt L,Campagna S,Vorsatz J,et al.Interactive multi-resolution modeling on arbitrary meshes[C]∥Proceedings of the 25th Annual Conference on Computer Graphics and Interactive Techniques.New York:ACM,1998:105-114.
[9]Botsch M,Kobbelt L.A remeshing approach to multiresolution modeling[C]∥Proceedings of the 2004Eurographics/ACM Siggraph Symposium on Geometry Processing.New York:ACM,2004:185-192.
[10]Garland M,Heckbert P S.Surface simplification using quadric error metrics[C]∥Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques.New York:ACM Press/Addison-Wesley Publishing Co,1997:209-216.