張眾維,趙 潔,劉洪飛
(1.天津城建大學 計算機與信息工程學院,天津 300384;2.天津城建大學 理學院,天津 300384)
我國有超兩千萬的聽力殘疾人口[1],手語學習需求廣泛,規(guī)范性立法也已在討論中[2],但目前手語教學仍難以普及,原因之一是由于需求不集中造成的教師現(xiàn)場授課成本較高。因此采用虛擬現(xiàn)實技術,利用虛擬角色進行手語教學就成為一種高性價比的教育手段。
靜態(tài)手勢作為基本信息表達單元,按一定序列和節(jié)奏進行編排,可以產生更復雜的動態(tài)手勢。為了產生虛擬手勢,需要特定手部姿態(tài)的三維數(shù)據(jù)信息。傳統(tǒng)的數(shù)據(jù)獲取方法常用數(shù)據(jù)手套[3]、位置跟蹤設備[4]、體感設備[5]等外設,操作復雜且成本較高,后期不易進行姿態(tài)調整與更新;采用組合攝像頭及數(shù)據(jù)拼接技術[6],準確度較低且實時性較差;利用計算機進行純虛擬骨架結構設計,多需依托諸如Pose Studio、Maya等3D動畫設計軟件[7],操作復雜且靈活性不足。
為更加準確便利的實現(xiàn)虛擬手勢的生成,本文首先完善了仿生關節(jié)鏈球坐標系[8](以下簡稱鏈球坐標系)與笛卡兒坐標系的變換方法,并提出了利于角度參數(shù)快速確定的直觀模擬法。隨后建立了虛擬手骨架結構,并在此基礎上針對運動節(jié)點的特征設計不同的鏈球坐標系,通過雙參數(shù)調節(jié)獲得靜態(tài)手勢。最終根據(jù)高維形象幾何仿生信息學[9]理論和同源連續(xù)性[10]原理,對高維空間點進行采樣,得到動態(tài)手勢關鍵序列幀,實現(xiàn)快速高效準確的虛擬手勢生成。
仿生關節(jié)鏈球坐標系是為描述定長節(jié)棍繞節(jié)點(為避免與日常理解的關節(jié)一詞混淆,本文稱仿生關節(jié)鏈球坐標系中的關節(jié)為節(jié)點)旋轉的姿態(tài)問題而建立的。如圖1所示,要求存在3根不在同一直線上且首尾依次相連的節(jié)棍C1、C2和C3,由首至尾的節(jié)點依次為T1、T2、T3和T4。在已明確T1、T2和T3在世界笛卡兒坐標系下的坐標值(以下簡稱笛卡兒坐標值)的前提下,若活動節(jié)點T4的鏈球坐標值已知,則可按式(1)求解其笛卡兒坐標值。
圖1 仿生關節(jié)鏈球坐標系
(1)
其中具體參數(shù)的計算方法詳見文獻[8]。但對于已知笛卡兒坐標值求解鏈球坐標值的方法,文獻[8]中要求首先建立如圖1所示的坐標系,而實際應用中通常只知道笛卡兒坐標值,因此為進一步提高計算效率,減少建立鏈球坐標系的時間消耗,改進根據(jù)笛卡兒坐標值計算鏈球坐標值的方法如下。
已知節(jié)點T1、T2、T3和T4的笛卡兒坐標值分別為(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)和(x4,y4,z4)。令xc=x4-x3,yc=y4-y3,zc=z4-z3,可得式(2)
(2)
式中:(r,φ,θ)為節(jié)點T4在基于T1、T2和T3所建立的鏈球坐標系下的坐標值。
在鏈球坐標系的建立和使用過程中,存在如下兩個問題:一是在多節(jié)點結構的前提下,父節(jié)棍選擇的多樣化會影響坐標系建立后計算的有效性,對此應當盡量挑選不在同一平面內的節(jié)棍組合;二是在坐標系確定后,需要通過對兩個角度參數(shù)賦值改變節(jié)棍的相對形態(tài),但多節(jié)棍構成的骨架結構由于各個鏈球坐標系與世界坐標系間的相對位置關系不同,會導致使用者不能直觀快速地預測出角度值的更改會帶來姿態(tài)上的哪種變化,因此本文提出一種能更直觀地將角度變化的結果展示出來的手掌模擬法。
通過對圖1的觀察,可知鏈球坐標值θ反映節(jié)棍C3與C2的夾角大小,坐標值φ反映節(jié)棍C3與C1、C2所確定平面的夾角,仿照此種關系,將五指展開如圖2(a)所示,手掌及除拇指外的四指不動,所成平面視為C1、C2定位平面,拇指可隨與掌骨相連的節(jié)點任意轉動(指骨間節(jié)點不動)。令手掌與紙面平行且掌心向外,拇指如圖2(b)所示沿紙面垂直方向向外運動時,坐標值φ增大,反之減??;當拇指沿平行于紙面的方向運動即如圖2(c)所示方向時,坐標值θ增大,反之減小。此處只需了解角度變化對節(jié)棍C3運動趨勢的影響,并不要求手指絕對模擬C3的位置,所以鑒于拇指的靈活性完全可以實現(xiàn)φ和θ同時變化時的場景假設。在借手掌模擬法確定當前鏈球坐標值更改帶來的姿態(tài)變化時,首先利用手臂與腕關節(jié)讓手掌與C1、C2定位平面平行,拇指指尖與圖1中T4節(jié)點重合;然后沿與掌骨相連的關節(jié)轉動拇指,通過觀察指尖的運動特點即可直觀了解某個坐標值改變帶來的姿態(tài)影響,進而快速有效地設置坐標,得到預期的手勢形態(tài)。
圖2 手掌模擬法
在手勢表達中常需要手掌與手臂的配合,由于大臂和小臂僅存在一種“雙節(jié)棍三節(jié)點”的鏈球坐標系結構,因此在對相關骨骼結構進行虛擬搭建時,我們忽略較易描述的手臂與腕骨的旋轉,而注重指骨的運動細節(jié)。
人的手部骨骼包括腕骨、掌骨和指骨,根據(jù)圖3(a)所示實體骨骼的位置及比例[11],設置虛擬手部骨架結構共包含24個節(jié)點,其中拇指4個節(jié)點,食指、中指、無名指和小指各5個節(jié)點。記錄方法如圖3(b)所示,由拇指至小指將手指依次編號為A至E,節(jié)點則按照由手腕至指尖方向由0開始依次編號,編號為0的節(jié)點表示掌骨與腕骨的連接點,編號為1的節(jié)點表示掌骨與近節(jié)指骨的連接點,編號為2的節(jié)點表示近節(jié)指骨與中節(jié)指骨間的連接點,除拇指外編號為3的節(jié)點表示中節(jié)指骨與遠節(jié)指骨的連接點,而拇指的3號節(jié)點與其它手指的4號節(jié)點皆為遠節(jié)指骨粗隆即指尖。
圖3 手骨結構
通過對手指運動特點的分析,可知編號為0和除拇指外的編號為1的節(jié)點自身坐標無法更改,故可動節(jié)點共15個。為了實現(xiàn)虛擬手勢的生成,需要在此骨架結構的基礎上選擇合適的父節(jié)棍,建立鏈球坐標系。
為建立合適的鏈球坐標系,根據(jù)鏈球坐標值的計算方法,在選取父節(jié)棍時需要注意以下幾點:①子節(jié)棍及兩根父節(jié)棍之間應保持遞進連續(xù)性;②父節(jié)棍盡量不選取在同一手指上,以避免運動過程中多節(jié)棍位于同一直線上造成有效父節(jié)棍的缺失;③優(yōu)先考慮不可移動的節(jié)點,減少后續(xù)關聯(lián)節(jié)點的計算量。
由此建立各運動節(jié)點的鏈球坐標系見表1,其中各節(jié)點命名及相對位置關系參照圖1定義,虛擬手骨架中節(jié)點編號參照圖3(b)所示,(r,φ,θ)為初始狀態(tài)下節(jié)點T4的鏈球坐標值。
表1 各節(jié)點鏈球坐標系的建立及初始坐標值
當各運動節(jié)點鏈球坐標系確立后,即可通過調整θ及φ的值獲得各種手勢,算法如下:
輸入:全節(jié)點舊笛卡兒坐標值,活動節(jié)點新鏈球坐標值
輸出:全節(jié)點新笛卡兒坐標值
(1)根據(jù)初始手骨姿態(tài),給定全節(jié)點集合Tall的笛卡兒坐標值H(xi,yi,zi), (i∈Tall),建立初始手骨姿態(tài),根據(jù)式(2)計算得到全節(jié)點鏈球坐標值H(ri,θi,φi),(i∈Tall)。
(2)根據(jù)目標姿態(tài),可從任意手指開始,利用手掌模擬法確定當前涉及的運動節(jié)點θ及φ的變化方向。
(3)根據(jù)目標姿態(tài),對各手指待變化節(jié)點的各最小序號節(jié)點集合TM依次調整θ及φ的值,更新H(ri,θi,φi),(i∈TM)。
(4)對與TM相連的遞增序號節(jié)點集合TM+,保持對應H(ri,θi,φi),(i∈TM+)不變,在H(ri,θi,φi),(i∈TM)的基礎之上,根據(jù)式(1)按照序號遞增順序依次計算更新H(xi,yi,zi),(i∈TM+)。
(5)更新H(xi,yi,zi),(i∈Tall)并顯示,若達到目標姿態(tài)則結束,否則返回(2)。
根據(jù)上述算法,目標期望設計如圖4(a)所示的“數(shù)字8”手勢,最終得到表2所列各坐標值。圖4中依次給出了真實手勢以及攝像機在不同方位角和仰角下觀察到的虛擬手勢效果圖。
表2 “數(shù)字8”手勢各節(jié)點鏈球坐標系角度坐標值
圖4 手勢“數(shù)字8”
為產生如圖5(a)所示手勢“OK”,通過調節(jié)得到表3所示參數(shù)設置,效果如圖5所示。
圖5 手勢“OK”
表3 “OK”手勢各節(jié)點鏈球坐標系角度坐標值
依據(jù)高維形象幾何仿生信息學理論與同源連續(xù)性原理可知,同一坐標系系統(tǒng)下的不同手勢是同類樣本,其在特征空間中呈連續(xù)分布,故任意兩個手勢之間具有某種連續(xù)變化的關系。假設起始姿態(tài)各節(jié)點鏈球坐標值集合為HS(ri,θi,φi),目標姿態(tài)各節(jié)點鏈球坐標值為HD(ri,θi,φi),必然存在由HS(ri,θi,φi)向HD(ri,θi,φi)運動的路徑,設計路徑的變化并采樣,可獲得不同的手勢變化序列HT(ri,θi,φi),從而實現(xiàn)由靜態(tài)手勢產生動態(tài)手勢的功能。
通常手勢的變化往往直接快速,因此空間點的變化路徑常選取最近路線即直線運動,對由圖4手勢變化至圖5手勢的直線路徑按照式(3)進行采樣,可得圖6所示直線變換中間幀,由于節(jié)棍長度始終不變,因此不將坐標r作為變量處理。α和β的值決定采樣密度,用戶也可以根據(jù)需求調整部分關鍵節(jié)點的坐標值以適應視角產生最佳觀察效果
圖6 “數(shù)字8”向“OK”手勢的直線變化(方位角=-34° 仰角=-6°)
HT(θi,φi)=αiHS(θi,φi)+βiHD(θi,φi)
(3)
雖然高維空間點的運動路徑沒有明確的計算公式,但是仿照平面內的點運動軌跡計算方法,可以對逐個節(jié)點的鏈球坐標值進行類二維化處理,仍然能得到連續(xù)的漸變幀。例如采用如式(4)所示方法計算插值幀坐標(HInter(θi),HInter(φi)),有
(4)
式中:w是采樣系數(shù)點,變化范圍由0至1。為確定系數(shù)ai,bi,ci的值,增加一個軌跡中點(Hcom(θi),Hcom(φi)),定義各參數(shù)如式(5)
(5)
式中:λ表示了由源手勢向目標手勢變換過程中的偏移程度,λ越大則手勢的中間幀距離直線變形幀越遠。計算可得各系數(shù)如式(6)所示
(6)
令λ=2,w依次取0、0.2、0.4、0.6、0.8和1,最終得到圖7所示由HS(ri,θi,φi)以曲線形式變換至HD(ri,θi,φi)的采樣結果。與直線變換相比,過程中存在較大的偏移多樣性,但仍可以保證由源手勢向目標手勢的過渡結果準確。利用此特性可與機械手臂控制系統(tǒng)相連,根據(jù)虛擬手勢控制其完成真實人手所不能實現(xiàn)的動作。
圖7 “數(shù)字8”向“OK”手勢的曲線變化(方位角=-34° 仰角=-6°)
仿生關節(jié)鏈球坐標系適宜對具有固定長度的相連節(jié)棍式結構進行設計分析,并可以在笛卡兒坐標系與鏈球坐標系之間任意轉換。由于仿生關節(jié)鏈球坐標系在進行節(jié)棍類結構描述時具有簡單高效等特點,因此本文所述方法成本低廉、參數(shù)簡單、計算復雜度低,且在計算機上操作方便,可實時觀察效果并進行調節(jié),更適合虛擬手勢的生成。
為克服現(xiàn)有手勢三維信息獲取方法成本高、使用復雜、實時性差等問題,本文選擇了擅長描述節(jié)棍結構以及節(jié)點旋轉運動的仿生關節(jié)鏈球坐標系,并改進了坐標轉換方法,提出了新的角度判定輔助手段。借助計算機人機交互界面,該虛擬手勢生成方法對操作者無特殊技術要求,角度調節(jié)直觀準確,結合高維形象幾何仿生信息學可以高效地完成姿態(tài)關鍵幀的插值,無論是簡單手部姿態(tài)或是復雜的手語表達均可以達到較好的效果。