李曉志, 李曉久, 劉 皓
(天津工業(yè)大學(xué) 紡織科學(xué)與工程學(xué)院, 天津 300387)
在服裝領(lǐng)域,人體尺寸數(shù)據(jù)是服裝設(shè)計(jì)、人體體型分類、制定服裝號(hào)型規(guī)格標(biāo)準(zhǔn)、研究服裝功效學(xué)的基礎(chǔ),精確的人體尺寸數(shù)據(jù)是服裝穿著合體、舒適、美觀的重要依據(jù)。根據(jù)GB/T 16160—2017《服裝用人體測(cè)量的尺寸定義與方法》,人體測(cè)量數(shù)據(jù)分為圍度尺寸、距離尺寸、角度尺寸,這些數(shù)據(jù)可通過手工測(cè)量和三維非接觸式測(cè)量的方法獲取。與手工測(cè)量相比,三維非接觸式人體測(cè)量具有速度快、精度高、數(shù)據(jù)信息充分等特點(diǎn),已成為現(xiàn)代人體測(cè)量的主要方法,同時(shí)該方法是服裝智能制造實(shí)現(xiàn)的關(guān)鍵技術(shù)之一。
三維非接觸式人體測(cè)量一般是通過計(jì)算機(jī)圖像學(xué)、計(jì)算機(jī)視覺、數(shù)據(jù)處理等科學(xué)方法建立數(shù)字化人體模型,在數(shù)字化人體模型上提取人體尺寸可模擬傳統(tǒng)手工測(cè)量的方法。首先識(shí)別人體特征點(diǎn),人體特征點(diǎn)主要通過人機(jī)交互的方式[1],計(jì)算機(jī)自動(dòng)判別[2-4]的方法提取的;然后根據(jù)特征點(diǎn)計(jì)算人體尺寸數(shù)據(jù)。人體距離尺寸和角度尺寸可直接通過特征點(diǎn)的坐標(biāo)建立的直線或曲線方程計(jì)算得到,人體的圍度尺寸是圍繞特征點(diǎn)所在截面1圈的長度,該尺寸忽略了人體凹陷部位曲線的長度,是人體截面的凸包周長,因此計(jì)算人體圍度尺寸最關(guān)鍵的是求取截面的凸包點(diǎn)集。文獻(xiàn)[2-3]直接通過Graham掃描法[5]計(jì)算人體截面的凸包點(diǎn)集,Graham掃描法原理簡單,算法穩(wěn)定,應(yīng)用在很多領(lǐng)域;文獻(xiàn)[4]采用改進(jìn)凸包算法,該算法先將人體截面分成2部分,每部分進(jìn)行排序后通過計(jì)算相鄰3點(diǎn)組成的三角形面積的正負(fù)值確定凸包點(diǎn)集,與Graham掃描法相比該算法并沒有優(yōu)勢(shì);文獻(xiàn)[5]先采用包圍盒方法簡化人體截面點(diǎn)集,然后通過Graham掃描法計(jì)算簡化后點(diǎn)集的凸包,該方法中小包圍盒尺寸的設(shè)定非常重要,尺寸過大可能導(dǎo)致初始人體截面點(diǎn)集中凸包點(diǎn)的丟失,尺寸過小會(huì)增加遍歷包圍盒的數(shù)量,降低效率。
凸包算法在其他工程領(lǐng)域應(yīng)用也非常廣泛,針對(duì)要解決的工程問題,部分文獻(xiàn)通過簡化初始點(diǎn)集來提高Graham掃描凸包效率[6-8],部分文獻(xiàn)提出了新的凸包算法[9-11],還有部分文獻(xiàn)研究了初始凸包形式對(duì)凸包算法效率的影響[12]。通過分析比較發(fā)現(xiàn),Graham掃描法實(shí)現(xiàn)簡單且穩(wěn)定,但是點(diǎn)集中凹點(diǎn)越多,算法回溯驗(yàn)證次數(shù)就越多,可能會(huì)因?yàn)槠渲?個(gè)點(diǎn)而需要對(duì)點(diǎn)集中50%的點(diǎn)進(jìn)行回溯驗(yàn)證。鑒于上述情況,根據(jù)人體表面明顯的凹凸特性,本文先簡化人體截面點(diǎn)集,再根據(jù)矢量積確定點(diǎn)集的凸包點(diǎn)并計(jì)算人體圍度尺寸。
在數(shù)字化人體模型上提取的人體截面是三維空間中的點(diǎn)云,本文采集的人體點(diǎn)云坐標(biāo)分布如圖1(a)所示,y軸為人體高度方向,人體截面與xz平面平行。為使計(jì)算人體圍度尺寸更加快速便利,本文將人體截面投影到xz平面內(nèi),即直接忽略y坐標(biāo)值,如圖1(b)所示,將人體胸、腰、臀部截面點(diǎn)云的三維坐標(biāo)轉(zhuǎn)換到二維平面中。
圖1 人體截面坐標(biāo)轉(zhuǎn)換
Fig.1 Transformation of human section′s coordinates. (a) Human body′s space coordinates; (b) Sections′ plane coordinates
一般情況下,點(diǎn)集的凸包可按極值點(diǎn)分成4個(gè)子區(qū)域,使每個(gè)子區(qū)域內(nèi)凸包點(diǎn)集都具有單調(diào)性,根據(jù)凸包該特性可通過對(duì)初始點(diǎn)集進(jìn)行區(qū)域劃分,對(duì)子區(qū)域內(nèi)的坐標(biāo)點(diǎn)通過排序比較法去掉部分凹點(diǎn),使子區(qū)域具有單調(diào)性。
設(shè)P={p1,p2, ,pn}為平面坐標(biāo)系內(nèi)人體截面點(diǎn)集,(x(i),z(i))為點(diǎn)pi的坐標(biāo),通過快速比較法可分別獲取點(diǎn)集在x坐標(biāo)軸的極大值xmax和極小值xmin、z坐標(biāo)軸的極大值z(mì)max和極小值z(mì)min。xmax、xmin、zmax、zmin可能是1個(gè)點(diǎn)也可能是多個(gè)點(diǎn)的集合,極值點(diǎn)必定是人體截面凸包點(diǎn)集中的點(diǎn)。本文在計(jì)算極值點(diǎn)時(shí),只將搜索到的第1個(gè)極值點(diǎn)通過參數(shù)A1(xmax,z1)、A2(xmin,z2)、A3(x1,zmax)、A4(x2,zmin)記錄作為子區(qū)域劃分的分割點(diǎn),將其他極值點(diǎn)作為該子區(qū)域內(nèi)的點(diǎn)通過排序比較法進(jìn)行處理。
在進(jìn)行子區(qū)域劃分時(shí),將分割點(diǎn)作為該單調(diào)區(qū)間內(nèi)的2個(gè)端點(diǎn),并以此判斷其他點(diǎn)的凹凸性,4個(gè)子區(qū)域點(diǎn)集如下所示:
1)設(shè)子區(qū)域I中點(diǎn)的個(gè)數(shù)為t1,該區(qū)域點(diǎn)集為{p11,p12, ,p1t1},p1i對(duì)應(yīng)的坐標(biāo)為(x1(i),z1(i)),該區(qū)域2個(gè)端點(diǎn)為p11=A1、p1t1=A3。
2)設(shè)子區(qū)域II中點(diǎn)的個(gè)數(shù)為t2,該區(qū)域點(diǎn)集為{p21,p22, ,p2t2},p2i對(duì)應(yīng)的坐標(biāo)為(x2(i),z2(i)),該區(qū)域2個(gè)端點(diǎn)為p21=A3、p2t2=A2。
3)設(shè)子區(qū)域III中點(diǎn)的個(gè)數(shù)為t3,該區(qū)域點(diǎn)集為{p31,p32, ,p3t3},p3i對(duì)應(yīng)的坐標(biāo)為(x3(i),z3(i)),該區(qū)域2個(gè)端點(diǎn)為p31=A2、p3t3=A4。
4)設(shè)子區(qū)域IV中點(diǎn)的個(gè)數(shù)為t4,該區(qū)域點(diǎn)集為{p41,p42, ,p4t4},p4i對(duì)應(yīng)的坐標(biāo)為(x4(i),z4(i)),該區(qū)域2個(gè)端點(diǎn)為p41=A4、p4t4=A1。
當(dāng)參數(shù)A1與A3、A3與A2、A2與A4、A4與A1重合時(shí),子區(qū)域仍然按上述方法劃分,在后續(xù)處理中不進(jìn)行操作。將獲取的人體胸圍截面點(diǎn)云進(jìn)行區(qū)域劃分后如圖2所示。
圖2 胸圍截面點(diǎn)云區(qū)域劃分
Fig.2 Division of bust cloud point
圖3 遍歷方向
Fig.3 Traversal direction. (a)From extreme pointztoxdirection; (b) From extreme pointxtozdirection
子區(qū)域I、II、III、IV的凸包點(diǎn)集應(yīng)具有單調(diào)性,區(qū)域I、III單調(diào)遞減,區(qū)域II、IV單調(diào)遞增。每個(gè)區(qū)域的首末端點(diǎn)必定是凸包點(diǎn),本文以區(qū)域內(nèi)首末端點(diǎn)為參考點(diǎn),采用快速排序法對(duì)每個(gè)子區(qū)域內(nèi)的點(diǎn)按從內(nèi)到外、z坐標(biāo)值的單調(diào)性進(jìn)行排序,即區(qū)域I和II按z坐標(biāo)值遞減、區(qū)域III和IV按z坐標(biāo)值遞增的順序排序,然后通過判斷x坐標(biāo)值是否滿足該區(qū)域單調(diào)性確定點(diǎn)是否刪除。x坐標(biāo)值判別順序應(yīng)與z坐標(biāo)值排序順序一致,否則雖然與區(qū)域單調(diào)性一致但會(huì)缺失部分凸點(diǎn),以區(qū)域IV為例,圖3(a)按從z極值點(diǎn)向x極值點(diǎn)方向遍歷,部分凸點(diǎn)被刪除,圖3(b)按x極值點(diǎn)向z極值點(diǎn)方向遍歷,只刪除部分凹點(diǎn)。 以子區(qū)域II為例,刪除部分凹點(diǎn)的過程如下:
1)判斷x2(1)與x2(t2)及z2(1)與z2(t2)是否相等。如果相等,則不進(jìn)行任何操作;如果不相等,則進(jìn)入下一步。
2)將(x2(i),z2(i))賦值給該區(qū)域指定數(shù)組中(m2(k),n2(k)),其中i≥2且i≤t2、k≥1。
3)若x2(i)≥m2(k),則k=k+1,將該點(diǎn)坐標(biāo)值賦值給(m2(k),n2(k))。
4)若x2(i) 5)i=i+1,重復(fù)步驟3)和4),當(dāng)i=t2時(shí)完成遍歷所有的點(diǎn)。 該方法保留了除分割點(diǎn)外的其他極值點(diǎn),圖2的子區(qū)域經(jīng)該方法處理后如圖4所示,區(qū)域I、III幾乎沒有刪除點(diǎn),II、IV中點(diǎn)的凹凸性較大,刪除部分凹點(diǎn)。 圖4 按單調(diào)性排序刪點(diǎn)后各子區(qū)域 Fig.4 Subsets after sorting by monotonicity (xi+1-xi)×(zi-zi-1) 它們的夾角β滿足下式: 根據(jù)T的正負(fù)可判斷β的范圍: 1)T>0,則sinβ>0,β<180°,pi為凸點(diǎn),存入凸包點(diǎn)集; 2)T=0,則sinβ=0,β=180°,3點(diǎn)在一條直線上,該點(diǎn)的存在與否不會(huì)影響凸包的形狀,將該點(diǎn)直接刪除; 3)T<0,則sinβ<0,β>180°,pi為凹點(diǎn),直接刪除。 圖5 相鄰3點(diǎn)的內(nèi)側(cè)夾角 Fig.5 Inside angle of adjacent three points 經(jīng)上述方法對(duì)胸圍截面點(diǎn)云各子區(qū)域處理后,獲取的點(diǎn)集如圖6(a)所示,將各子區(qū)域點(diǎn)按順序合并在一起,去掉重復(fù)的分割點(diǎn),即為人體胸圍截面凸包點(diǎn)集,將凸包點(diǎn)集按順序連接起來,可獲取人體胸圍截面點(diǎn)云的凸包,即胸圍的圍度尺寸線,如圖6(b)所示。采用該方法獲取的人體腰圍和臀圍截面點(diǎn)集的凸包,即人體腰和臀的圍度尺寸線,如圖7所示。 圖6 胸圍線的獲取 Fig.6 Extracting bust line. (a) Subset convex hull; (b) Section point cloud of bust line and its convex hull 圖7 腰圍線和臀圍線的獲取 Fig.7 Extracting waist line and hip line. (a) Section point cloud of waist line and its convex hull; (b) Section point cloud of hip line and its convex hull 將凸包點(diǎn)按順序連接起來,所有線段長度的和即為人體圍度尺寸,通過計(jì)算得圖1人體的胸圍、腰圍、臀圍尺寸分別為84.4,62.9,83.3 cm。 如圖8所示,應(yīng)用Graham掃描法獲取的人體胸、腰、臀部凸包點(diǎn)集與本文方法獲取的凸包點(diǎn)集一致,由此可證明本文方法提取的凸包點(diǎn)集的正確性以及人體圍度尺寸計(jì)算的準(zhǔn)確性。 圖8 獲取凸包方法比較 Fig.8 Methods comparison of extracting convex hull 非接觸式三維人體測(cè)量系統(tǒng)在服裝領(lǐng)域最直接的應(yīng)用是獲取人體尺寸信息。本文中人體截面凸包計(jì)算的主要過程為遍歷極值點(diǎn),子區(qū)域劃分,子區(qū)域內(nèi)排序比較法刪點(diǎn),凸包點(diǎn)集獲??;Graham掃描法計(jì)算凸包點(diǎn)集的過程主要包括遍歷極值點(diǎn),計(jì)算極值點(diǎn)與每個(gè)點(diǎn)構(gòu)成的向量與x軸夾角的余弦值,按余弦值對(duì)點(diǎn)進(jìn)行排序,根據(jù)向量積獲取凸包點(diǎn)集。2種方法的時(shí)間復(fù)雜度相同,計(jì)算結(jié)果一致,但是本文通過簡單的排序,比較刪點(diǎn)法簡化初始點(diǎn)集可減少凸包頂點(diǎn)回溯迭代次數(shù),從而提高了計(jì)算人體圍度尺寸的效率。3 凸包點(diǎn)集獲取
4 人體圍度尺寸計(jì)算
5 結(jié)束語