張穎 段萌萌 康磊 葉金中 熊露潔



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