• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Kinect的手方向?qū)崟r估計系統(tǒng)

      2023-03-15 08:47:06陳建新潘招來黃湘君
      計算機應(yīng)用與軟件 2023年2期
      關(guān)鍵詞:歐拉角卡爾曼濾波骨骼

      姚 玲 陳建新 潘招來 黃湘君

      (南京郵電大學(xué)通信與信息工程學(xué)院 江蘇 南京 210000)

      0 引 言

      人機交互已有30多年的歷史,其發(fā)展極大地豐富了用戶體驗[1]。在人機交互領(lǐng)域,對人體骨骼姿態(tài)的追蹤已經(jīng)變得越來越重要,這主要是由于它們在醫(yī)療、生物醫(yī)學(xué)、人機界面、虛擬現(xiàn)實、機器人技術(shù)等領(lǐng)域的應(yīng)用[2]。手作為人體骨骼中最靈活的關(guān)節(jié),被認為是最方便、最有效的交流工具,因此對手姿勢的估計一直是一個熱門領(lǐng)域。文獻[3]提出了一種將17個慣性傳感器(IMU)和中央處理器(CPU)集成在可穿戴式感應(yīng)手套上來捕捉手關(guān)節(jié)的自由度。文獻[4]提出了一種在大拇指、中指和手背上分別帶三個IMU傳感器來估計手和手指之間的相對方向。這種基于傳感器的方法雖然準(zhǔn)確度較高但是手上需要佩戴設(shè)備,視野和跟蹤范圍受到一定的限制。文獻[5]提出一種利用更快的卷積神經(jīng)網(wǎng)絡(luò)(CNN)的主干生成矩形區(qū)域檢測手并提取特征,旋轉(zhuǎn)網(wǎng)絡(luò)生成一個與手對齊的估計面來估計手方向。文獻[6]提出了一種利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來檢測手的邊界框,并將與手邊界框?qū)R的向量的方向作為手的方向?;诰矸e神經(jīng)網(wǎng)絡(luò)的方法需要大量的數(shù)據(jù)集來訓(xùn)練,準(zhǔn)確度高,但是實時性差,并且在環(huán)境改變時會對準(zhǔn)確度有影響。文獻[7]提出了一種利用幾何方法來計算角度并結(jié)合分解四元數(shù)算法(FQA)[8]對手方向進行估計。文獻[9]提出了一種將手的手掌區(qū)域和手指區(qū)域分離,并提取出手掌中心點和手的中指點、拇指點來估計手方向。幾何方法是計算關(guān)節(jié)角度的一種常用方法,簡單易行,但是在準(zhǔn)確獲取關(guān)節(jié)位置信息的基礎(chǔ)上,抖動和噪聲較大,準(zhǔn)確度不高。因此,上述方法對手方向進行估計時的缺陷可歸結(jié)為實時性差以及準(zhǔn)確率低。針對此問題,本文提出一種基于Kinect的手方向?qū)崟r估計系統(tǒng)。該系統(tǒng)可以準(zhǔn)確、實時對手方向進行估計,并利用開放圖形庫(OpenGL)構(gòu)建一個3D的虛擬手模型,模仿手的實時運動,提高了人機交互的體驗。

      1 系統(tǒng)設(shè)計

      本文系統(tǒng)框圖如圖1所示,首先通過深度數(shù)據(jù)尋找目標(biāo)用戶,結(jié)合從Kinect獲得骨骼數(shù)據(jù)找到目標(biāo)用戶的手腕點的位置,并利用Holt雙指數(shù)平滑濾波算法對手腕位置的骨骼點坐標(biāo)進行平滑處理;然后將從Kinect獲得手腕點的四元數(shù)轉(zhuǎn)換為歐拉角以便可以直觀地觀察手的方向變化。為了消除由Kinect噪聲引起的歐拉角抖動,利用一種將卡爾曼濾波和中值濾波結(jié)合的算法來平滑歐拉角,濾除噪聲。最后,對計算出的歐拉角進行可視化,主要通過兩種方法,分別是在彩色圖像中繪制代表手方向的坐標(biāo)系以及運用OpenGL構(gòu)建3D手模型。

      圖1 手方向?qū)崟r估計系統(tǒng)框圖

      1.1 尋找目標(biāo)用戶

      深度傳感器(Kinect)以其成本低,提供彩色圖像數(shù)據(jù)以及來自紅外傳感器的深度數(shù)據(jù)的特點而在人機交互領(lǐng)域越來越被研究者青睞[10]。與傳統(tǒng)的彩色攝像頭不同的是,Kinect深度傳感器能夠克服彩色攝像頭易受光線等外界干擾的缺點,準(zhǔn)確跟蹤到視野范圍內(nèi)的人體[11]。Kinect可以同時跟蹤六個用戶,并為這六個用戶分配不同的ID信息。為了防止用戶間的相互干擾,導(dǎo)致從Kinect獲取的數(shù)據(jù)不準(zhǔn)確,本文選取距離Kinect最近的用戶ID作為標(biāo)記用戶ID。然后,將當(dāng)前幀的用戶ID與標(biāo)記用戶ID進行匹配。用戶ID完成匹配之后,檢查當(dāng)前幀的用戶ID的跟蹤狀態(tài),因為只有當(dāng)前幀的用戶ID的狀態(tài)處于被跟蹤時,Kinect才能對其信息進行處理。其算法流程如下:

      1) 識別用戶,利用Kinect的深度數(shù)據(jù)找到距離Kinect最近的用戶ID,作為標(biāo)記用戶ID。

      2) 搜索當(dāng)前幀的用戶ID,將其與標(biāo)記用戶ID進行匹配。

      3) 如果ID值相同,則匹配成功,將當(dāng)前幀的用戶作為目標(biāo)用戶。

      4) 檢測目標(biāo)用戶的跟蹤狀態(tài),如果處于被跟蹤狀態(tài),就可以對Kinect輸入幀的信息進行處理。

      5) 如果ID匹配不成功或者目標(biāo)用戶狀態(tài)不是被跟蹤時,返回步驟1)重做處理。

      1.2 骨骼點平滑

      開啟骨骼數(shù)據(jù)流后,當(dāng)目標(biāo)用戶出現(xiàn)在Kinect的有效視野范圍內(nèi),Kinect就可以迅速檢測出人體并獲取其骨骼信息[12]。由于從Kinect獲取的骨骼信息存在噪聲和抖動,因此可以通過對不同幀的骨骼信息濾波來減小抖動。濾波不可避免地會存在一定的延遲。為了確保實時性,本文使用Holt雙指數(shù)平滑濾波算法[13],因為其延遲比其他濾波算法要小。Holt雙指數(shù)平滑濾波算法主要是通過5個參數(shù)進行濾波處理,這5個參數(shù)分別為:

      平滑參數(shù):代表著處理骨骼數(shù)據(jù)時的平滑量,其值在0~1之間,值越大代表平滑得越多,0代表不平滑,平滑參數(shù)增大得越多,返回的骨骼數(shù)據(jù)的延遲就越大。

      修正參數(shù):代表對原始數(shù)據(jù)的修正量,其值在0~1之間,較小的值對原始數(shù)據(jù)修正的速度較慢但會更平滑。

      預(yù)測超前期數(shù):其值應(yīng)該大于等于0.5,增大該值能減小濾波的延遲。

      抖動半徑參數(shù):代表修正的半徑,如果抖動超過了設(shè)置的這個半徑,將會被糾正到這個半徑之內(nèi)。

      最大偏離半徑參數(shù):用來和抖動半徑參數(shù)一起來設(shè)置抖動半徑的最大邊界。

      同時,為了減少骨骼點坐標(biāo)的噪聲,本文對五幀連續(xù)幀的數(shù)據(jù)進行加權(quán)平均來更新當(dāng)前幀的骨骼點坐標(biāo)。

      1.3 四元數(shù)轉(zhuǎn)換

      常用的兩種表示姿態(tài)的方法是四元數(shù)[14-16]和歐拉角。由于四元數(shù)比歐拉角更復(fù)雜并且不夠直觀,因此本文選用歐拉角來表示手的姿態(tài)。歐拉角是用來描述物體旋轉(zhuǎn)姿態(tài)的三個角度[17]。如圖2所示,ψ、θ和φ分別定義為繞Z軸、Y軸和X軸的旋轉(zhuǎn)角度。

      圖2 歐拉角示意圖

      如果用卡爾丹角(Tait-Bryan angles)表示,定義歐拉角的轉(zhuǎn)動順序為Z-Y-X,則ψ、θ和φ分別對應(yīng)偏航角(Yaw)、俯仰角(Pitch)、翻滾角(Roll)。

      本文首先從Kinect獲得手腕點的四元數(shù)q=[w,x,y,z]。然后根據(jù)式(1)將四元數(shù)轉(zhuǎn)換為歐拉角。

      (1)

      用式(1)計算歐拉角會存在奇異解問題,發(fā)生自由度的損失。例如,當(dāng)俯仰角為90度時,偏航和翻滾角就變成一個自由度[18]。為了解決這個問題,本文通過設(shè)置合理的閾值來檢測俯仰角的狀態(tài)。由于當(dāng)俯仰角等于±90度時,wy-xz的值等于±0.5,因此,設(shè)置閾值使其盡可能接近0.5。其算法流程如下:

      1) 設(shè)置閾值為0.499。

      2) 計算四元數(shù)q中的wy-xz的值,如果其值在-0.499到0.499之間,則不存在奇異解問題,用式(1)計算歐拉角。

      3)如果其值不在-0.499到0.499之間,則存在奇異解問題,用式(2)計算歐拉角。

      (2)

      1.4 歐拉角濾波

      由于Kinect傳感器自身存在的噪聲,使得計算得到的歐拉角存在很大的噪聲并且非常不穩(wěn)定。對姿態(tài)進行濾波常用的算法是卡爾曼濾波[19]??柭鼮V波是一種基于狀態(tài)空間的遞歸濾波算法。其模型包括狀態(tài)空間模型和觀測模型。前者使用狀態(tài)方程來描述相鄰狀態(tài)矩陣的轉(zhuǎn)換定律,后者則反映了實際觀測值與狀態(tài)變量之間的關(guān)系。濾波是將觀測信息和狀態(tài)轉(zhuǎn)移定律結(jié)合起來,以獲得對系統(tǒng)狀態(tài)的最優(yōu)估計。假設(shè)動態(tài)系統(tǒng)的狀態(tài)空間模型是:

      xk=Akxk-1+Bkuk+wk

      (3)

      zk=Hkxk+vk

      (4)

      式中:k是時間索引;xk是狀態(tài)向量;zk是測量向量;Ak是狀態(tài)轉(zhuǎn)移矩陣;uk是控制向量;Bk是控制矩陣;wk是系統(tǒng)誤差(噪聲);Hk是測量矩陣;vk是測量誤差(噪聲)。wk和vk均為高斯噪聲,均服從高斯分布,即:

      wk~N(0,Qk)

      (5)

      vk~N(0,Rk)

      (6)

      式中:Qk、Rk分別是wk和vk的協(xié)方差矩陣。

      根據(jù)式(3)和式(4),計算過程主要分為預(yù)測和修正兩個階段。在預(yù)測階段,濾波器使用上一狀態(tài)的估計對當(dāng)前狀態(tài)進行預(yù)測。主要計算過程如下:

      (7)

      (8)

      式中:yk是測量誤差;Kk是最佳卡爾曼增益;xk/k為修正后的狀態(tài)值;Pk/k為修正后的均方誤差。

      傳統(tǒng)的卡爾曼濾波算法僅適用于線性高斯系統(tǒng),且當(dāng)描述系統(tǒng)動態(tài)特性的數(shù)學(xué)模型和噪聲估計模型不準(zhǔn)確時,無法獲得良好的效果[20]。并且,卡爾曼濾波是一個遞歸過程[21],所以隨著濾波次數(shù)增加,舍入誤差將逐漸累積。針對這個問題,本文提出一種將卡爾曼濾波和中值濾波結(jié)合的算法,首先利用卡爾曼濾波器消除在每一幀中歐拉角的噪聲。然后,對連續(xù)幀的卡爾曼濾波輸出進行中值濾波,將中值濾波之后輸出的歐拉角作為代表手旋轉(zhuǎn)方向的角。

      2 實驗設(shè)計

      2.1 實驗環(huán)境

      本文實驗環(huán)境為一臺配置為Intel Xeon E5 2.4 GHz處理器,48 GB內(nèi)存,Windows 10 64位操作系統(tǒng)的計算機,一個用于捕獲手部動作的深度相機Kinect v2。

      2.2 實驗結(jié)果與分析

      為了驗證本文方法與卡爾曼濾波相比平滑效果更好,設(shè)計實驗一如下:將手沿骨骼方向任意旋轉(zhuǎn),并從中選取手水平、手垂直和手傾斜時的這三個代表狀態(tài),繪制了在這三個狀態(tài)時不同方法下的歐拉角變化曲線。

      實驗一的結(jié)果如圖3所示,本文方法和卡爾曼濾波都對原始歐拉角有平滑效果,但是本文方法的平滑效果更好,使得歐拉角的波動幅度減小,變化曲線趨于更平緩,減小歐拉角的抖動的效果更明顯。

      (a) 手水平時的歐拉角濾波效果

      (b) 手垂直時的歐拉角濾波效果

      (c) 手傾斜時的歐拉角濾波效果圖3 手不同狀態(tài)時歐拉角的濾波效果

      當(dāng)手掌平面垂直于Kinect平面時,偏航角Yaw可以表示手沿骨骼旋轉(zhuǎn)的角度。實驗數(shù)據(jù)測量到,當(dāng)手掌平面垂直于Kinect平面且正對時,偏航角等于0。當(dāng)手逆時針旋轉(zhuǎn)時,該角度為正;當(dāng)手順時針旋轉(zhuǎn)時,該角度為負。

      為了驗證本文方法與卡爾曼濾波相比對歐拉角的濾波效果更好,從而使歐拉角更加穩(wěn)定,設(shè)計實驗二如下:將手旋轉(zhuǎn)到任意11個偏航角值,然后,計算手旋轉(zhuǎn)到這11個角度下不同方法濾波后歐拉角的方差。實驗二的結(jié)果如表1-表3所示,表中分別列出了Roll、Pitch、Yaw角的原始方差、經(jīng)過卡爾曼濾波后的方差以及經(jīng)過本文方法濾波后的方差。從實驗結(jié)果可以看出,經(jīng)過本文方法濾波后歐拉角的方差這11個角度下都要小于經(jīng)過卡爾曼濾波后歐拉角的方差。

      表1 不同方法濾波后Roll角的方差比較

      表2 不同方法濾波后Pitch的方差比較

      表3 不同方法濾波后Yaw的方差比較

      重復(fù)上述實驗10次,得到歐拉角方差的平均值。表4列出了卡爾曼濾波和本文方法對原始數(shù)據(jù)方差減小的程度??梢钥闯?,與卡爾曼濾波相比,本文方法對Roll、Pitch、Yaw這三個角原始數(shù)據(jù)的方差的減小程度更大,分別比卡爾曼濾波多減小11百分點、14百分點、15百分點,從而使歐拉角的穩(wěn)定性更好。

      表4 不同方法對原始數(shù)據(jù)方差減小的程度比較(%)

      本系統(tǒng)可以得到手在任何姿勢下的角度,并將角度可視化到彩色圖像上和OpenGL構(gòu)建的3D手模型上,為了驗證可視化效果,設(shè)計實驗三如下:站在Kinect攝像頭面前,旋轉(zhuǎn)手,在彩色圖像上繪制了一個與Kinect具有相同初始狀態(tài)的坐標(biāo)系,然后將計算得到的歐拉角傳遞給坐標(biāo)系和OpenGL構(gòu)建的3D手模型。實驗三的結(jié)果如圖4所示,圖4展示了手旋轉(zhuǎn)在一系列連續(xù)幀的彩色圖像和OpenGL虛擬手模型上的估計結(jié)果,可以看出彩色圖像中的坐標(biāo)系和OpenGL構(gòu)建的3D手模型都隨手的旋轉(zhuǎn)而旋轉(zhuǎn),能夠準(zhǔn)確地模仿手的旋轉(zhuǎn)運動。由于本文方法是基于Kinect骨骼點的四元數(shù)進行手方向估計,Kinect的幀率為30幀/s,滿足實時性要求。

      圖4 手方向估計結(jié)果

      3 結(jié) 語

      本文是基于Kinect的手方向?qū)崟r估計系統(tǒng)。該系統(tǒng)利用Holt雙指數(shù)平滑濾波算法平滑Kinect的骨骼數(shù)據(jù),根據(jù)骨骼數(shù)據(jù)定位到手的位置。由于四元數(shù)旋轉(zhuǎn)較復(fù)雜且不直觀,該系統(tǒng)將四元數(shù)轉(zhuǎn)換為歐拉角,但是在此過程中會出現(xiàn)奇異解問題,該系統(tǒng)通過設(shè)置合理的閾值的方法來解決,使得轉(zhuǎn)換過來的歐拉角不會發(fā)生自由度損失。為了克服Kinect噪聲對歐拉角的影響,該系統(tǒng)提出一種將卡爾曼濾波和中值濾波結(jié)合的算法。實驗結(jié)果表明,與卡爾曼濾波相比,該方法能更有效地消除歐拉角中的噪聲,使得歐拉角更穩(wěn)定。為了驗證系統(tǒng)的準(zhǔn)確性和實時性,本文在彩色圖像中對手方向進行估計,同時運用OpenGL建立了3D手模型,可以實時準(zhǔn)確地模仿手的運動。但是該系統(tǒng)在手不是沿骨骼方向運動時對手方向估計不準(zhǔn)確,因為會出現(xiàn)手掌平面將手腕點遮擋的情況,導(dǎo)致骨骼點不能定位到手腕點,因此,優(yōu)化系統(tǒng),使其能夠解決此問題是下一步的研究方向。

      猜你喜歡
      歐拉角卡爾曼濾波骨骼
      做家務(wù)的女性骨骼更強壯
      中老年保健(2021年5期)2021-12-02 15:48:21
      三減三健全民行動——健康骨骼
      中老年保健(2021年5期)2021-08-24 07:06:28
      基于遞推更新卡爾曼濾波的磁偶極子目標(biāo)跟蹤
      骨骼和肌肉
      小布老虎(2017年1期)2017-07-18 10:57:27
      從CATIA位置矩陣求解歐拉角的計算方法分析
      科技視界(2017年6期)2017-07-01 08:33:34
      一種基于EGI和標(biāo)準(zhǔn)人臉模板的三維人臉點云拼合算法
      基于模糊卡爾曼濾波算法的動力電池SOC估計
      基于擴展卡爾曼濾波的PMSM無位置傳感器控制
      大姿態(tài)角入水時的魚雷半實物仿真方法研究
      四元數(shù)與歐拉角剛體動力學(xué)數(shù)值積分算法及其比較
      兴安县| 荆门市| 安吉县| 潼关县| 邳州市| 枞阳县| 辽宁省| 五原县| 永仁县| 怀远县| 格尔木市| 厦门市| 房产| 建始县| 北票市| 榕江县| 牡丹江市| 小金县| 辽宁省| 木兰县| 从江县| 抚顺县| 淮北市| 松原市| 齐河县| 曲麻莱县| 安平县| 锡林浩特市| 鹿邑县| 保山市| 开远市| 延边| 奇台县| 廊坊市| 河北区| 鲜城| 泽普县| 丘北县| 广昌县| 徐州市| 若尔盖县|