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