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