林逸非, 范麗婷, 張 陽(yáng)
(沈陽(yáng)建筑大學(xué) 機(jī)械工程學(xué)院, 遼寧 沈陽(yáng) 110168)
無(wú)標(biāo)記點(diǎn)的人體姿態(tài)估計(jì)是計(jì)算機(jī)視覺(jué)中非常有價(jià)值的研究課題。人體姿態(tài)估計(jì)可以應(yīng)用在醫(yī)療康復(fù)、人機(jī)交互、手勢(shì)識(shí)別、電影特效制作以及攝像頭監(jiān)控中,而且在這些領(lǐng)域中起到不小的作用。 三維姿態(tài)估計(jì)在近幾年發(fā)展的更是非常迅速, 通過(guò)檢測(cè)人體在三維空間內(nèi)各關(guān)鍵點(diǎn)的運(yùn)動(dòng)軌跡,得到各關(guān)鍵點(diǎn)之間的相對(duì)位移,可推算出人體的三維姿態(tài)。然而,人體三維姿態(tài)重建的精準(zhǔn)度仍然是計(jì)算機(jī)視覺(jué)中一個(gè)具有挑戰(zhàn)性的問(wèn)題。
人體的運(yùn)動(dòng)可以通過(guò)一些主要關(guān)節(jié)點(diǎn)的移動(dòng)來(lái)描述,因此,只要關(guān)鍵點(diǎn)的分類(lèi)與跟蹤就可以形成對(duì)走路、跑步、跳躍等人的動(dòng)作的描述,通過(guò)人體關(guān)鍵點(diǎn)的坐標(biāo)變化來(lái)識(shí)別行為。 早期的人體姿態(tài)估計(jì)通常使用穿戴式設(shè)備,通過(guò)在人體關(guān)節(jié)上布置的多個(gè)紅外反光點(diǎn),獲得人體關(guān)鍵點(diǎn)坐標(biāo),由于穿戴式設(shè)備會(huì)對(duì)人體造成負(fù)載,影響人體關(guān)節(jié)運(yùn)動(dòng)幅度,干擾人正常運(yùn)動(dòng),使得實(shí)驗(yàn)結(jié)果不能估計(jì)實(shí)際人體姿態(tài)。
人體姿態(tài)估計(jì)也可以通過(guò)多目視覺(jué)實(shí)現(xiàn), 多視角姿態(tài)估計(jì)適用于室內(nèi)環(huán)境的固定機(jī)位,在戶(hù)外使用受限制。許多研究使用深度相機(jī)采集視頻[1],通過(guò)圖像分割得到深度圖。盡管深度相機(jī)的價(jià)格逐漸降低,但仍比普通的RGB相機(jī)要高出不少, 而且深度相機(jī)受使用環(huán)境及光照條件的限制, 在戶(hù)外使用會(huì)影響準(zhǔn)確性。 與上述這些方法相比,采用傳統(tǒng)的單目RGB 相機(jī)[2]在成本上和使用的環(huán)境條件上都更適合在戶(hù)外檢測(cè)人體運(yùn)動(dòng)姿態(tài)。
本文主要針對(duì)單目RGB 相機(jī),對(duì)人體矢狀面采集二維圖像, 并根據(jù)跑步姿態(tài)過(guò)程與站立姿態(tài)中關(guān)節(jié)之間的向量投影之比,判斷相對(duì)的三維坐標(biāo),并對(duì)其進(jìn)行人體運(yùn)動(dòng)分析。
人體姿態(tài)運(yùn)動(dòng)分析系統(tǒng)是由視頻采集系統(tǒng), 姿態(tài)估計(jì)系統(tǒng)和運(yùn)動(dòng)分析系統(tǒng)[3]組成見(jiàn)圖1,其中人體姿態(tài)三維建模是基于檢測(cè)到的人體姿態(tài)關(guān)鍵點(diǎn)對(duì)各個(gè)人體骨骼部分一一對(duì)應(yīng)。
圖1 人體姿態(tài)運(yùn)動(dòng)分析系統(tǒng)組成
在人體運(yùn)動(dòng)姿態(tài)采集和運(yùn)動(dòng)分析中, 需要采集人體關(guān)鍵點(diǎn)的三維坐標(biāo),常規(guī)使用的方法是使用深度相機(jī)獲取圖像深度或采用多目相機(jī)從多視角實(shí)現(xiàn)姿態(tài)估計(jì)以及穿戴式設(shè)備。 但深度相機(jī)與多目相機(jī)在室外環(huán)境下對(duì)人體關(guān)鍵點(diǎn)采集的有效率偏低,而穿戴式設(shè)備會(huì)對(duì)人體造成負(fù)載描述人體運(yùn)動(dòng)的準(zhǔn)確性偏低。
在室外環(huán)境下, 單目RGB 相機(jī)具有不受光照限制和可以在運(yùn)動(dòng)過(guò)程中動(dòng)態(tài)采集的優(yōu)點(diǎn)。 因此基于單目RGB 相機(jī)提出了一種通過(guò)人體矢狀面二維圖像獲得運(yùn)動(dòng)過(guò)程中人體三維坐標(biāo)的方法,對(duì)于人體運(yùn)動(dòng)姿態(tài)分析具有重要意義。
在人體運(yùn)動(dòng)過(guò)程中, 對(duì)人體姿態(tài)的動(dòng)態(tài)捕捉是通過(guò)對(duì)人體姿態(tài)關(guān)鍵點(diǎn)的采集來(lái)實(shí)現(xiàn)的。 對(duì)人體關(guān)鍵點(diǎn)的分類(lèi)與跟蹤可以獲取各關(guān)鍵點(diǎn)的動(dòng)態(tài)坐標(biāo),可以對(duì)走路,跑步,跳躍等多種運(yùn)動(dòng)姿態(tài)的實(shí)時(shí)動(dòng)態(tài)描述[4]。
人體關(guān)鍵點(diǎn)坐標(biāo)的獲取是人體姿態(tài)估計(jì)的重點(diǎn),由單目RGB 相機(jī)采集到的二維圖像, 基于Coco 中的人體模型數(shù)據(jù)庫(kù)[5],將25 個(gè)人體關(guān)鍵點(diǎn)分類(lèi)并編號(hào)見(jiàn)圖2,定義為A
圖2 人體關(guān)鍵點(diǎn)分布圖
式中:N—關(guān)鍵點(diǎn)分類(lèi)編號(hào);XN—關(guān)鍵點(diǎn)橫坐標(biāo);YN—關(guān)鍵點(diǎn)縱坐標(biāo);ρ—關(guān)鍵點(diǎn)檢測(cè)置信度系數(shù),ρ∈(0,1)。
關(guān)鍵點(diǎn)檢測(cè)置信度系數(shù)ρ 可以作為一個(gè)預(yù)先設(shè)定的閾值,當(dāng)置信度系數(shù)小于設(shè)定的閾值時(shí),可以將檢測(cè)到的關(guān)鍵點(diǎn)作為檢測(cè)失敗的關(guān)鍵點(diǎn),再根據(jù)檢測(cè)失敗的類(lèi)型對(duì)數(shù)據(jù)集進(jìn)行相對(duì)應(yīng)的處理。
通過(guò)特征匹配生成人體關(guān)鍵點(diǎn)熱圖以及關(guān)鍵點(diǎn)矢量圖。每一個(gè)關(guān)鍵點(diǎn)對(duì)應(yīng)一組關(guān)鍵點(diǎn)熱圖及關(guān)鍵點(diǎn)矢量圖,關(guān)鍵點(diǎn)熱圖會(huì)在其相應(yīng)的坐標(biāo)位置生成一個(gè)基于二維高斯分布的概率區(qū), 根據(jù)概率值最大的位置確定關(guān)鍵點(diǎn)坐標(biāo), 以此類(lèi)推可以獲得二維圖像坐標(biāo)系下的全部關(guān)鍵點(diǎn)坐標(biāo)數(shù)據(jù)集,每一組數(shù)據(jù)集由每一幀圖像中25 個(gè)人體關(guān)鍵點(diǎn)的橫坐標(biāo)與縱坐標(biāo)組成。 關(guān)鍵點(diǎn)矢量圖設(shè)立在兩個(gè)關(guān)鍵點(diǎn)之間, 由X,Y 兩個(gè)方向的矢量概率判斷最大值,生成關(guān)鍵點(diǎn)矢量圖。 根據(jù)將同一幀內(nèi)的關(guān)鍵點(diǎn)按照關(guān)鍵點(diǎn)矢量圖和人體骨骼的先驗(yàn)知識(shí)連接起來(lái), 實(shí)現(xiàn)人體骨架化。
這種基于關(guān)鍵點(diǎn)的人體姿態(tài)檢測(cè)算法相比于其他算法的優(yōu)勢(shì)是:①精度高;②抗背景干擾能力強(qiáng)。
人體運(yùn)動(dòng)分析是根據(jù)人體關(guān)鍵點(diǎn)坐標(biāo)數(shù)據(jù)集實(shí)現(xiàn)的,然而為了實(shí)現(xiàn)分析結(jié)果的準(zhǔn)確性和穩(wěn)定性,需要對(duì)運(yùn)動(dòng)分析構(gòu)建條件,如下:
(1)保證受測(cè)人體位置穩(wěn)定,便于后期運(yùn)動(dòng)姿態(tài)分析。
(2)從25 個(gè)人體關(guān)鍵點(diǎn)中選取其中一個(gè)作為一個(gè)坐標(biāo)原點(diǎn), 使其他關(guān)鍵點(diǎn)與人體肢體部分相對(duì)于坐標(biāo)原點(diǎn)的位移與角度變化更加直觀和清晰。
(3)基于新建坐標(biāo)原點(diǎn)建立一個(gè)新坐標(biāo)系,相對(duì)于原圖像平面坐標(biāo)系進(jìn)行二維坐標(biāo)變換。
(4)根據(jù)坐標(biāo)采集異常的不同原因?qū)θ梭w坐標(biāo)數(shù)據(jù)集進(jìn)行相應(yīng)的處理。
(5)采集矢狀面下各骨骼之間的比例關(guān)系以及新建坐標(biāo)系下各骨骼與坐標(biāo)軸之間的夾角。
(6)利用已采集的矢狀面二維關(guān)鍵點(diǎn)坐標(biāo)根據(jù)逆解算為人體三維關(guān)鍵點(diǎn)坐標(biāo),根據(jù)三維坐標(biāo)建立人體模型。
在運(yùn)動(dòng)過(guò)程中,由于受身體不同部分的遮擋,一部分人體關(guān)鍵點(diǎn)的檢測(cè)會(huì)失效, 此時(shí)根據(jù)異常關(guān)鍵點(diǎn)的分類(lèi)做相應(yīng)的調(diào)整見(jiàn)表1。
表1 異常關(guān)鍵點(diǎn)的分類(lèi)與解決方法
人體骨骼是一種剛性結(jié)構(gòu),也是一種樹(shù)結(jié)構(gòu),由一系列具有層次關(guān)系的關(guān)節(jié)和骨骼組成, 可以選取其中一個(gè)關(guān)節(jié)作為根關(guān)節(jié),而其它關(guān)節(jié)是根關(guān)節(jié)的分支。父關(guān)節(jié)運(yùn)動(dòng)能影響子關(guān)節(jié)運(yùn)動(dòng), 但子關(guān)節(jié)運(yùn)動(dòng)對(duì)父關(guān)節(jié)不產(chǎn)生影響。因此平移或旋轉(zhuǎn)父關(guān)節(jié)時(shí),也會(huì)同時(shí)平移或旋轉(zhuǎn)其所有子關(guān)節(jié)。 關(guān)節(jié)作為用來(lái)連接父骨骼與子骨骼之間的聯(lián)系方式,因此骨骼的長(zhǎng)度可以看作兩個(gè)關(guān)節(jié)的距離,也可以被視為以?xún)蓚€(gè)關(guān)節(jié)所在坐標(biāo)系的偏移量。 通過(guò)使關(guān)節(jié)平移和旋轉(zhuǎn),就能為人體骨架擺出各種姿勢(shì),當(dāng)子骨骼在三維坐標(biāo)系中運(yùn)動(dòng)時(shí)在二維平面確定一個(gè)人體關(guān)鍵點(diǎn)即根關(guān)節(jié)作為坐標(biāo)原點(diǎn), 人體的姿態(tài)可以視為關(guān)節(jié)相對(duì)于相鄰關(guān)節(jié)所在坐標(biāo)系的位移與旋轉(zhuǎn)[6]。
通過(guò)判斷每一幀圖像中兩個(gè)相鄰關(guān)節(jié)的偏移量,可以確定在世界坐標(biāo)系下的兩個(gè)關(guān)節(jié)三維坐標(biāo)的時(shí)序變化。
骨骼的位移變化見(jiàn)圖3(a),關(guān)節(jié)的內(nèi)收或外展會(huì)造成當(dāng)前位置的子骨骼在先前位置上的投影[7],根據(jù)兩位置之間的夾角即為旋轉(zhuǎn)角見(jiàn)圖3(b)。
圖3 骨骼運(yùn)動(dòng)位姿演示
根據(jù)骨骼運(yùn)動(dòng)前后的矢量,可求得關(guān)節(jié)旋轉(zhuǎn)角θ:
每一組子關(guān)節(jié)和父關(guān)節(jié)的相對(duì)位置可以用來(lái)確定人體局部姿態(tài),根關(guān)節(jié)的父節(jié)點(diǎn)可以認(rèn)為是世界坐標(biāo)系原點(diǎn)。每個(gè)關(guān)節(jié)設(shè)立一個(gè)單獨(dú)的坐標(biāo)空間,在數(shù)學(xué)上,關(guān)節(jié)姿態(tài)就是一個(gè)仿射變換,用Pi表示關(guān)節(jié)i 代表的仿射變換是一個(gè)4×4 的矩陣,它由平移向量Ti,旋轉(zhuǎn)矩陣Ri以及對(duì)角縮放矩陣Si組成
Pi的作用就是在以關(guān)節(jié)i 為原點(diǎn)的三維坐標(biāo)系中,將其他關(guān)鍵點(diǎn)變換到關(guān)節(jié)i 的父關(guān)節(jié)為原點(diǎn)的三維坐標(biāo)系中顯示當(dāng)前三維坐標(biāo), 可以用Pij表示j 點(diǎn)在關(guān)節(jié)i 坐標(biāo)系的坐標(biāo)。
根據(jù)空間向量法[8]原坐標(biāo)系向量在坐標(biāo)變換后的新坐標(biāo)系內(nèi)的方向向量中的投影作為新坐標(biāo)系中向量的坐標(biāo)。 當(dāng)關(guān)鍵點(diǎn)i 坐標(biāo)為(xi,yi,zi)則新坐標(biāo)系下關(guān)鍵點(diǎn)i 坐標(biāo)為(xi′,yi′,zi′)。
由此可計(jì)算出關(guān)鍵點(diǎn)i 從原坐標(biāo)系到新坐標(biāo)系的轉(zhuǎn)換矩陣。
若是需要把新坐標(biāo)系中的關(guān)鍵點(diǎn)坐標(biāo)轉(zhuǎn)換到原坐標(biāo)系下,在此基礎(chǔ)上左乘此轉(zhuǎn)換矩陣的逆矩陣就可以實(shí)現(xiàn),即:
相比較于表示關(guān)節(jié)之間關(guān)系的局部姿態(tài),整體姿態(tài)是可以能說(shuō)明關(guān)節(jié)在根坐標(biāo)系中的位置,肢體末端的關(guān)鍵點(diǎn)可以通過(guò)局部姿態(tài)的坐標(biāo)變換方法逆推追溯到根關(guān)節(jié),進(jìn)而確定此關(guān)鍵點(diǎn)在根關(guān)鍵點(diǎn)坐標(biāo)系中的三維坐標(biāo)[9]。 我們將在關(guān)鍵點(diǎn)i 坐標(biāo)系的j 關(guān)鍵點(diǎn)變換到根坐標(biāo)系中, 當(dāng)關(guān)鍵點(diǎn)j 編號(hào)為7,則關(guān)鍵點(diǎn)i 編號(hào)為6,我們用P7表示它的局部姿態(tài)矩陣,按此方法,那么j 在根坐標(biāo)系中的坐標(biāo)可以表示為
那么P0P1P5P6P7就是關(guān)鍵點(diǎn)j 在整體姿態(tài)中的變換矩陣,也是將關(guān)鍵點(diǎn)i 坐標(biāo)系中任意一點(diǎn)變換到根坐標(biāo)系的整體姿態(tài)矩陣。 以此類(lèi)推,可以根據(jù)關(guān)鍵點(diǎn)在該坐標(biāo)系中的位置, 換算得到骨骼經(jīng)過(guò)運(yùn)動(dòng)之后其在世界坐標(biāo)系下的新位置。
在Blender 中建立人體姿態(tài)仿真模型[10],結(jié)合由單目RGB 相機(jī)采集到的人體關(guān)鍵點(diǎn)坐標(biāo)為二維坐標(biāo), 經(jīng)過(guò)坐標(biāo)變換如圖4(a),獲得基于固定坐標(biāo)系的三維坐標(biāo)。 在實(shí)驗(yàn)前要先使實(shí)驗(yàn)對(duì)象處于身體直立, 雙臂微微抬起并放在身體兩側(cè)的狀態(tài), 可以觀察矢狀面圖像與冠狀面圖像如圖4(b)、(c),通過(guò)預(yù)先采集實(shí)驗(yàn)對(duì)象固定姿態(tài)的關(guān)鍵點(diǎn)坐標(biāo)數(shù)據(jù)獲得各關(guān)鍵點(diǎn)之間的向量,即為各骨骼長(zhǎng)度。根據(jù)人體運(yùn)動(dòng)生物力學(xué)的知識(shí)設(shè)定人體模型各關(guān)節(jié)自由度,從而建立人體運(yùn)動(dòng)剛體結(jié)構(gòu)模型。
圖4 人體姿態(tài)仿真模型
為了實(shí)現(xiàn)對(duì)運(yùn)動(dòng)姿態(tài)的精確分析, 人體模型中的骨盆關(guān)節(jié)作為坐標(biāo)原點(diǎn),保持位姿不變,根據(jù)時(shí)間序列的每一幀圖像中關(guān)鍵點(diǎn)位置的變化, 把關(guān)鍵點(diǎn)數(shù)據(jù)輸入至預(yù)先設(shè)定好的人體模型中, 將人體骨架三維坐標(biāo)與人體模型在時(shí)間序列上匹配, 實(shí)現(xiàn)其他骨骼相對(duì)于髖關(guān)節(jié)的運(yùn)動(dòng)便于對(duì)運(yùn)動(dòng)姿態(tài)的分析與觀測(cè)。
本文將使用基于空間向量法對(duì)人體矢狀面圖像的運(yùn)動(dòng)姿態(tài)分析的仿真平臺(tái)驗(yàn)證。 傳統(tǒng)意義是通過(guò)一個(gè)關(guān)節(jié)的相鄰關(guān)節(jié)的相對(duì)坐標(biāo)對(duì)關(guān)節(jié)角度做出描述的, 通常是以近軀干側(cè)關(guān)節(jié)作為參考坐標(biāo)系, 以遠(yuǎn)軀干側(cè)關(guān)節(jié)建立局部坐標(biāo)系。 根據(jù)空間向量法求得關(guān)節(jié)角:
對(duì)局部坐標(biāo)系與參考坐標(biāo)系的關(guān)系做出位移和角度變化的對(duì)比就能對(duì)關(guān)節(jié)運(yùn)動(dòng)做出描述, 選取多個(gè)獨(dú)立變化的角度就能根據(jù)此來(lái)描述關(guān)節(jié)轉(zhuǎn)動(dòng)問(wèn)題。
實(shí)驗(yàn)人員采用了在跑步機(jī)上慢跑的姿態(tài), 速度選擇了8km/h,攝像機(jī)垂直于跑者矢狀面放置,選取了在檢測(cè)到矢狀面圖像的姿態(tài)后,選取了人體下肢的髖、膝、踝三關(guān)節(jié)的三維關(guān)節(jié)坐標(biāo)如圖5(a)(b)(c),檢測(cè)三個(gè)關(guān)節(jié)的關(guān)節(jié)角,并對(duì)其運(yùn)動(dòng)分析。
圖5 髖膝踝三關(guān)節(jié)姿態(tài)坐標(biāo)變化
從髖、膝、踝三關(guān)節(jié)的坐標(biāo)變化趨勢(shì)來(lái)看,隨著跑步過(guò)程的進(jìn)行, 跑者的髖和膝關(guān)節(jié)在z 軸方向的坐標(biāo)近似不變,而踝關(guān)節(jié)坐標(biāo)隨著時(shí)間變化,會(huì)發(fā)生在z 軸方向上的突變,說(shuō)明跑者存在關(guān)節(jié)內(nèi)翻的跑步姿態(tài)不當(dāng)。
在本文中,由RGB 二維圖像中人體關(guān)鍵點(diǎn)二維坐標(biāo)通過(guò)數(shù)學(xué)方法逆解算出三維坐標(biāo), 根據(jù)三維坐標(biāo)建立人體模型實(shí)現(xiàn)人體模型與三維坐標(biāo)在時(shí)間序列上完成同步, 從關(guān)節(jié)角度和部分關(guān)鍵點(diǎn)坐標(biāo)完成對(duì)人體的運(yùn)動(dòng)分析。由于復(fù)雜環(huán)境的限制,沒(méi)有選擇使用深度攝像頭或者多目攝像頭,在實(shí)驗(yàn)驗(yàn)證中發(fā)現(xiàn)單目RGB 攝像機(jī)也可以達(dá)到近似的效果。