- 物聯(lián)網(wǎng)百科
- 產(chǎn)品百科
- 元器件百科
- 方案百科
本開(kāi)發(fā)方案屬于圖像處理和虛擬現(xiàn)實(shí)技術(shù)領(lǐng)域,具體涉及一種虛擬試衣鏡的實(shí)現(xiàn)方法。
背景技術(shù):
隨著物聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)虛擬購(gòu)物已經(jīng)成了時(shí)代潮流。國(guó)內(nèi)商家對(duì)于虛擬試衣技術(shù)不斷嘗試創(chuàng)新,以積極的態(tài)度迎接虛擬顯示技術(shù)時(shí)代的到來(lái),但是現(xiàn)有的在線的試衣系統(tǒng),或是基于移動(dòng)終端的試衣軟件,其顯示效果仍然無(wú)法與實(shí)物相提并論,也因此影響了虛擬試衣鏡的發(fā)展與推廣。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)存在的問(wèn)題,提供一種虛擬試衣鏡的實(shí)現(xiàn)方法。
為實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明采用如下技術(shù)方案:
一種虛擬試衣鏡的實(shí)現(xiàn)方法,包括如下步驟:
S1服裝建模,并對(duì)服裝根據(jù)身材類型分類,包括Y型、A型、H型和X型;
S2用戶人體圖像數(shù)據(jù)采集;所述用戶人體圖像數(shù)據(jù)為二維數(shù)據(jù)或三維數(shù)據(jù);
所述二維數(shù)據(jù)獲取方式包括:采用LibSVM訓(xùn)練進(jìn)行數(shù)據(jù)訓(xùn)練,獲取訓(xùn)練模型;LibSVM訓(xùn)練的訓(xùn)練集數(shù)據(jù)包括用戶身高體重、四圍信息和身材類型信息;所述四維信息包括胸圍、腰圍、臀圍、肩圍;
用戶上傳標(biāo)準(zhǔn)全身照片和身高體重?cái)?shù)據(jù),對(duì)用戶上傳標(biāo)準(zhǔn)全身照片進(jìn)行圖像處理,提取四圍信息,將身高體重?cái)?shù)據(jù)和四維信息導(dǎo)入訓(xùn)練模型,獲取身材類型分類;
S3將人體圖像數(shù)據(jù)和服裝建模數(shù)據(jù)關(guān)聯(lián)并顯示。
用戶不在現(xiàn)場(chǎng)的時(shí)候,可以由用戶提供影像采集二維數(shù)據(jù),在軟件上顯示試衣效果;用戶在現(xiàn)場(chǎng)時(shí),可以采集三維數(shù)據(jù)。所述三維數(shù)據(jù)基于kinect體感機(jī)通過(guò)骨骼識(shí)別定位獲取。
本發(fā)明的方法,所述S2中,LibSVM訓(xùn)練方法如下:
將單個(gè)用戶的數(shù)據(jù)作為一個(gè)樣本,表示為Di(xi,yi),其中yi為樣本標(biāo)簽,xi為六維的數(shù)據(jù)點(diǎn)xi(x身高+x體重+x肩圍+x臀圍+x胸圍+x腰圍),設(shè)所求SVM空間的超平面方程為g(x)=
設(shè)核函數(shù)形式為K(xi,x),則所求的超平面形式變化為:
LibSVM訓(xùn)練選擇的svm類型為c_svm類型,核函數(shù)為多項(xiàng)式核,迭代次數(shù)選擇3,gamma選擇0.166667,分類類別數(shù)為60,獲取訓(xùn)練模型。
用戶上傳圖像數(shù)據(jù)的處理步驟包括:
S2.1用戶上傳標(biāo)準(zhǔn)全身照片,包括正面標(biāo)準(zhǔn)照,背面標(biāo)準(zhǔn)照和側(cè)面標(biāo)準(zhǔn)照;
S2.2對(duì)標(biāo)準(zhǔn)照片進(jìn)行圖像分割,將圖劃分為背景和前景兩部分,前景即為用戶人體圖像數(shù)據(jù);
S2.3對(duì)用戶三圍進(jìn)行定位,包括胸部、腰部、臀部定位,從用戶人體圖像數(shù)據(jù)中提取三圍信息;并對(duì)用戶肩部進(jìn)行定位。
所述S2.2中,采用GrabCut算法對(duì)標(biāo)準(zhǔn)照片進(jìn)行圖像分割。
所述S2.3中,基于分割后的用戶背面標(biāo)準(zhǔn)照獲取胸部定位,識(shí)別出手臂后,對(duì)手臂下方位置,占人體高度5%長(zhǎng)度的位置處取得人體寬度信息取均值,計(jì)算得到胸部位置寬度Bo:
其中Bo為胸部位置寬度,Ho為人體高度,Bp為檢測(cè)到胸部位置的水平高度,Bwi為所在行人體寬度;
識(shí)別出手臂后,通過(guò)寬度檢測(cè),檢測(cè)到第一個(gè)寬度最小值時(shí)將其作為腰部中點(diǎn),對(duì)上下取人體高度5%長(zhǎng)度取平均值:
其中Wo為腰部位置寬度,Wp為檢測(cè)到腰部位置的水平高度,Wwi為所在行人體寬度;
在識(shí)別出腰部所在位置后,向下檢測(cè)至第一個(gè)寬度峰值,將其定位為臀部中心點(diǎn);根據(jù)人體高度5%長(zhǎng)度的位置取得人體寬度信息取均值,計(jì)算出臀部寬度信息Co:
其中Co為臀部位置寬度,Cp為檢測(cè)到臀部位置的水平高度,Cwi為所在行人體寬度。
所述S2.3中,基于人體輪廓信息定位肩部:
S2.2.1基于人體輪廓線檢測(cè)人體寬度,從上至下掃描前景圖,掃描線寬度大小第二個(gè)峰值處為肩部,掃描線寬度大小第一個(gè)谷值處為脖頸;
S2.2.2對(duì)人體輪廓線計(jì)算斜率,取如下輪廓線:
斜率絕對(duì)值接近于零;
向肩部定位下方檢測(cè)到手臂,斜率開(kāi)始增加直到接近于正無(wú)窮;
向肩部定位上方檢測(cè)到脖頸,斜率開(kāi)始增加直到接近于正無(wú)窮;
取滿足上述要求的輪廓線,限制肩部定位點(diǎn)范圍,確定肩部定位。
所述S3中,根據(jù)模型訓(xùn)練后確認(rèn)的身材類型,選擇對(duì)應(yīng)身材類型的服裝;服裝模型的長(zhǎng)度與寬度確定方法為:
服裝長(zhǎng)度cL=(sH-Cp)/(ho/Ho);服裝寬度bW=(fB+Co)/2;
其中cL為合成圖中服裝長(zhǎng)度,sH為合成圖中肩部高度,Cp為圖中臀部高度,ho為用戶真實(shí)身高,Ho為圖中人體身高;bW為圖中服裝寬度,fB為圖中正面胸部寬度,Co為圖中胸部位置寬度。
所述S2中,所述三維數(shù)據(jù)基于kinect體感機(jī)通過(guò)骨骼識(shí)別定位獲取。
所述S3中,還包括手勢(shì)控制,所述人體圖像數(shù)據(jù)采集過(guò)程中,利用LibSVM進(jìn)行特征訓(xùn)練,實(shí)現(xiàn)手勢(shì)識(shí)別;或通過(guò)kinect體感機(jī)進(jìn)行指尖判定,實(shí)現(xiàn)手勢(shì)識(shí)別。
本發(fā)明的方法可以方便實(shí)現(xiàn)虛擬試衣,并在用戶到場(chǎng)或不到場(chǎng)兩種情況下均可以實(shí)現(xiàn),并且操作方便,尺寸匹配效果好,顯示效果好。
具體實(shí)施方式
實(shí)施例1
本實(shí)施例用于說(shuō)明本發(fā)明方法的具體技術(shù)方案。
本發(fā)明的方法包括如下步驟:
1)服裝建模;
采用已有建模軟件,如3DMAX對(duì)服裝進(jìn)行建模;并對(duì)服裝根據(jù)身材類型分類,包括Y型、A型、H型和X型;
2)人體圖像數(shù)據(jù)采集;
采集二維數(shù)據(jù)或三維數(shù)據(jù)的人體圖像數(shù)據(jù);
用戶不在現(xiàn)場(chǎng)的時(shí)候,可以由用戶提供影像采集二維數(shù)據(jù),用戶在現(xiàn)場(chǎng)時(shí),可以采集三維數(shù)據(jù)。其中,所述二維數(shù)據(jù)基于SVM分類和圖像處理獲取。所述三維數(shù)據(jù)基于kinect體感機(jī)通過(guò)骨骼識(shí)別定位獲取;
所述二維數(shù)據(jù)獲取方式包括:采用LibSVM訓(xùn)練進(jìn)行數(shù)據(jù)訓(xùn)練,獲取訓(xùn)練模型;LibSVM訓(xùn)練的訓(xùn)練集數(shù)據(jù)包括用戶身高體重、四圍信息和身材類型信息;所述四維信息包括胸圍、腰圍、臀圍、肩圍;
用戶上傳標(biāo)準(zhǔn)全身照片和身高體重?cái)?shù)據(jù),對(duì)用戶上傳標(biāo)準(zhǔn)全身照片進(jìn)行圖像處理,提取四圍信息,將身高體重?cái)?shù)據(jù)和四維信息導(dǎo)入訓(xùn)練模型,獲取身材類型分類;
LibSVM訓(xùn)練方法如下:
將單個(gè)用戶的數(shù)據(jù)作為一個(gè)樣本,表示為Di(xi,yi),其中yi為樣本標(biāo)簽,xi為六維的數(shù)據(jù)點(diǎn)xi(x身高+x體重+x肩圍+x臀圍+x胸圍+x腰圍),設(shè)所求SVM空間的超平面方程為g(x)=
設(shè)核函數(shù)形式為K(xi,x),則所求的超平面形式變化為:
LibSVM訓(xùn)練選擇的svm類型為c_svm類型,核函數(shù)為多項(xiàng)式核,迭代次數(shù)選擇3,gamma選擇0.166667,分類類別數(shù)為60,獲取訓(xùn)練模型。
本發(fā)明中在核函數(shù)的選擇中,分別試驗(yàn)了線性核,多項(xiàng)式核,RBF核,sigmoid核,參數(shù)gamma均為0.166667,在用測(cè)試樣本進(jìn)行檢驗(yàn)時(shí),發(fā)現(xiàn)平均召回率分別為82.121%,80.7%,8.65%,8.575%。同時(shí)發(fā)現(xiàn),在使用原始樣本代回測(cè)試時(shí),召回率分別為99.1%,100%,100%,8.4%。因此選擇使用多項(xiàng)式核作為核函數(shù)。本發(fā)明的SVM分類平均準(zhǔn)確率可達(dá)82。
所述S2中,用戶上傳圖像數(shù)據(jù)的處理步驟包括:
S2.1用戶上傳標(biāo)準(zhǔn)全身照片,包括正面標(biāo)準(zhǔn)照,背面標(biāo)準(zhǔn)照和側(cè)面標(biāo)準(zhǔn)照;
標(biāo)準(zhǔn)照基于如下標(biāo)準(zhǔn):
正面標(biāo)準(zhǔn)照:用戶身體直立,手臂自然下垂;
背面標(biāo)準(zhǔn)照:用戶身體直立,手臂水平伸展;
側(cè)面標(biāo)準(zhǔn)照:用戶身體直立,手臂自然下垂。
S2.2采用GrabCut算法對(duì)標(biāo)準(zhǔn)照片進(jìn)行圖像分割,將圖劃分為背景和前景兩部分,前景即為用戶人體圖像數(shù)據(jù);
S2.3對(duì)用戶三圍進(jìn)行定位,包括胸部、腰部、臀部定位,從用戶人體圖像數(shù)據(jù)中提取三圍信息;并對(duì)用戶肩部進(jìn)行定位。
首先,基于分割后的用戶背面標(biāo)準(zhǔn)照獲取胸部定位,識(shí)別出手臂后,對(duì)手臂下方位置,占人體高度5%長(zhǎng)度的位置處取得人體寬度信息取均值,計(jì)算得到胸部位置寬度Bo:
其中Bo為胸部位置寬度,Ho為人體高度,Bp為檢測(cè)到胸部位置的水平高度,Bwi為所在行人體寬度;
識(shí)別出手臂后,通過(guò)寬度檢測(cè),檢測(cè)到第一個(gè)寬度最小值時(shí)將其作為腰部中點(diǎn),對(duì)上下取人體高度5%長(zhǎng)度取平均值:
其中Wo為腰部位置寬度,Wp為檢測(cè)到腰部位置的水平高度,Wwi為所在行人體寬度;
在識(shí)別出腰部所在位置后,向下檢測(cè)至第一個(gè)寬度峰值,將其定位為臀部中心點(diǎn);根據(jù)人體高度5%長(zhǎng)度的位置取得人體寬度信息取均值,計(jì)算出臀部寬度信息Co:
其中Co為臀部位置寬度,Cp為檢測(cè)到臀部位置的水平高度,Cwi為所在行人體寬度。
基于人體輪廓信息定位肩部:
S2.2.1基于人體輪廓線檢測(cè)人體寬度,從上至下掃描前景圖,掃描線寬度大小第二個(gè)峰值處為肩部,掃描線寬度大小第一個(gè)谷值處為脖頸;
S2.2.2對(duì)人體輪廓線計(jì)算斜率,取如下輪廓線:
斜率絕對(duì)值接近于零;
向肩部定位下方檢測(cè)到手臂,斜率開(kāi)始增加直到接近于正無(wú)窮;
向肩部定位上方檢測(cè)到脖頸,斜率開(kāi)始增加直到接近于正無(wú)窮;
取滿足上述要求的輪廓線,限制肩部定位點(diǎn)范圍,確定肩部定位。
為實(shí)現(xiàn)通過(guò)手勢(shì)控制進(jìn)行衣服的篩選,在人體圖像數(shù)據(jù)采集過(guò)程中可,利用SVM進(jìn)行特征訓(xùn)練,實(shí)現(xiàn)手勢(shì)識(shí)別;或通過(guò)kinect體感機(jī)進(jìn)行指尖判定,實(shí)現(xiàn)手勢(shì)識(shí)別;
S3將人體圖像數(shù)據(jù)和服裝建模數(shù)據(jù)關(guān)聯(lián),在顯示器上顯示;
根據(jù)模型訓(xùn)練后確認(rèn)的身材類型,選擇對(duì)應(yīng)身材類型的服裝;服裝模型的長(zhǎng)度與寬度確定方法為:
服裝長(zhǎng)度cL=(sH-Cp)/(ho/Ho);服裝寬度bW=(fB+Co)/2;
其中cL為圖中服裝長(zhǎng)度,sH為圖中肩部高度,Cp為圖中臀部高度,ho為用戶真實(shí)身高,Ho為圖中人體身高;bW為圖中服裝寬度,fB為圖中正面胸部寬度,Co為圖中胸部位置寬度。
當(dāng)服裝的匹配效果出現(xiàn)誤差或者不符合用戶的意圖時(shí),可以手動(dòng)微調(diào)服裝位置與大小。
服裝與人體的肩部定位點(diǎn)的區(qū)域大小不一致的,因此本發(fā)明中對(duì)用戶調(diào)整的范圍進(jìn)行了限制,以防止用戶的誤操作。限定方法是:用戶對(duì)服裝的位置進(jìn)行調(diào)節(jié)時(shí)兩者的匹配區(qū)域必須有重合區(qū)域,否則不能調(diào)整。對(duì)于服裝的大小可以通過(guò)手指對(duì)屏幕的觸控調(diào)整。