張穎 段萌萌 康磊 葉金中 熊露潔
摘要:該文基于Android Studio平臺,首先通過用戶輸入的身材信息和OpenCV對人體照片的分析,判斷人體身材類型,然后通過3d Max創(chuàng)建不同人體身材類型的穿搭人體模型,最后通過OpenGL圖形庫導(dǎo)入3d Max創(chuàng)建的穿搭人體模型,最終在應(yīng)用程序上實現(xiàn)個性化三維虛擬試衣的效果。
關(guān)鍵詞:OpenCV;OpenGL;3d Max;人體模型;虛擬試衣
中圖分類號:TP391? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)18-0216-04
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
Construction of Personalized Wearing Mannequin Based on OpenCV, OpenGL and 3d Max
ZHANG Ying, DUAN Meng-meng, KANG Lei, YE Jin-zhong, XIONG Lu-jie
(College of Engineering and Design, Hunan Normal University, Changsha 410000, China)
Abstract: This paper is based on Android studio platform. Firstly, through the analysis of user's body information and OpenCV on human photos, we can judge the type of human body. Then, we can create different types of wearing mannequins through 3d Max. Then, we can import the wearing mannequins created by 3d Max through OpenGL graphics library. Finally, we can realize the effect of personalized 3D virtual fitting on the application program.
Key words: OpenCV; OpenGL; 3d Max; Manikin; virtual fitting
1 背景
如今的線上購物平臺在展示衣物時采用的依舊是平面模特試穿的二維圖片,但平面模特的試穿效果有時并不十分有代入感,導(dǎo)致大家依然難以想象衣物穿在自己身上是什么感覺,難以完成購買決策。因此隨著時代的發(fā)展和互聯(lián)網(wǎng)技術(shù)的更新,一款可以構(gòu)建個性穿搭人體模型,幫助大家完成虛擬試衣需求的應(yīng)用程序十分有現(xiàn)實意義,可以有效提升人們關(guān)于衣物是否合適自己的線上購物體驗[1]。
OpenCV (Open Source Computer Vision Library)是一個開源的計算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可實現(xiàn)圖像處理和計算機(jī)視覺方面的許多通用算法[2]。OpenGL(Open Graphics Library)是美國高級圖形和高性能計算機(jī)系統(tǒng)公司SGI所開發(fā)的三維圖形標(biāo)準(zhǔn)庫,可以較好地渲染2D、3D矢量圖形[3]。OpenCV和OpenGL都是可以跨平臺編程接口,因此可以在Android Studio上流暢使用。3d Max是一款常用的三維動畫制作軟件,具有十分強(qiáng)大的三維建模功能[4],本項目通過導(dǎo)出OBJ和MTL文件,可以實現(xiàn)3d Max建模與Android Studio平臺的完美結(jié)合。
2 實驗過程
2.1 判斷人體身材類型
判斷人體身材類型的依據(jù)主要有兩部分,一部分是根據(jù)用戶輸入的身高體重信息計算的BMI值,另一部分是通過OpenCV識別人體輪廓,橢圓擬合后計算出的長寬比。這就要求用戶提供真實的身高體重信息,并且提供的照片盡量背景簡單且穿著貼身,有利于提高判別的精準(zhǔn)度。
通過OpenCV識別人體模型主要通過以下幾步:
1)通過使用函數(shù)GaussianBlur()對圖像進(jìn)行高斯濾波去噪[5]。
2)通過使用函數(shù)cvtColor()將圖像變成灰度圖像。
3)通過使用函數(shù)threshold()將圖像變成二值化圖像,減少數(shù)據(jù)量,凸顯目標(biāo)輪廓[6]。
4)運用形態(tài)學(xué)原理中的開運算,對圖像先腐蝕后膨脹,濾除多余毛刺,獲得比較平滑規(guī)整的圖像。如下圖1(a)(b)為兩張清晰的不同體形的人體照片,下圖1(c)(d)為經(jīng)過前四步圖像處理后的圖片,可以看到圖片的輪廓邊緣比較清晰分明,噪聲清理得比較干凈。
5)使用函數(shù)findContours()查找輪廓,ellipse()畫出擬合的橢圓并獲得長寬,如圖1(e)(f)所示。
同時我們通過大量實際操作,將對圖片的身材判斷和輸出的數(shù)據(jù)進(jìn)行比對,得到結(jié)論如下:
橢圓長寬比的比值越大,代表人物比例越纖細(xì),比值越小,代表人物比例越粗壯。
當(dāng)輸出的比值結(jié)果小于3時,照片中人物一般處于偏胖的O型。當(dāng)輸出比值結(jié)果大于4時,照片中人物一般處于偏瘦的H型。當(dāng)輸出的比值在3—4之間時,一般屬于身材較為勻稱的X型或A型。
由于單憑照片判斷或許結(jié)論有些偏頗,因此我們根據(jù)用戶輸入的身高體重信息計算出BMI值,結(jié)合照片識別的數(shù)據(jù)綜合判斷。BMI(體質(zhì)指數(shù))值=體重(kg)/身高(m)的平方而得。
1)當(dāng)BMI值在18.5-24.9之間時,屬正常范圍。這時若橢圓長寬比小于3,則為A型;3-4之間則為X型;4以上則為H型。
2)當(dāng)BMI值大于25時,屬于超重。這時若橢圓長寬比小于3,則為O型;大于3,則為A型。
3)當(dāng)BMI值小于18.5時,屬于偏瘦。這時若橢圓長寬比小于3,則為A型;大于3,則為H型。
2.2 創(chuàng)建穿搭人體模型
3D人體建模是利用三維軟件構(gòu)建出具有立體感的物體模型,在本次項目中我們采取兩種形式同時建模,MATLAB和3d Max同時構(gòu)造人體模型。在年輕女性三維模型的建構(gòu)中,根據(jù)我們需要模型的性質(zhì)、形狀、特點、材質(zhì)我們發(fā)現(xiàn)3d Max功能更齊全,建模效率更高。而對于服飾模擬,初期預(yù)想是通過3d Max進(jìn)行服裝建模,但是不能體現(xiàn)面料真實自然的垂落感,學(xué)習(xí)過程中發(fā)現(xiàn)CLO Standalone軟件更適合服裝3D的虛擬效果。
1)建立人體模型
本項目的四種人體基本身材模型采用3d Max軟件建造,通過提取人體的體型及臉部特征點分類計算三維數(shù)據(jù),并結(jié)合實際測量數(shù)據(jù)適當(dāng)調(diào)整,主要提取的人體體型特征有肩圍、臂圍、胸圍、腰圍、臀圍、大腿圍、小腿圍,根據(jù)以上特征將女性體型分為X型,H型,A型和O型。如圖2(a)(b)所示。
①人體頭部模型的建立。利用圓滑命令將初建立的盒子呈圓形狀,利用鏡面對稱將其刪除一半,將其周圍邊緣化后使其更加光滑,同時利用擠壓,連接,切割、填充的命令給頭部設(shè)置合適的五官,并對細(xì)節(jié)特征進(jìn)行提拉、填充。最后采用多邊形網(wǎng)格的方式去將已建造的基礎(chǔ)的三維多邊形低模的點線面進(jìn)行編輯和修改,完成它的一個逼真的效果,如圖3(a)(b)(c)所示。
②四種基本身材類型的建立。根據(jù)不同身材數(shù)據(jù)設(shè)計所需構(gòu)建模型數(shù)據(jù)。X型身材線條明顯,俗稱沙漏型身材:肩圍=臀圍=胸圍>腰圍+20cm;H體型體態(tài)勻稱肩圍=臀圍<=20cm+腰圍 胸圍平;A型體型上半身窄,肩寬:肩圍<臀圍5cm以上;O型身材腰圍>胸圍和臀圍5cm以上。對于上述過程中已經(jīng)構(gòu)造出的基本X模型,在身高條件一致的情況下,以166cm為標(biāo)準(zhǔn),根據(jù)不同身材的體態(tài)特征去將肩、臀、胸、腰、大小腿的圍度在3d Max中對標(biāo)準(zhǔn)模采取擠壓、縮放、移動的命令來繪制模型。X模型計算特征數(shù)據(jù)時將人體剖面看作橢圓形計算周長,若用a表示橢圓長半軸的長,b表示橢圓短半軸的長(a>b>0),則根據(jù)橢圓周長定理,橢圓周長公式:為L=2πb+4(a-b) 身體的圍度利用公式求得。在3d Max測量中,找到肩部外邊的最凸點圍繞一圈,人模的體態(tài)保證雙臂下垂,抬頭挺胸,胸圍采取胸部最高處圍成一圈,腰圍以及臀圍腿圍的測量同理找到最凹或最凸點圍繞一圈去測量,形如下圖4(a)(b)(c)(d)所示。
2)虛擬服飾模擬
四種身材模型進(jìn)行打包后利用CLD Standalone軟件進(jìn)行服裝3D的制作。根據(jù)服裝尺碼數(shù)據(jù)通過富怡CAD軟件制作服裝裁片導(dǎo)出DXF格式,導(dǎo)入要模擬貼合的服裝裁片DXF文件(如圖5(a))進(jìn)行縫合,如圖5(b);然后進(jìn)行模擬,如圖5(c);進(jìn)行面料預(yù)設(shè)和渲染效果,如圖5(d)。
最后再導(dǎo)入3d Max內(nèi)進(jìn)行材質(zhì)的貼圖和渲染,對人體模型的膚色采取RGB248 197 183在材質(zhì)編輯器中雙擊漫反射去修改,選中整個物體將其添加編輯器進(jìn)行UVW展開,期間要將模型的位置進(jìn)行調(diào)整,頭部XYZ軸分別為1.1、7.0、0.0。頭與腳的距離為14.0;左右和右手的距離為5.0,人模位置需要與Z軸平行,垂直于X\Y軸,如圖6(a)(b)(c)所示。
2.3 導(dǎo)入穿搭人體模型
模型展示在Android Studio[7]中的實現(xiàn),需要OBJ文件及MTL文件同時讀取,并創(chuàng)建兩個實體類分別保存文件信息。代碼解析OBJ文件和MTL文件過程中,將OpenGL紋理貼圖映射到Android Studio中,在OpenGL自己的線程中調(diào)用相關(guān)api,對所繪制的實體類進(jìn)行渲染。渲染前后對比如圖7(a)(b)所示。
2.4 App界面展示
3 總結(jié)
本文主要研究了基于OpenCV、OpenGL與3d Max的個性穿搭人體模型構(gòu)建,主要完成了以下幾方面的工作:
1)通過用戶個人數(shù)據(jù)及OpenCV識別人體輪廓,從而簡單判定用戶身材類型;
2)應(yīng)用3d Max構(gòu)建人體模型及貼圖、渲染;
3)應(yīng)用CLD Standalone進(jìn)行虛擬服飾模擬;
4)在Android Studio中實現(xiàn)3D模型的導(dǎo)入及展示。
本款A(yù)pp的設(shè)計還存在功能不夠完善、數(shù)據(jù)庫較小的問題。綜合看來,可以基本實現(xiàn)對年輕女性不同身材的判定及服飾的展示。
參考文獻(xiàn):
[1] 徐俊,普園媛,徐丹,等.基于款式變換和局部渲染相結(jié)合的虛擬試衣研究[J].太原理工大學(xué)學(xué)報,2021,52(1):98-104.
[2] 蔣丹妮,史瑞鵬,方青.基于OpenCV和OpenGL的720°全景場景構(gòu)建方法研究[J].測繪與空間地理信息,2021,44(2):68-72,76.
[3] 呂珍,謝倩,祝雙武,等.OpenGL 導(dǎo)入3DS 模型模擬服裝試穿[J].西安工程大學(xué)學(xué)報,2014,28(4):440-444.
[4] 李懷功.關(guān)于3Dmax建模的方法分析和技巧探討[J].電腦知識與技術(shù),2017,13(21):128-129.
[5] 張藝,匡毅,王梅,等.基于OpenCV的人體輪廓檢測算法[J].計算機(jī)技術(shù)與發(fā)展,2020,30(8):81-85.
[6] 王甜.基于OpenCV在Android移動終端的圖形識別[J].電子制作,2020(23):63-65.
[7] 葉紀(jì)委.適于移動端的三維鞋款選配展示App開發(fā)與實現(xiàn)[D].西安:陜西科技大學(xué),2017.
【通聯(lián)編輯:謝媛媛】