齊嘯,計忠平
(杭州電子科技大學圖形圖像研究所,杭州310018)
近年來三維人體掃描和模型重建技術越來越成熟,方法越來越多樣化,在三維人體模型構(gòu)建完成后,人體上的一些參數(shù)就成了衡量模型誤差的重要標準,這些參數(shù)大致可以分為非封閉的長度數(shù)據(jù)和封閉的圓周數(shù)據(jù)兩類,胸部和腰部數(shù)據(jù)作為同時涉及到這兩類的參數(shù),可以良好反映三維人體模型軀干部分的建模精確程度,而胸部和腰部數(shù)據(jù)的獲取就涉及到三維人體測量學。三維人體測量是通過對人體模型各部位的尺寸和人體體型進行測量,進而研究人體的形態(tài)特征和技術方法[1]。三維人體測量技術出現(xiàn)于20 世紀80年代中期,它可實現(xiàn)非接觸式測量,并應用于人體數(shù)據(jù)庫建立、服裝量體定制、人體工程學、醫(yī)學及博物館陳列等[2-4]。相比于傳統(tǒng)的手工測量法[5]和照相測量法[6],該方法的顯著優(yōu)勢在于測量過程自動化程度高、時間短、結(jié)果精確度極高[7]。按照測量方式的不同可分為主動式和被動式兩大類[8],被動式是利用攝影成像技術,直接拍攝人體圖像進行測量的方法[9];主動式是將圖像轉(zhuǎn)換為點云,然后在點云數(shù)據(jù)上利用算法進行測量,包括激光測量法[10]、莫爾條紋測量法[11]、TC2 分層輪廓測量法[12]、Loughborough 人體陰影掃描裝置[13]、Cyber 全身掃描系統(tǒng)[14]、投影條紋測量法等[15]。近年來,由于Ki?nect 傳感器設備的出現(xiàn),通過光學三角測量得到真實世界的以毫米為單位的深度圖像[16]來完成三維重建再進行測量的方法成為主流。Alexander Weiss 等[17]實現(xiàn)了基于單個Kinect 的家用型三維人體重建系統(tǒng)。宋詩超[18]基于單個Kinect 產(chǎn)生深度圖像后,采用三角剖分算法進行粗略建模,再在三維人體上進行編碼定義,實現(xiàn)了人體尺寸的自動化提取。Yi Chen 等[19]使用兩臺Kinect 設備,分別從受試者的正前方和正后方拍攝得到點云圖像后測量,測量所需時間短,避免了受試者移動產(chǎn)生的誤差,但數(shù)據(jù)精度較低。Jing Tong 等[20]使用三臺Kinect 設備,兩臺掃描人體的上部分和下部分,一臺從相對方向采集人體的中間軀干部分,再拼接配準,但是由于深度數(shù)據(jù)質(zhì)量不高,會發(fā)生配準不成功的情況。Jun-Ming Lu[21]等將3D 圖像分成2D 輪廓并進行分析,利用最小維度檢測、灰度檢測、人體等高線等方法獲得標記點和標記線來測量人體,但是測量樣本范圍較小。目前獲取人體尺寸數(shù)據(jù)的方法的通性多是先得到或者直接利用真實人體的圖像數(shù)據(jù)或點云數(shù)據(jù),再采用不同的算法策略進行測量,所以準確的數(shù)據(jù)來源是保證結(jié)果精確度的關鍵,本文采用權(quán)威的CAE?SAR 三維人體數(shù)據(jù)庫作為數(shù)據(jù)來源,將重點之一放在測量算法上,在標準模板上選出測量點,實現(xiàn)數(shù)據(jù)庫中三維人體模型胸圍和腰圍的自動化測量。
另外,2D 轉(zhuǎn)3D 技術已經(jīng)成為了新的研究熱點,通過預設立體化參數(shù),利用圖像算法令雙目圖像產(chǎn)生視差信息并將其放大,使之成為立體信息產(chǎn)生3D 效果[22-23]。在人體建模方面,可以利用2D 人體正面照和側(cè)面照產(chǎn)生一個目標三維人體模型,這就需要人體上一些部位的寬度和厚度數(shù)據(jù)來擬合出該部位的維度。在進行測量實驗后我們已經(jīng)得到了大量的人體尺寸(腰厚、腰寬、腰圍、胸厚、胸寬、胸圍)數(shù)據(jù),由此可以運用線性回歸和神經(jīng)網(wǎng)絡來預測人體非線性尺寸,通過仿真預算得到人體的腰圍和胸圍數(shù)據(jù)[24],這就是本文的另一個重點。該功能在服裝量身定制[25]、虛擬服裝設計[26]和建立人體數(shù)據(jù)庫[27-29]上都發(fā)揮著重要作用。
我們的數(shù)據(jù)來源于以美國和歐洲地區(qū)平民為基礎的人類學資源項目(CAESAR)。CAESAR 項目收集了數(shù)千個來自美國或者歐洲地區(qū)的志愿者的全身掃描數(shù)據(jù),如圖1 所示,這些志愿者的年齡分布在18-65 歲之間。為了掃描的精確性,每名受試者僅穿著灰色緊身運動短褲和乳膠帽,女性受試者還需穿著灰色運動胸罩。掃描之前,每名受試者身上被放置74 個標記點,標記點多置于關鍵骨骼點處(參見圖2)。此外,CAE?SAR 還記錄了受試者的年齡、體重、種族等信息。數(shù)據(jù)集中每個個體的數(shù)據(jù)形式為obj 文件,每個文件包含19347 個網(wǎng)格點的三維坐標和12893 個三角網(wǎng)格面的索引,這些網(wǎng)格點和網(wǎng)格面構(gòu)成了一個三維人體模型。CAESAR 是目前為止關于人體模型方面最大的商業(yè)可用數(shù)據(jù)集,包含豐富的人體樣本,我們獲取了其中4307 個人體作為測量目標。
圖1 CAESAR數(shù)據(jù)集部分人體的全身掃描
圖2 CAESAR項目受試者
采用MeshLab 的功能來完成胸部和腰部點列的選取工作。MeshLab 是一個開源軟件,主要用于三維三角網(wǎng)格的呈現(xiàn)和編輯。我們需要在數(shù)據(jù)庫中選擇某一個人體模型作為點列模板,在經(jīng)過多次試驗后,發(fā)現(xiàn)身材過胖和過瘦的人體模型作為模板時,會造成計算出的其他人體模型的腰圍點列不水平,結(jié)果誤差較大,為防止這種情況出現(xiàn),我們選用身材較為標準的人體模型作為模板,該模型序號為CSR0013A。在MeshLab中導入CSR0013A 模型并運用Wireframe 將其網(wǎng)格化顯示,結(jié)果如圖3。運用PickPoints 在模型腰部的水平一圈進行點選取,記錄每個點的世界坐標,在選定某個點的同時,運用Get Info 獲取該點所在三角網(wǎng)格的面索引、頂點索引和頂點世界坐標,按照選取順序?qū)⑦@些點的相關信息記錄在點列文件中。胸部的點列選取略有不同,在人體正面兩乳頭之間的部分不做選取。腰部測量點數(shù)量為98,胸部測量點數(shù)量為96。對于腰厚點列即選取人體模型腰部正面和背面各一點,腰寬和胸寬點列即選取人體模型相對應部位的左右兩側(cè)各一點。胸厚點列選取人體模型正面兩乳頭和胸腔三個點,背面選取這三個點水平對應的點,按照點列文件格式記錄點信息。
圖3 CSR0013A模板人體
讀取腰部和胸部點列文件,由于記錄了點坐標,可以利用海倫公式計算三角網(wǎng)格面積Square_ABC,同時計算模板測量點P 與P 所在三角網(wǎng)格頂點形成的三角形的 面 積Square_PBC、Square_PAC 和Square_PAB。運用Square_PBC/Square_ABC、Square_PAC/Square_ABC 和Square_PAB/Square_ABC 獲取P 的重心坐標(kA,kB,kC),同時記錄點P 所在三角網(wǎng)格索引。按照上述方法,即可得到腰寬、腰厚、腰圍、胸寬、胸厚和胸圍的點列重心坐標。
為保證點列的準確性和可靠性,需要對點列文件中的數(shù)據(jù)進行核對。讀取CSR0013A 模型原始數(shù)據(jù),以面索引為依據(jù)將點列文件中的頂點索引和坐標與原始數(shù)據(jù)進行一致性核對,發(fā)現(xiàn)不一致即跳出程序,并顯示出現(xiàn)錯誤的點列序號與錯誤處,之后立即對點列文件進行修改并重新執(zhí)行重心坐標計算程序。另外,需要檢驗重心坐標的準確性,由于點坐標是浮點數(shù),所以設置重心坐標和的上限為1.001,即1<=kA+kB+kC<=1.001,若大于上限,表示該點P 不在所記錄的網(wǎng)格內(nèi),需要重新選取。
CAESAR 數(shù)據(jù)庫中所有人體的相對部位擁有相同的三角網(wǎng)格面索引(不同的是頂點坐標,所以才會有不同的體型),即不同模型同一部位的三角形具有線性映射關系,利用這個特性可以計算所有模型的人體尺寸。依次讀取CAESAR 數(shù)據(jù)庫每個人體模型數(shù)據(jù),依據(jù)腰圍點列的三角網(wǎng)格面索引計算每個新點,至此得到了待測量模型的腰圍和胸圍點列,相鄰兩點計算歐氏距離,即得到該人體模型的腰圍和胸圍長度。腰寬、腰厚、胸厚同理。對于胸寬,需要計算三個正面和背面對應點的均值。需要注意的是,計算出的人體尺寸是模型按身高2 米被等比例擴展或縮放后的以三維世界坐標為單位的尺寸值。
在已經(jīng)擁有大量人體厚度值和寬度值后,可以通過建立回歸模型計算圍度值。觀察腰部數(shù)據(jù)分布規(guī)律,從表1 中可以看出,腰寬、腰厚和腰圍大致呈線性關系,進行線性相關性計算結(jié)果如圖4,線性相關性達到了0.9,可以建立二元一次線性回歸模型,方程如式(1)。
其中a0為截矩,an為回歸系數(shù),Yw為腰圍值,Ww為腰寬值,Tw為腰厚值。
按照test_size=0.2 的比例劃分訓練集和測試集,運用LinearRegression 模型進行多元線性回歸函數(shù)訓練和擬合,得到a0為0.011094417094,a1為1.70886346862,a2為1.55042564867。
表1 CAESAR 數(shù)據(jù)庫部分人體腰部數(shù)據(jù)
圖4 腰部數(shù)據(jù)線性相關性
同理觀察胸部數(shù)據(jù)分布規(guī)律,如表2 所示,進行線性相關性計算發(fā)現(xiàn)胸寬與胸厚的相關性沒有達到0.9以上,這是由于沒有采用性別區(qū)分,但二者與胸圍的相關性依舊在0.9 以上,如圖5 所示,可以建立二元一次線性回歸模型,方程如式(2)。
其中a0為截矩,an為回歸系數(shù),YC為胸圍值,WC為胸寬值,TC為胸厚值。
按照test_size=0.2 的比例劃分訓練集和測試集,運用LinearRegression 模型進行多元線性回歸函數(shù)訓練和 擬 合,得 到 a0為-0.0254382799935,a1為1.67964939782,a2為1.8704409841。
表2 CAESAR 數(shù)據(jù)庫部分人體胸部數(shù)據(jù)
圖5 胸部數(shù)據(jù)線性相關性
為進一步提高擬合精度,運用神經(jīng)網(wǎng)絡MLPRe?gressor 類多層感知器實現(xiàn)建立非線性回歸模型。使用反向傳播算法進行訓練,按照test_size=0.2 的比例劃分訓練集和測試集,運用StandardScaler 將數(shù)據(jù)集標準化,CAESAR 在模型數(shù)量方面屬于小數(shù)據(jù)集,所以設置solver=’lbfgs’。
對腰部數(shù)據(jù)的擬合設置兩層隱藏層,第一層設置5個神經(jīng)元,第二層設置2 個神經(jīng)元,訓練后得到三個系數(shù)矩陣,對應三層網(wǎng)絡,如式(3)-(5)所示。
對胸部數(shù)據(jù)的擬合設置兩層隱藏層,第一層設置7個神經(jīng)元,第二層設置4 個神經(jīng)元,訓練后得到三個系數(shù)矩陣,對應三層網(wǎng)絡,如式(6)-(8)所示。
將腰部數(shù)據(jù)測試集代入腰圍最佳擬合線性函數(shù)中得到預測數(shù)據(jù),運用數(shù)據(jù)可視化將預測集和測試集進行對比,隨機取其中100 個實驗結(jié)果,如圖6 所示,橫軸為人體模型,縱軸為腰圍值,綠色表示通過重心坐標系法測量得到的人體腰圍值,即測試集,紅色表示預測集。從圖中可以看出,與測量出的腰圍值相比,腰圍線性函數(shù)預測效果良好,點重合率很高,在正常體型上預測誤差較小,但是在過胖或者過瘦的體型上會出現(xiàn)誤差較大的情況。
圖6 腰圍線性回歸擬合結(jié)果對比圖
將胸部數(shù)據(jù)測試集代入胸圍最佳擬合線性函數(shù)中得到預測數(shù)據(jù),運用數(shù)據(jù)可視化將預測集和測試集進行對比,隨機取其中100 個實驗結(jié)果,如圖7 所示,橫軸為人體模型,縱軸為胸圍值,綠色表示通過重心坐標系法測量得到的人體胸圍值,即測試集,紅色表示預測集。從圖中可以看出,與測量出的胸圍值相比,胸圍線性函數(shù)預測效果良好。但與腰圍線性回歸擬合結(jié)果相比,點重合率稍低,同樣在正常體型上的誤差較小,但在胸圍較大或較小的體型上誤差略大,一是由于胸圍形狀相對于腰圍形狀更趨于不規(guī)則,二是由于未作性別區(qū)分。
圖7 胸圍線性回歸擬合結(jié)果對比圖
將胸部數(shù)據(jù)測試集代入腰圍神經(jīng)網(wǎng)絡回歸模型中得到預測數(shù)據(jù),運用數(shù)據(jù)可視化將預測集和測試集進行對比,同樣隨機取其中100 個實驗結(jié)果,如圖8 所示,橫軸為人體模型,縱軸為腰圍值,綠色表示通過重心坐標系法測量得到的人體胸圍值,即測試集,紅色表示預測集。從圖中可以看出,與測量出的腰圍值相比,腰圍線性函數(shù)預測效果良好,點重合率高,誤差較小,相對線性回歸函數(shù)的預測要更準確,并且在極端情況下,誤差要小很多。
圖8 腰圍神經(jīng)網(wǎng)絡擬合結(jié)果對比圖
將胸部數(shù)據(jù)測試集代入胸圍神經(jīng)網(wǎng)絡回歸模型中得到預測數(shù)據(jù)集,運用數(shù)據(jù)可視化將預測集和測試集進行對比,隨機取其中100 個實驗結(jié)果,如圖9 所示,橫軸為人體模型,縱軸為腰圍值,綠色表示通過重心坐標系法測量得到的人體胸圍值,即測試集,紅色表示預測集。從圖中可以看出,與測量出的腰圍值相比,胸圍線性函數(shù)預測效果良好,誤差較小,相對胸圍線性回歸函數(shù)的預測要更準確。與腰圍神經(jīng)網(wǎng)絡回歸擬合結(jié)果相比,點重合率稍低。
圖9 胸圍神經(jīng)網(wǎng)絡擬合結(jié)果對比圖
為直觀反應預測模型在實際人體上的準確度,我們依照量體裁衣的標準手動測量了6 個真實人體的腰部、胸部數(shù)據(jù)和身高。由于CAESAR 數(shù)據(jù)庫中的所有人體模型等高2 米,所以在將實際數(shù)據(jù)投入擬合函數(shù)之前需要擴展2 米/受試者身高的比例,計算獲得的預測結(jié)果后也要還原該比例。圖10 為真實人體的腰寬值和腰厚值代入腰圍最佳擬合線性函數(shù)后獲得的結(jié)果與該人體實際腰圍值對比圖,圖11 為真實人體的腰寬值和腰厚值代入腰圍神經(jīng)網(wǎng)絡回歸模型中獲得的結(jié)果與該人體實際腰圍對比圖,觀察可得人體趨于正常體型下,神經(jīng)網(wǎng)絡回歸模型的準確度更高,當體型較胖或較瘦時,線性回歸模型的誤差更小,其最大誤差不超過3cm。以服裝定制為參考依據(jù)的話,兩種回歸模型的預測誤差都在成衣放松量范圍內(nèi),正常體型下可以達到高定放松量范圍。
圖10 真實人體腰圍線性回歸擬合結(jié)果對比圖
圖11 真實人體腰圍神經(jīng)網(wǎng)絡擬合結(jié)果對比圖
圖12 為真實人體的胸寬值和胸厚值代入胸圍最佳擬合線性函數(shù)獲得的結(jié)果與該人體實際胸圍值對比圖,圖13 為真實人體的胸寬值和胸厚值代入胸圍神經(jīng)網(wǎng)絡回歸模型中獲得的結(jié)果與該人體實際胸圍對比圖,觀察可得兩種回歸模型預測的誤差都不超過3 厘米,兩種回歸模型的預測誤差都在服裝定制的成衣放松量范圍內(nèi)。腰圍的預測效果相對胸圍的預測效果更精確,除個體shan 外,其余每個個體胸圍值與預測值均存在大于1 厘米的誤差,可以看出胸圍回歸模型受性別影響較大。
圖12 真實人體胸圍線性回歸擬合結(jié)果對比圖
本文提出了一種對三維人體模型的軀干相關數(shù)據(jù)進行測量的方法,以及兩種根據(jù)寬度值和厚度值計算維度值的回歸模型。通過選定標準模板的腰部和胸部的測量點列,計算每個測量點的重心坐標,通過重心坐標系自動計算數(shù)據(jù)庫中其他模型的腰寬值、腰厚值、胸寬值、胸厚值、腰圍值和胸圍值。在得到大量數(shù)據(jù)后,分別通過線性回歸和神經(jīng)網(wǎng)絡訓練得到兩種回歸模型,將測試集投入模型中,并將其與重心坐標系法獲得的測量數(shù)據(jù)進行對比。之后測量真實人體的腰部和胸部數(shù)據(jù)并投入到回歸模型中,與真實人體的腰圍值和胸圍值對比。實驗表明,兩種回歸模型對比,線性回歸模型的總體誤差較小,但是在正常體型范圍內(nèi)神經(jīng)網(wǎng)絡模型的精確度更高。在未來的工作中,我們將對人體按照性別、體型等特性進行分類后再訓練,讓回歸模型更加準確。
圖13 真實人體胸圍神經(jīng)網(wǎng)絡擬合結(jié)果對比圖