(大連大學 遼寧省智能信息處理重點實驗室 遼寧 大連116622)
摘 要:提出一種適用于被動式光學人體運動捕捉散亂數據處理方法。該方法基于光學人體運動捕捉散亂數據的全局信息,提出基于模塊分段線性模型的數據處理算法。利用模塊分段線性模型歸納出不同模塊的變化特征,從而確定各模塊數據的匹配優先級及段內擬合函數,有效地對三維運動數據各模塊進行全局性分層次預測和跟蹤,并對噪聲數據進行基于模塊的去噪處理;對缺失運動數據提出基于分段Newton插值擬合算法,進行合理的補缺。該方法經優化后在處理過程中無須人工干預,并能滿足實時性要求。
關鍵詞:光學運動捕捉; 模塊去噪算法; 模塊分段線性模型; Newton插值算法
中圖分類號:TP391文獻標志碼:A
文章編號:1001-3695(2009)05-1938-03
New approach of capture data processing for optical motion
WU Sheng ZHANG Qiang XIAO Bo-xiang WEI Xiao-peng
(Liaoning Key Laboratory of Intelligent Information Processing Dalian University Dalian Liaoning 116622 China )
Abstract:This paper presented a scattered data processing method for passive optical human motion capture. This approach was based on the overall information of optical human motion capture scattered data. According to piecewise linear model of different modules determined the matching priority of each module data and fitting function of every section. Furthermore predicted and tracked 3D motion data overall point level. At the same time removed noise data. For missing data on the movement provided a fitting algorithm for the missing motion data. The computer simulations illustrate that the data processing is in real-time and need no manual works.
Key words:optical motion capture; modules denoise algorithm; piecewise linear model; Newton interpolation algorithm
伴隨著CG產業的飛速發展,運動捕捉技術日趨成熟,已經成為目前廣泛使用的能夠真實再現運動物體運動細節的技術。該技術正越來越多地應用于影視、動畫、游戲、體育訓練、醫療、機械制造、機器人控制中。人體運動捕捉從原理上可以分為機械式、聲學式、電磁式和光學式[1,2]。光學運動捕獲是較為精確的一種,在人體關鍵點(一般選取關節點)貼上一些特制的標志點(稱為marker),視覺系統將識別和處理這些標志。系統定標后,由幾組攝像機連續拍攝表演者的動作,并將圖像序列保存下來;然后再進行分析和處理,識別其中的標志點,并計算其在每一瞬間的空間位置,進而得到其運動軌跡。為了得到準確的運動軌跡,拍攝速率一般要達到60 fps以上。光學運動捕捉系統的關鍵技術有攝像機標定、標記點跟蹤和三維重建。利用光學式捕捉的原始運動數據有四個特點:a)采集到的信息僅有marker點的三維坐標信息,數據以散亂無序(沒有被標定)的形式存在;b)由于標記點被道具、四肢、軀干或者其他標記點遮擋,存在缺失點數據,缺失點時常會連續缺失;c)由于攝像延遲會出現噪聲點;d)運動員在做劇烈運動時,marker點相對于人體會出現位移,從而改變運動數據之間的拓撲結構。因此數據后續處理運算復雜度較高,如何剔除噪聲點,彌補缺失點對運動數據進行有序標定,并滿足實時性要求是光學運動散亂數據處理的核心內容。
近年來許多專家學者在這方面進行了研究。 Xiao等人[3]利用預定義人體物理特征,以能量最小化為主函數和物理約束來降低噪聲,使動畫由粗糙到精練。黃波士等人[4]提出利用先驗數據準確跟蹤標記點的算法。Silaghi等人[5]提出基于骨架結構匹配的處理方法,取得了良好效果。Schwartz等人[6]提出一種用marker點來推導各關節點的算法,使運動數據驅動出的動作更精確。黃海明等人[7]提出一種關節中心判定算法,利用marker點來求關節點。Liu等人[8]利用分段線性PCA技術對缺失點進行估測,把統計學理論引入運動數據處理中,得到了較好的結果。Müller等人[9]提出運動模板和運動分類技術用于動作捕捉數據的檢索也給出一些啟發。本文提出基于模塊的分段線性模型,有效解決了僅用傳統的剛體匹配方法和前后幀之間的局部聯系所造成的失配和誤差累積問題。本方法利用運動數據全局信息,在跟蹤匹配過程中自動調整誤差參數,在處理過程中無須手工干預自動完成,且單幀數據處理耗時滿足運動捕捉的實時性要求。
1 人體運動捕捉標記點的擺放原理與方法
運動捕捉的目的是準確捕捉演員的動作,能夠反映出具體的運動細節,并有利于后期的運動
數據處理。
1.1 標記點的擺放原理
為了能夠體現出動作的精確性,在布點時應該遵循以下三點原則:
a)標記點必須覆蓋所有需要捕捉的骨骼;b) 標記點需反映出骨骼的自由度;c) 標記點需盡可能與骨骼運動一致。
為了提高后期運動數據處理的效率,避免缺點現象和標記點的錯誤交換等,在布點時應該遵循以下三點原則:a)擺放在不易被遮擋的地方;b)標記點間距離大小不一;c)相關標記點間形成規則的幾何圖形。
1.2 標記點的擺放方法
基于以上原理,本文的標記點擺放方法描述如下:將人體模型分為16剛體,即頭部、上軀干、下軀干、骨盆、左上臂、左前臂、左手、左大腿、左小腿、左腳、右上臂、右前臂、右手、右大腿、右小腿、右腳 由32個標記點描繪,基本上表達了人體的運動變化。其marker點標記方式如圖1所示。本文所述方法針對被動式光學運動捕捉系統,數據采集設備為大連東銳軟件有限公司自主研發的DVMC-8820運動捕捉系統,數據采集現場環繞布置32臺攝像機,采集頻率為60 fps。表演者為專業舞蹈演員,演員身體關鍵部位和關節處放置marker點,在攝像機可見范圍內表演一系列具有代表性的動作。
2 數據處理
由于光學運動捕獲系統采集的數據是以散亂的形式存在,除三維數據的坐標值外不包含任何其他信息,而此類系統的故有缺陷使其捕捉的運動數據還會出現大量噪聲點和缺失點。要想精確地完成運動數據的有序標定,必須有效充分地挖掘運動數據間的關聯信息。運動數據的拓撲結構和前后幀間的局部聯系都給運動數據的預測和跟蹤帶來重要信息,但僅僅運用這些局部信息可能導致運動數據的失配和誤差累積,從而跟蹤失敗,有時需要手工進行參數調整。探索運動數據的全局規律,引用歸納總結方法學,動態地對運動數據進行描述,將更有利于提高運動數據跟蹤的精度。為此本文提出基于模塊分段線性模型的人體運動數據處理算法,在整個運動數據跟蹤的過程中,該算法會根據運動變化趨勢和運動幅度,自動調整各匹配參數,避免了誤差累積現象并有效地解決了失配問題。
2.1 人體生理結構分塊模型
圖1為根據標記點的擺放和人體骨架的連接。本文按照在拓撲結構上相近和在生理結構上相關的原則,把一些聯系比較緊密的骨骼進行組合。例如在腰部前后排放四個標記點組成近等腰梯形;在頭部上方排放四個標記點組成近正方形;在手腕和手指部排放四個標記點組成四邊形;肩部兩邊的標記點和頸部下方前后的兩個標記點組成近平行四邊形;胸部前后的兩標記點和頸部下方前后的兩個標記點組成近正方形;膝部和同側腰部的兩個標記點組成三角形,腳踝和腳趾部組成四面體結構。圖2為根據人體生理結構把人體骨架拆分為七大模塊。2.2 模塊去噪算法
由于表演場地的光照變化和定標相機的延遲,會產生噪聲點。噪聲點的存在影響marker點的跟蹤效率和精度。如何合理精確地剔除噪聲點,成為光學運動捕捉數據處理的首要任務。剔除噪聲點需要解決兩個問題:a)在一個產生噪聲點的marker點的小鄰域內有幾個點時,如何選擇其中之一作為精確的marker點?b)由于運動數據中存在marker點交叉現象,在一個產生噪聲點的marker點的小鄰域內有可能存在其他marker點,如何避免剔除其他marker點?基于此提出模塊去噪思想:根據上面提到的分塊模型,從幾何學上考慮這些模塊在運動過程中應該保持一致的幾何結構,當一個點存在噪聲點時,如果采用噪聲點代替作為需標定的marker點定會破壞該模塊的幾何結構,所以當存在噪聲點時,通過選擇能夠與模板更加匹配的那個點為待標定的marker點,其他點刪除。以腰部模塊為例,如圖3所示。避免問題b)的方法是:從標記點的擺放和人體運動特點來看,交叉的方式一般為手部模塊與其他模塊的交叉,其他模塊相互交叉的現象很少,即在刪除其他幻點時看該模塊是否與手部模塊相交,如相交則判斷那些幻點是否是手部模塊的組成部分;如不是就刪除(圖4)。算法結束。
需要補充的是,上面的模塊去噪算法是在各模塊得以匹配的情況下進行,可以在運動數據跟蹤算法前進行。當出現模塊中缺點而模塊上的其他點有噪聲點時,在運動數據預測與跟蹤過程中的補點算法完成后再進行上面的模塊去噪算法,達到去噪目的。經過模塊去噪算法處理后,剩余數據點一般每幀保持在32個數據點左右,表明大多數噪聲點被剔除。
2.3 模塊分段線性模型
整體上觀察人體運動特征,能夠得到一些有利于運動數據處理的規律。描述如下:
a)人體運動系統由骨、骨連接和骨骼肌通過運動關節組成,運動中各骨骼的長度和形狀是不變的,身體各部分通過關節聯系在一起,在神經系統的調節和其他系統的配合下相互驅動形成運動。各關節點有自己的自由度數并且在運動中子節點受動于父節點,也就是人體運動學原理。利用這一約束原理有助于進行模塊匹配和處理算法后期的結構校驗。
b)在運動過程中,各模塊的動作幅度、變化速度不盡相同,有些模塊變化不大,有些模塊變化幅度大,在整個過程中呈現一定的規律。例如拳擊運動、招手運動等,手部和臂部變化比較大,且在局部時間內變化向量速度均衡,而其他模塊變化不大,同樣的有踢腿運動、上樓梯運動和體操等一些復雜的運動。對于這些,分模塊歸納統計出不同模塊在不同階段的變化趨勢,對于數據跟蹤就有十分重大的意義。
以手部模塊為例來介紹模塊分段線性模型流程圖(圖5)及詳細步驟:
a)手部模塊為基本固定的四邊形,可以依據其邊長和對角線長在運動過程中不變為約束條件進行形狀匹配,把每一幀中這樣的模塊都找到,如沒有則不計,說明是缺點所致。對其四點坐標求平均值,用一個二維數組來記錄,橫軸表示幀t,縱軸分別表示當前幀相對于前一幀在x、y、z方向上的偏移量。
b)以連續的5幀為一個時間段(可根據需求調節,實驗結果5幀比較好,在這個段內運動變化不大),首先檢查此5幀數據中是否有明顯偏離較大的幀,如有則認為是在匹配中的誤配現象,去除之;然后求出剩余幀的平均變化位移,依次求得并保存于數組a中,橫軸表示第幾段的編號,縱軸表示變化速度、首幀與末幀的向量和相對于上一時間段的方向改變角度。
c)從首段開始,依次比較相鄰段的記錄,如相似則合并,反之設標志位表示一趨勢段。相似的條件為:變化速度相差小于一定值;運動方向平滑(在實際中可認為夾角小于90°)。
d)如兩段能合并,修改數組a,當前項的橫軸不變,縱軸變化的速度改為兩段的平均值,首幀不變,末幀改為后一段的末幀值。由于當前兩項合二為一,數組后部依次前移,直到查詢到數組末尾,結束合并查詢。
e)對每一模塊進行以上四步處理,最終統計結果可用一張二維表來描述,以便用于運動數據的預測和跟蹤。
本文以一組表演運動數據為例,圖6給出對該組表演動作進行模塊分段線性算法后得到的手部(a)和腰部(b)模塊變化特征結果圖,粗線框和細線框相間表示相鄰段不相容的歸類情況。從圖6觀察,分段統計結果基本上能反映出運動數據的空間位置及向量變化規律,從而可根據各段信息為約束條件進行運動數據預測跟蹤。
2.4 基于模塊分段線性模型的運動數據預測與跟蹤算法
在進行剛性匹配或進行基于人體運動學原理的標記點跟蹤時,會出現以下問題:由于沒有其他約束條件,在進行匹配時為了取得匹配成功會加大誤差系數,而且誤差系數一旦設定對于自動匹配的程序來說將不再改變,從而導致可能有多個匹配結果;由于遮擋等原因,會出現缺點現象,如何合理地補點成為問題。基于模塊特征統計算法,會在提高精度和利用已匹配的統計結果分段擬合出曲線方程,利用曲線方程進行缺點插值將很合理。模塊分段歸納統計算法另一個優勢在于,歸納結果按照分模塊進行,在進行運動數據預測與跟蹤時可以根據模塊在時間軸上的變化幅度設定匹配優先度,幅度小者先匹配。當然每幀匹配后要進行結構校驗。以下給出本算法的流程圖(圖7)及詳細步驟。
a)調用模塊去噪算法,進行運動數據跟蹤前的降噪處理。
b)依據各模塊的分段統計信息,按各模塊的變化幅度由低到高進行排序。對于每一幀數據,從變化幅度低的模塊開始進行模塊匹配(匹配方法是利用幾何特征,如連線邊長、對角線長度等特征進行組合匹配)。如匹配成功,對運動數據進行標記,并從原始數據中把已標記的運動數據刪除;如匹配失敗,轉到步驟c)。
c)如沒有匹配成功,說明是缺點所致。本文利用當前特征數組段的信息記錄數據進行Newton插值,算出缺點坐標。Newton插值公式的表述:設f(x)在互異的節點x0,x1,…,xn上的函數值為f0,f1,…,fn,且x0,x1,…,xn都在區間[a,b]內,則對于區間[a,b]內的一點x對應的Newton插值函數為
f(x)=f(x0)+∑nk=1f[x0,x1,…,xk]k-1j=0(x-xj)
插值函數所得到的結果是模塊的中心坐標,記為A,事實上要的是模塊上各標記點的三維坐標。從中心坐標還原成各標記點坐標的方法是:把上一幀得到匹配的該模塊的中心坐標平移到A,平移矩陣為B,那么上一幀該模塊上的各標記點通過矩陣B的平移作用后得到的點坐標即為所求當前模塊各標記點的三維坐標。
如果在本數組段的信息記錄數據過少(很可能是連續缺點所致),利用Newton插值函數求出的預測點誤差較大,將輔助一些其他的約束條件(模塊拆分匹配、動力學約束等)進行預測跟蹤。
d)當每個模塊都得以預測和跟蹤后,進行結構校驗。結構校驗是對匹配或追蹤的結果進行檢驗,分全局和局部兩個方面的檢驗。全局方面,根據2.2節所述的特征點標定方式,模板對應結構和關節進行距離檢測,滿足距離誤差范圍的認為跟蹤正確;否則認為跟蹤錯誤。局部方面,進行身體左右側檢驗,如雙手和雙腳的匹配矯正。
3 系統實現及示例
為驗證以上所提方法的可行性,自主開發了被動式光學運動捕捉數據處理系統,系統基于VC++開發平臺和OpenGL圖形庫,系統界面如圖8所示。圖9為利用本文所提算法并經過優化后對一組光學捕捉散亂運動進行數據處理的界面,分別顯示散亂數據和對應的處理結果。
運用本文所提方法,該系統對不同復雜度的捕捉數據進行處理,處理結果顯示準確處理率根據動作復雜度不同分布在70%~100%,如表1所示。對于一般交叉較少運動幅度變化不是很大的常規數據匹配成功率能達到90%以上;對于運動數據缺點比較多而且運動幅度很大的運動,成功定標率在80%左右。本算法抗噪能力強,且不存在跟丟現象。系統開發及運行測試平臺為兼容PC機,處理器為P4 3.0GHz,內存512 MB,Windows XP操作系統。