本發(fā)明屬于虛擬現(xiàn)實技術(shù)領(lǐng)域和計算機圖形學領(lǐng)域,具體涉及一種基于實例的虛擬試衣方法。
背景技術(shù):
隨著電子商務(wù)的不斷發(fā)展,網(wǎng)購服裝也越來越受人們的青睞,但由于服裝對于不同人的穿戴效果差異很大,圖文信息展示的服裝細節(jié)也十分有限,導(dǎo)致客戶很難準確估計自己試穿的效果,這在影響網(wǎng)購服裝數(shù)量的同時,也使得網(wǎng)購服裝的退換貨率居高不下。為解決這個問題,虛擬試衣相關(guān)技術(shù)應(yīng)運而生,并受到越來越多的關(guān)注。目前,虛擬試衣相關(guān)技術(shù)的研究已經(jīng)取得了一定成果,但是仍然存在一些問題需要進一步研究。
現(xiàn)有的虛擬試衣方法研究通常分為虛擬試衣鏡技術(shù)和3D虛擬試衣技術(shù)。虛擬試衣鏡是指,當購物者站在虛擬試衣鏡前時,裝置自動顯示試穿新衣以后的三維圖像,如德國Total Immersion公司的“Trylive”,日本Digital Fashion公司的“Active Lab”等?,F(xiàn)存服裝的虛擬試衣鏡,大多仍是將具有3D效果的二維圖片映射到人體前面,不能很好的模擬逼真的布料質(zhì)感和褶皺,服裝也不能根據(jù)人的體型進行自動調(diào)整,達不到滿意的試衣效果。
3D虛擬試衣技術(shù)是真正意義上的三維試衣技術(shù),其根據(jù)用戶真實的人體體型系數(shù)構(gòu)造三維人體模型,隨后通過服裝變形算法變形服裝,從而獲得逼真的人體服裝姿態(tài)。3D虛擬試衣技術(shù)的關(guān)鍵在于服裝變形算法,其研究可以分為基于物理的變形方法和基于幾何的變形方法?;谖锢淼淖冃畏椒梢缘玫叫Ч芎玫姆b,但速度較慢,而且對于體型差異過大的情況,還需要配合手工的拖拽,這在實際的虛擬試衣中是不可接受的。基于幾何的變形方法大多根據(jù)人體的體型差異來變形服裝,從而獲得效果較好的合身于目標人體的服裝,但這樣的變形為了達到合身的要求,很難保存服裝原有的款式,這是不符合實際情況的。
在服裝變形中,如何在兼顧速度的效果情況下,遵從人體變形,得到合身服裝,并且保留服裝的款式信息,這個問題還沒有得到很好的解決。
技術(shù)實現(xiàn)要素:
本發(fā)明致力于解決3D虛擬試衣的服裝變形中存在的上述問題。通常情況下,虛擬試衣平臺存儲的服裝模型數(shù)據(jù)和用戶的人體模型數(shù)據(jù)是龐大的,很難為每個人體模型都準備好合身的所有款式的服裝模型,所以當用戶選擇試穿一件服裝模型時,需要把該服裝模型變形至合身于這個用戶的體型,從而把該款式的服裝呈現(xiàn)在用戶自己體型的人體模型上。為此,本發(fā)明所公開的基于實例的虛擬試衣方法包含以下步驟,
1)獲取服裝變形矩陣數(shù)據(jù),從不同人體體型的服裝上獲取服裝的變形矩陣數(shù)據(jù);服裝的變形矩陣是指把同一款服裝穿到兩個不同體型的人體上,由這兩件服裝對應(yīng)的三角面上計算他們的仿射變形矩陣;
上述步驟1)是數(shù)據(jù)準備工作,具體包含以下步驟:
(1)準備人體模型庫和服裝模型庫,并把服裝都穿到人體模型上;
(2)選取一個人體模型作為標準體型,獲取該體型和其他體型上的服裝的變形矩陣;
(3)把人體模型和服裝模型的三角面進行匹配,并把服裝的三角面都分配給人體三角面;
(4)把獲取的服裝三角面的變形矩陣轉(zhuǎn)為列向量,并按人體三角面的順序進行排序。
2)獲取服裝粗變形,所述粗變形是指過濾了服裝款式信息的服裝變形,根據(jù)獲取的服裝變形矩陣,得到兩個人體模型的服裝粗變形;
具體包含以下步驟:
(1)把之前獲取的人體模型和標準人模的多件服裝的變形矩陣降維后,得到特征矩陣;
(2)把多件貼身的標準服裝的變形矩陣用特征矩陣進行降維和重構(gòu),使其保留共性的人體變形,去除服裝款式的變形;
(3)根據(jù)求得的服裝和人體三角面的對應(yīng)關(guān)系,把粗變形矩陣按照服裝三角面的順序重新排列。
3)虛擬試衣過程,所述虛擬試衣過程是應(yīng)用之前求得的每個人體的每件服裝的變形矩陣對服裝進行變形,并處理變形后的服裝,使其能更好地貼合指定人體,具體包含以下步驟:
(1)根據(jù)指定人體和選取的服裝的變形矩陣變形服裝;
(2)對變形后的服裝作平滑和消除穿透處理;
(3)把合身的服裝和指定的人體用計算機圖像顯示出來。
附圖說明
圖1為本發(fā)明訓(xùn)練集矩陣圖。
圖2為本發(fā)明測試集矩陣圖。
圖3為本發(fā)明虛擬試衣過程示意圖。
具體實施方式
下面結(jié)合附圖,對本發(fā)明進一步詳細說明。
一種基于實例的虛擬試衣方法,包含以下步驟,
1)獲取服裝變形矩陣數(shù)據(jù)
(1)首先準備人體模型庫和服裝模型庫,人體模型庫的獲取可以從網(wǎng)上直接下載人體模型資源,也可以從一個人體模型出發(fā),把它變形得到多個人體。為了快速構(gòu)建人體模型庫,從網(wǎng)上下載了人體模型資源后,通過人體建模軟件,把它們變形為不同體型的人模。服裝模型同樣也可以從網(wǎng)上下載資源,或者通過服裝建模軟件制作。最后用服裝建模軟件把服裝穿到所有人體模型上,在這個過程中應(yīng)當保證服裝的三角面數(shù)量不變。
(2)選取一個體型適中的人體模型作為標準人體,分別計算其他人體的服裝和這個人體對應(yīng)服裝的變形矩陣。其中,一個變形矩陣Q由兩件服裝中對應(yīng)的兩個三角面x(x1,x2,x3),y(y1.y2.y3)的6個頂點和它們法線上的兩個點x4,y4確定。其公式如下:
Q[Δx2,Δx3,Δx4]=[Δy2,Δy3,Δy4]
其中,Δxi=Δxi-Δx1,i=2,3,Δx4=Δx2×Δx3,Δy同理。
(3)一件含T個三角面的服裝有T個變形矩陣,把服裝的三角面匹配到人體三角面上,就可以把不同三角面數(shù)量的服裝模型的變形矩陣統(tǒng)一表示,即,把標準人體的k款服裝的變形矩陣D1,,k排列為[D1,...Dj...,Dk],Dj=[q1,q2,...,qc]是第j件服裝的變形矩陣拉直排列的列向量,q是變形矩陣拉直后的列向量。
(4)由于實際變形時,每個服裝三角面都要進行變形,即,它們都要對應(yīng)一個變形矩陣。當排列變形矩陣時,每個人體三角面也都要對應(yīng)一個變形矩陣。所以,人體三角面和服裝三角面的匹配規(guī)則如下,先從人體三角面出發(fā)找到和其質(zhì)心距離最近的服裝三角面作為它的對應(yīng)三角面,若質(zhì)心距離大于閾值則標記為未找到,對于沒有對應(yīng)三角面的服裝三角面,則從它們出發(fā)尋找和其質(zhì)心距離最近的人體三角面作為對應(yīng)三角面,即,服裝三角面和人體三角面是多對多的關(guān)系。
總之,當準備好兩個人體模型和相應(yīng)服裝后,從對應(yīng)的兩件服裝上計算變形矩陣并把它們按照人體模型三角面的序號進行排列,對于未找到對應(yīng)服裝三角面的人體三角面,用單位矩陣作為其變形矩陣。最后,把所有款式的服裝的變形矩陣依次排列,把它們的一部分作為訓(xùn)練集矩陣,一部分作為測試集矩陣。
2)獲取服裝粗變形
(1)在得到兩個人體模型的多款服裝變形后,保留這些變形矩陣中共性的信息,去除其獨有的信息,即關(guān)于服裝款式變化的信息。
(2)對訓(xùn)練集矩陣進行降維,得到盡可能保留了原有信息的特征空間,這個降維過程中只保留了變形矩陣間共性的主要的變化,類似于有損壓縮的過程。如果把訓(xùn)練集矩陣再通過這個特征空間進行降維和重構(gòu),會得到信息損失的服裝變形矩陣集,但信息損失較少。所以用測試集矩陣來進行降維和重構(gòu),就可以得到信息損失較多的服裝變形矩陣集。
具體實施過程如下:
設(shè)訓(xùn)練集有k款服裝,首先計算訓(xùn)練集矩陣[D1,…Dj…,Dk](如圖1所示)的均值:
計算訓(xùn)練集矩陣與其均值的差值:
Li=Di-Ψ,i=1,2,…,k
構(gòu)建協(xié)方差矩陣:
求得協(xié)方差矩陣C的前p個特征向量并排列,得特征空間w=(u1,u2,…,up),用測試集矩陣Γ[G1,...Gj...,Gm](如圖2所示)降維得:
ΩG=wT(Γ-ΨG)
ΩG取前n列得和w即是把服裝款式信息過濾后的變形矩陣集,把這些變形矩陣應(yīng)用到標準服裝上,從中選擇效果最好的一款服裝的變形矩陣作為這兩個人體模型的服裝粗變形矩陣Gf,變形矩陣的應(yīng)用方式在下節(jié)虛擬試衣過程中敘述。
(3)根據(jù)之前計算好的人體三角面和服裝三角面的對應(yīng)關(guān)系,把服裝粗變形矩陣中的變形矩陣按照服裝三角面的序號重新排序,以方便之后的調(diào)用。某些服裝三角面和人體三角面不是相互對應(yīng)的,即,若服裝三角面Ti對應(yīng)的人體三角面Tj,其對應(yīng)的服裝三角面并不是Ti,則最后Ti將被應(yīng)用Tj對應(yīng)的服裝三角面的變形矩陣,這種情況多數(shù)是由于服裝褶皺上的三角面在第一次分配對應(yīng)三角面時,沒有被分配造成的,這其實有利于在變形矩陣中消除褶皺等服裝款式信息,凸顯人體體型的變化。
3)虛擬試衣過程
在之前的步驟中,準備好標準人體對應(yīng)于其他人體的服裝粗變形矩陣,對于任意一款標準人體的服裝,只需要應(yīng)用粗變形矩陣,并適當調(diào)整,就可以得到相應(yīng)體型下的該款式的服裝(如圖3所示),具體實施過程如下:
(1)變形矩陣的應(yīng)用方式。給定一款標準人體上的服裝,以及標準人體對應(yīng)于目標人體的變形矩陣,把這個變形矩陣應(yīng)用至服裝上的過程如下,由于每一個服裝三角面都對應(yīng)一個粗變形矩陣,則目標三角面y(y1.y2.y3),服裝三角面x(x1,x2,x3)和變形矩陣Q就可以建立3個三元方程組,每個三角面單獨求解會導(dǎo)致原本共點的服裝三角面不共點,使得變形的模型很多毛刺。把所有方程組放到一起統(tǒng)一求解,可以解決共點問題。
(2)應(yīng)用服裝粗變形矩陣后,服裝和人體可能還會有穿透,檢查每個服裝頂點,如果該頂點和距離其最近的人體頂點構(gòu)成的向量與人體頂點法線的乘積為負,則可以判定發(fā)生了穿透。若服裝頂點出現(xiàn)穿透,則按距離其最近的人體頂點的法線方向修正服裝頂點位置,直到不發(fā)生穿透。
(3)把指定的人體和其合身的服裝用計算機圖像顯示出來。
目前已有的3D引擎功能日益強大,其自帶的實時全局光照和基于物理的著色方法可以幫助使用者快速創(chuàng)建栩栩如生的三維場景,借助3D引擎可以把人體服裝模型的網(wǎng)格和紋理細節(jié)很好地展示出來。
實施例
1)首次使用者實施例
對于首次使用者,先計算該使用者和標準人體的服裝粗變形矩陣。用戶輸入其人體模型,借助服裝建模軟件給這個人體模型穿上訓(xùn)練集和測試集中的服裝,然后獲取標準人體和用戶人體的服裝粗變形矩陣,得到變形矩陣集后,抽取這些變形矩陣中共性的信息,得到服裝粗變形矩陣。最后把服裝粗變形矩陣應(yīng)用到用戶指定的某款服裝上。
2)非首次使用者實施例
對于非首次使用者,由于之前計算過該使用者與標準人體的服裝粗變形矩陣,所以當用戶選擇或輸入一件標準人體上的新款式的服裝時,直接把服裝變形矩陣應(yīng)用至該服裝,并做相關(guān)調(diào)整后,就可以得到和用戶身材契合的新服裝了。
3)群體使用者實施例
若使用者想觀察大規(guī)模人群同時穿某款服裝時,該款服裝的展示效果,可以把之前計算好的不同體型的人體模型的服裝粗變形矩陣應(yīng)用到這款服裝上,從而迅速得到該款服裝的群體展示效果。
如上所述,對本發(fā)明進行了詳細地說明,顯然,只要實質(zhì)上沒有脫離本發(fā)明的發(fā)明點及效果、對本領(lǐng)域的技術(shù)人員來說是顯而易見的變形,也均包含在本發(fā)明的保護范圍之內(nèi)。