楊晨暉,陳 辰
(廈門大學信息科學與技術學院,福建 廈門361005)
在虛擬試衣環境中,輸入的數據都是通過攝像頭等視頻設備得到的二維圖像或者圖像序列.這些圖像是僅有的包含了用戶信息的數據,利用這些數據得到用戶參數并生成個性化的三維人體模型的過程與基于圖像建模的方法非常相似.基于圖像的建模研究是使用二維圖像生成或者修改三維模型,通過這樣一種更自然的方式,使得三維建模的過程更加直觀和高效.
根據建模過程中二維圖像的不同種類,可以分為基于草圖/手繪圖的建模[1]和基于單張/多張圖片的建模.其中基于草圖/手繪圖的建模主要關注通過用戶使用筆型輸入設備以傳統繪圖的方式構建三維模型,例如文獻[2]中提到的利用手繪筆畫對模型進行局部調整的方法,該方法能夠快捷自然地修改模型,但是此方法需要人工標注模型輪廓線,且必須事先定義影響區域(ROI),操作復雜;文獻[3-4]中介紹的草圖建模方法使用了手繪線條的方式生成復雜模型,但是要使生成的模型準確,則需要繪制大量不同角度的線條來控制生成過程.基于單張/多張圖片的建模目的在于從圖像中重構出物體的三維模型,文獻[5]中提出了一種從單張圖片中生成三維模型的方法,但是生成的模型細節程度并不高;文獻[6]使用了高斯過程隱變量模型方法從一組不同姿勢的同一種物體的三維模型中訓練得到人體模型姿勢和體型的參數,并用來合成新的人體模型.
綜合來說,基于草圖的建模方法因其大量的交互操作并不能直接應用于虛擬試衣中,而基于圖片的建模過程需要使用大量的同類模型作為訓練集,而虛擬試衣中的人體模型是通過特殊的建模工具得到并綁定了衣物信息,難以得到同類的訓練樣本集.本文提出的變形算法通過均值坐標保存模型表面細節,使用人體輪廓圖像與三維人體模型的匹配作為變形的約束,整個變形過程只需求解一個能量函數的最小二乘.無需任何人工交互,也不需要前期的預計算和學習過程.
在虛擬試衣系統中,我們使用工具制作身著衣物的人體模型,如圖1(a)所示.這個人體模型被映射上用戶的體型以及動作并在物理仿真階段用作支撐衣物模型,但在渲染時并不被送入管線,所以最后用戶只會看見衣物,如圖1(b)所示.簡單的說,人體模型就是用戶的“替身”.為了使衣服能匹配用戶體型,需要對人體模型進行變形,使其盡量能與用戶體型對應.
如圖2所示,輸入為原始三維網格模型M和二維輪廓圖C,輸出為新的網格M′.期間經過了模型編碼、對應關系尋找、模型簡化、模型變形和頂點恢復等階段.

圖1 用戶模型替換人體模型Fig.1 The user′s body replace human model

圖2 模型變形算法流程Fig.2 The process of model deformation
本文使用一種基于均值坐標的形狀編碼對原始模型進行重新編碼[7].
錨點是網格上由用戶指定的少數幾個特殊頂點,通過移動錨點來控制整個網格的變形效果,如圖3.

圖3 原網格與變形后的網格Fig.3 Original model and twisting model
網格M由頂點集V和邊集E組成.為了計算這個編碼,使用這個頂點vi和它的鄰接頂點vj1,…,vjm建立一個局部坐標系.其中vj1,…,vjm按順時針排列.定義一個投影平面Pi:

其中平面的法線為ni=(nx,ny,nz),di表示了從這些頂點到局部坐標系原點的平均距離.
均值編碼中,每個頂點的編碼包括兩部分:正切部分wij和法線部分bij.其中正切部分是基于頂點在投影平面投影點,法線部分基于頂點對投影平面的距離偏移.
給定了這個投影平面后,將頂點vi和其鄰接點vj都投影到此平面上:


最后得到

其中γij為角為角為‖v′
法線部分bij首先計算邊(v′i,v′j)與法線ni的余弦值得到:

然后計算角度的余切值即該頂點編碼的法線部分:

綜上,得到了一個頂點均值編碼的兩部分:{wij|(i,j)∈E}和{bij|(i,j)∈E}.
通過頂點vi的均值編碼和vi所有鄰接頂點vj的坐標可以還原出vi的位置.根據文獻[7]中的推導,vi可由以下解碼公式得到:

其中Ni是一個3×3的矩陣:

在給出了單個頂點的解碼方法后,對于整個網格,可以通過設置一個能量函數,并求解非線性最小二乘來得到變形后的網格:

其中V′=V\Va·Va表示網格中錨點的集合.
以上闡述了如何為網格編碼,并通過解碼得到變形后的網格.變形過程由網格上的錨點來控制,下面將說明如何得到錨點.
在虛擬試衣系統中從外部輸入設備提取用戶人體輪廓作為人體三維模型變形的依據,將原始的人體三維模型變形為與用戶體型相符的人體模型,為此必須將離散的二維輪廓點與三維網格模型的頂點對應起來,將這些對應后的網格頂點作為錨點向輪廓點移動以帶動三維人體模型整體變形,如圖4.本文使用基于隱馬科夫鏈模型的筆畫與模型匹配算法來建立人體輪廓與人體模型的對應關系.

圖4 輪廓點與模型頂點的對應關系Fig.4 The correspondence of outline and model′s vertex
3.2.1 局部相似性的量度
首先我們定義一些衡量的手段,使用兩個量來界定輪廓點與模型頂點的性質:

其中np為輪廓點的法線,因為輪廓點在二維圖像空間中建立時并沒有法線信息,所以定義輪廓點的法線為np=((pi-pi-1)+(pi+1-pi)⊥(圖5).nv為三維模型頂點的法線.dp定義了一種輪廓點與模型頂點在距離上的量度,而dN從朝向上衡量點之間的相似性.
3.2.2 基于隱馬科夫鏈模型的匹配
在給出了衡量輪廓與模型局部相似度方法之后,我們的目標就是求出使這些度量值的和最小的匹配.為了得到最優解,我們使用一種動態規劃的方式來測試所有的匹配可能.這種動態規劃解法建立在隱馬科夫鏈模型的基礎之上[8].
在隱馬科夫鏈模型中,輸入是一組觀察結果的狀態序列,而目標是根據狀態間的發散概率和轉移概率找到一組最有可能產生這組觀察序列的隱藏狀態序列.在輪廓點與模型頂點匹配時,將輪廓頂點作為觀察結果


圖5 輪廓點的法線Fig.5 The normal of outline vertex
某組模型頂點序列作為隱藏狀態

同時用局部相似性的量度定義發散概率和轉移概率:
本文采用基于動態規劃的Viterbi算法來求解.從第一個輪廓點p1開始,計算每一個隱藏狀態vi產生當前的觀察結果pj的概率P(pj|vi),然后迭代計算在此基礎上下一個隱藏狀態vi+1產生下一個觀察結果pj+1的概率P(vi+1|vi)×P(pj+1|vi+1),最后回溯求得最優的隱藏狀態序列.設ψc(i)為迭代至輪廓點pc,且狀態序列為v′1,v′2,…,vi時產生觀察結果p1,p2,…,pc的概率值;φc(i)則記錄了迭代至pc且狀態序列為v′1,v′2,…,vi時vi的前一個狀態,記錄了迭代的每一步并在最后用于回溯得到最優的狀態序列.算法的步驟如下.
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)回溯:

由于模型頂點的數量可能非常巨大,在算法中需要直接過濾那些發射概率小于某個閾值的模型頂點,防止循環次數過多.而算法最后得到的輪廓點與模型頂點的匹配可能出現多對一的情況,因此在結束算法前還需進行后處理,根據發射概率將多對一簡化為一對一.例如:p2和p3同時匹配到了v1,這時需比較v1對p2和v1對p3的發射概率,假設對p2發射概率為0.5而對p3概率為0.4,則選取概率值高的p2作為與v1的匹配輪廓點,剔除p3.造成多對一匹配的原因是網格頂點密度與輪廓點密度不相稱,輪廓點的密度過大,所以此時并不需要將所有的輪廓點都匹配到模型頂點之上,而是將多余的輪廓點剔除.回溯之后得到的模型頂點序列v′1,v′2,…,v′m就是與輪廓點序列匹配的最優結果,如圖6.

圖6 匹配結果(局部)Fig.6 The result of match(partial)
解碼實際上是對一個非線性最小二乘問題進行求解,其解空間的維度為3×模型的頂點數,當需要變形的人體模型頂點數為1 000時,求解過程中使用的雅克比矩陣就高達上萬維,直接導致算法效率低下.為了使解碼過程更有效率,本文采用一種類似于文獻[7]中使用的層次編碼技術在編解碼過程中引入網格簡化操作,大幅減少解碼階段求解非線性最小二乘問題的規模.
在建立輪廓點與模型頂點的匹配后,得到V′={v′1,v′2,…,v′m}為網格上與輪廓匹配的頂點,同時也是控制整個網格變形用的錨點,ˉV=V-V′為非錨頂點.然后通過移除部分非錨頂點生成一個簡化的網格.本文中使用了一種較為簡單的網格簡化方法,該方法基于文獻[9]的頂點移除網格簡化算法.流程如下.
1)計算頂點誤差Ev={ei,e2,…,en},
2)移除頂點vi,其中i=argmaxi(Ev),
3)更新網格三角布局,更新vi鄰接點的誤差值,
4)如果maxi(Ev)或者‖Ev‖小于某個閾值時,則結束,否則執行步驟2).
頂點的誤差值代表了移除這個頂點之后的新網格與原網格的誤差大小,而誤差值可以根據頂點包含的局部細節程度定義,某個頂點越“尖銳”則其包含的細節程度越高,移除該頂點后造成的網格幾何信息的損失也越大.每次移除時都選擇誤差值最小的頂點,以此在簡化過程中保持模型的幾何特征.如文獻[10]中所提到的,可以根據頂點與其鄰接三角面的平均距離計算該頂點的誤差值,通過為每個頂點計算一個誤差矩陣,可以很快地從某個頂點與其鄰接頂點的誤差矩陣中得到頂點誤差值.具體的計算過程見文獻[10].
在通過移除頂點的方式來簡化網格的同時,每次移除操作之前先計算該頂點的均值編碼并儲存起來.移除的模型頂點為Vr={Vr1,Vr2,…,Vrn}∈ˉV,最后剩余的頂點為ˉV∪V′,包括小部分非錨頂點和全部的錨點,且‖ˉV∪V′‖<‖V‖,簡化后的網格模型為M′.然后對網格M′編碼解碼,其中解碼過程由于簡化了大量的頂點,因此計算速度得以提升.加入網格簡化之后的模型變形詳細流程如圖7.

圖7 結合網格簡化的變形流程Fig.7 The deformation process with simplified mesh
在變形過程中加入模型簡化操作,雖然使得編碼過程需要更多的時間,但是大大加快了解碼時計算非線性最小二乘優化的速度,且對于每個模型,只需要進行一次編碼并保存均值編碼和頂點移除的順序,每次變形均可使用,這樣整體變形過程將大大加快.
本實驗使用Visual Studio 2008軟件環境,運行平臺硬件環境為Pentium(R)Dual-Core 3.20GHz/DDR2 2.0G/Intel G41集成顯示芯片組.實驗結果如圖8~10.對于球體模型,通過均值編碼配合模型簡化,最終能夠很好得到紡錘狀的三維模型,并保持了球體特征;而對于人體模型,使用變形算法生成了不同體型的模型.圖10展示了不同身材的人穿著綠色衣服的效果.表1分別對比了球體與人體模型在未使用簡化操作和使用簡化操作的情況下變形算法執行情況,可以發現使用了簡化操作之后算法效率大大提高.

圖8 原模型的網格經過簡化以及變形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 網格變形算法結果Tab.1 The result of mesh deformation
本文介紹了三維網格變形的過程以及其在虛擬試衣中的應用.首先描述了網格模型的編碼與解碼,然后建立輪廓點與模型點的匹配關系,并利用輪廓點控制網格的變形,最后通過網格簡化操作提高變形算法的效率.
在以后的工作中,我們將提高模型變形的精度,并將此模型變形算法應用到其他領域.
[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,Fitzgibbon 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.