一種基于動作元的體感姿勢識別方法
【專利摘要】本發明公開了一種基于動作元的體感姿勢識別方法,采用對象映射生成技術、元動作分割技術、動作自動組合技術、頂級動作消缺技術,兼顧Kinect?For?Windows的馬達以及語音識別,使用Kinect?For?Windows?SDK實現一種依靠Kinect?For?Windows?SDK骨骼信息生成基礎元動作,根據元動作生成出復雜動作姿勢的姿勢識別方法。本發明增加了姿勢識別的重用性,避免了每一次的動作邏輯都要與骨骼信息進行交互,提高了姿勢識別的準確度和效率,并且可以對所需識別的姿勢進行擴充,有效解決了Kinect?For?Windows?SDK缺少姿勢識別模塊帶來的不便。
【專利說明】一種基于動作元的體感姿勢識別方法
【技術領域】
[0001]本發明涉及到對象映射生成技術、元動作分割技術、動作自動組合技術、頂級動作消缺【技術領域】。
【背景技術】
[0002]隨著Kinect For Windows體感識別設備的出現,以體感操作計算機的設想變成了現實,越來越多的項目結合Kinect進行開發。微軟,作為Kinect的制作商,為Kinect ForWindows提供了一套SDK開發包,也有很多其他軟件公司為Kinect For Windows開發相應的組件。除了 Kinect For Windows SDK以外,OpenNI提供了另一套SDK開發組件,OpenNI與Kinect For Windows SDK相比最大的特點在于具有姿勢識別模塊,支持全身追蹤,包含手部追蹤框架以及手勢識別框架,開發者不用編寫動作姿勢識別模塊;Kinect For WindowsSDK同樣具備全身追蹤但是不具備姿勢識別模塊,動作姿勢識別模塊需開發者自行實現。但是,Kinect For Windows SDK擁有內置馬達操作專利,通過馬達操作模塊可以很方便的操作Kinect的角度,使Kinect增加更多的擺放選擇,同時內置馬達操作模塊具有自動對焦功能能夠實時聚焦在操作者身上;Kinect For Windows SDK具備強勁的語音識別模塊可以與微軟自己的語音識別庫實現無縫對接,更加凸顯Kinect的效能。
[0003]為了兼顧Kinect的馬達以及語音識別功能,使用Kinect For Windows SDK必須要實現一套面向Kinect For Windows SDK的姿勢識別方法,避免每次單一動作都要去實現動作姿勢識別邏輯,增加姿勢識別的重用性,解決Kinect For Windows SDK缺少姿勢識別模塊帶來的不便。
[0004]一種基于動作元的姿勢識別方法為了解決Kinect For Windows SDK缺少姿勢識別模塊造成每個單一動作都要進行邏輯實現的弊端,同時為了增加姿勢識別的可重用性,在基于對象映射生成技術、元動作分割技術、動作自動組合技術、頂級動作消缺技術之上提供了一種依靠Kinect For Windows SDK骨骼信息生成基礎元動作,根據元動作生成復雜動作姿勢的姿勢識別方法,避免了每次動作邏輯與骨骼信息進行交互的計算復雜度。
【發明內容】
[0005]本發明的目的是為了克服Kinect For Windows SDK現有技術存在的缺陷和不足,提供一種增加姿勢識別可重用性,避免每次動作邏輯與骨骼信息進行交互的計算復雜度,提高姿勢識別的準確度和效率,并且支持對所需識別姿勢進行擴充的姿勢識別方法。
[0006]本發明通過使用對象映射生成技術、元動作分割技術、動作自動組合技術、頂級動作消缺技術等,兼顧Kinect For Windows的馬達以及語音識別,使用Kinect For WindowsSDK實現了一種依靠Kinect For Windows SDK骨骼信息生成基礎元動作,根據元動作生成出復雜動作姿勢的姿勢識別方法,避免每次單一動作都要去實現動作姿勢識別邏輯,增加姿勢識別的重用性,解決了 Kinect For Windows SDK缺少姿勢識別模塊帶來的不便,避免了每次動作邏輯與骨骼信息進行交互的計算復雜度。[0007]—種基于動作元的體感姿勢識別方法,本發明特征是,
采用對象映射生成技術、元動作分割技術、動作自動組合技術、頂級動作消缺技術,兼顧Kinect For Windows的馬達以及語音識別,使用Kinect For Windows SDK實現一種依靠Kinect For Windows SDK骨骼信息生成基礎元動作,根據元動作生成出復雜動作姿勢的姿勢識別方法;其中:
由Kinect骨骼信息接口、骨骼深度信息轉化模塊、基礎元動作生成模塊、復雜動作擴展模塊組成,其中基礎元動作生成模塊包括動作匹配工廠、元動作庫組成,復雜動作擴展模塊包括頂級動作消缺模塊、時序分析模塊、擴展模板組成;
在Kinect骨骼信息接口中,通過Kinect體感識別設備捕捉人體的20個骨骼點,人體20個骨骼點分別是頭、左/右肩、肩部中心點、左/右肘關節、左/右腕關節、左/右手掌、脊柱、左/右臀、臀部中心點、左/右膝關節、左/右踝關節、左/右腳掌;將捕捉到的20個骨骼點傳遞到骨骼深度信息轉化模塊,進行進一步的骨骼信息解析;
骨骼深度信息轉化模塊將骨骼對象映射為對應的屏幕坐標信息(X,y, z),其中X為水平方向上的坐標,y為豎直方向上的坐標,z為垂直于屏幕的深度坐標,最后將得到的骨骼點的坐標信息整合為深度圖像數據;骨骼深度信息轉化模塊將骨骼深度圖像數據傳遞到基礎元動作生成模塊,解析元動作;
元動作為人體日常活動中理論上手、腿、頭、軀干等可以達到的所有單一基本動作,分割出人體手和腿部在X-Y平面內,即沿水平和豎直兩個方向上的所有元動作;并分割出人體手和腿部涉及沿Z軸方向,即會與Kinect設備距離發生變化方向的所有元動作;通過基礎元動作生成模塊可以確切的得到每一條骨架信息產生的所有元動作,并且保證每一部分動作體有且只有一條元動作與之對應;
基礎元動作生成模塊接收到骨骼深度信息,通過骨骼動作匹配工廠、元動作庫,生成此次骨架信息對應的各種元動作鏈表,并將元動作鏈表傳遞到復雜動作擴展模塊,完成所需要的復雜動作識別;
復雜動作擴展模塊可以通過擴展模板由用戶自行擴展所需要的復雜動作,擴展模板包含每一部分動作體的元動作列表,既擴展模板中的動作體與元動作是一對多的關系;復雜動作擴展模塊中的動作識別由頂級動作消缺模塊對用戶自行擴展的擴展模板進行第一步識別動作;
在復雜動作擴展模塊接收到元動作列表信息以后,頂級動作消缺模塊開始對用戶自行擴展的擴展模板進行分析,并消去此次識別的用戶所設置的最頂級動作子動作集合,保留最頂級動作作為此次的復雜動作識別結果,并將結果傳遞到時序分析模塊中,進行時序分析,在操作人員動作完成的時間范圍內完成此套動作的識別;
在時序分析模塊中,根據Kinect的骨骼識別頻率30幀/秒來設定計時器,即通過對骨骼幀的計數來計算出相對應的時間,每一次復雜動作的識別時間為1/30F秒,通過用戶自行設定此套復雜動作所跨越的時間段。
[0008]本發明的有益效果:基于本發明,增加了姿勢識別的重用性,避免了每一次的動作邏輯都要與骨骼信息進行交互,提高了姿勢識別的準確度和效率,并且可以對所需識別的姿勢進行擴充,有效解決了 Kinect For Windows SDK缺少姿勢識別模塊帶來的不便。【專利附圖】
【附圖說明】
[0009]圖1是本發明的結構示意圖;
圖2是通過Kinect體感識別設備捕捉人體的20個骨骼點的分布圖;
圖3是分割出了人體手和腿部在X-Y平面內,即沿水平和豎直兩個方向上的所有元動作示意圖;
圖4是以右手/腿動作為例,左手/腿動作類同,分割出了人體手和腿部涉及沿Z軸方向,即會與Kinect設備距離發生變化方向的所有元動作示意圖。
【具體實施方式】
[0010]一種基于動作元的體感姿勢識別方法,本發明技術方案如圖1所示,由Kinect骨骼信息接口 1、骨骼深度信息轉化模塊2、基礎元動作生成模塊3、復雜動作擴展模塊4組成,其中基礎元動作生成模塊包括動作匹配工廠31、元動作庫32組成,復雜動作擴展模塊包括頂級動作消缺模塊41、時序分析模塊42、擴展模板43組成;
在Kinect骨骼信息接口 I中,通過Kinect體感識別設備捕捉人體的20個骨骼點,人體20個骨骼點如圖2所示,分別是頭、左/右肩、肩部中心點、左/右肘關節、左/右腕關節、左/右手掌、脊柱、左/右臀、臀部中心點、左/右膝關節、左/右踝關節、左/右腳掌;將捕捉到的20個骨骼點傳遞到骨骼深度信息轉化模塊2,進行進一步的骨骼信息解析;
骨骼深度信息轉化模塊2將骨骼對象映射為對應的屏幕坐標信息U,y,z),其中X為水平方向上的坐標,y為豎直方向上的坐標,z為垂直于屏幕的深度坐標(即與Kinect設備的距離),最后將得到的骨骼點的坐標信息整合為深度圖像數據;骨骼深度信息轉化模塊2將骨骼深度圖像數據傳遞到基礎元動作生成模塊3,解析元動作;
元動作為人體日常活動中理論上手、腿、頭、軀干等可以達到的所有單一基本動作,如圖3和圖4所示。圖3中,分割出了人體手和腿部在X-Y平面內,即沿水平和豎直兩個方向上的所有元動作;圖4中(以右手/腿動作為例,左手/腿動作類同),分割出了人體手和腿部涉及沿Z軸方向,即會與Kinect設備距離發生變化方向的所有元動作;圖3和圖4分別包含了各自角度內的軀干以及頭部所能達到的所有元動作;通過基礎元動作生成模塊可以確切的得到每一條骨架信息產生的所有元動作,并且保證每一部分動作體(手、腿、頭、軀干等)有且只有一條元動作與之對應;
基礎元動作生成模塊3接收到骨骼深度信息,通過骨骼動作匹配工廠31、元動作庫32,生成此次骨架信息對應的各種元動作鏈表,并將元動作鏈表傳遞到復雜動作擴展模塊4,完成所需要的復雜動作識別;
復雜動作擴展模塊4可以通過擴展模板43由用戶自行擴展所需要的復雜動作,擴展模板43包含每一部分動作體(手、腿、頭、軀干)的元動作列表,既擴展模板43中的動作體與元動作是一對多的關系,這樣有助于實現大幅度動作的識別;復雜動作擴展模塊4中的動作識別由頂級動作消缺模塊41對用戶自行擴展的擴展模板43進行第一步識別動作;
在復雜動作擴展模塊4接收到元動作列表信息以后,頂級動作消缺模塊41就開始對用戶自行擴展的擴展模板43進行分析,并消去此次識別的用戶所設置的最頂級動作子動作集合,保留最頂級動作作為此次的復雜動作識別結果,并將結果傳遞到時序分析模塊42中,進行時序分析,在操作人員動作完成的時間范圍內完成此套動作的識別; 在時序分析模塊42中,根據Kinect的骨骼識別頻率30幀/秒來設定計時器,即通過對骨骼幀的計數來計算出相對應的時間,每一次復雜動作的識別時間為1/30F秒,通過用戶自行設定此套復雜動作所跨越的時間段。
【權利要求】
1.一種基于動作元的體感姿勢識別方法,其特征是, 采用對象映射生成技術、元動作分割技術、動作自動組合技術、頂級動作消缺技術,兼顧Kinect For Windows的馬達以及語音識別,使用Kinect For Windows SDK實現一種依靠Kinect For Windows SDK骨骼信息生成基礎元動作,根據元動作生成出復雜動作姿勢的姿勢識別方法;其中: 由Kinect骨骼信息接口(I)、骨骼深度信息轉化模塊(2)、基礎元動作生成模塊(3)、復雜動作擴展模塊(4)組成,其中基礎元動作生成模塊包括動作匹配工廠(31)、元動作庫(32)組成,復雜動作擴展模塊包括頂級動作消缺模塊(41)、時序分析模塊(42)、擴展模板(43)組成; 在Kinect骨骼信息接口( I)中,通過Kinect體感識別設備捕捉人體的20個骨骼點,人體20個骨骼點分別是頭、左/右肩、肩部中心點、左/右肘關節、左/右腕關節、左/右手掌、脊柱、左/右臀、臀部中心點、左/右膝關節、左/右踝關節、左/右腳掌;將捕捉到的20個骨骼點傳遞到骨骼深度信息轉化模塊(2),進行進一步的骨骼信息解析; 骨骼深度信息轉化模塊(2)將骨骼對象映射為對應的屏幕坐標信息(X,y, z),其中X為水平方向上的坐標,y為豎直方向上的坐標,z為垂直于屏幕的深度坐標,最后將得到的骨骼點的坐標信息整合為深度圖像數據;骨骼深度信息轉化模塊(2)將骨骼深度圖像數據傳遞到基礎元動作生成模塊(3),解析元動作; 元動作為人體日常活動中理論上手、腿、頭、軀干等可以達到的所有單一基本動作,分割出人體手和腿部在X-Y平面內,即沿水平和豎直兩個方向上的所有元動作;并分割出人體手和腿部涉及沿Z軸方向,即會與Kinect設備距離發生變化方向的所有元動作;通過基礎元動作生成模塊可以確切的得到每一條骨架信息產生的所有元動作,并且保證每一部分動作體有且只有一條元動作與之對應; 基礎元動作生成模塊(3)接收到骨骼深度信息,通過骨骼動作匹配工廠(31)、元動作庫(32),生成此次骨架信息對應的各種元動作鏈表,并將元動作鏈表傳遞到復雜動作擴展模塊(4),完成所需要的復雜動作識別; 復雜動作擴展模塊(4)可以通過擴展模板(43)由用戶自行擴展所需要的復雜動作,擴展模板(43)包含每一部分動作體的元動作列表,既擴展模板(43)中的動作體與元動作是一對多的關系;復雜動作擴展模塊(4)中的動作識別由頂級動作消缺模塊(41)對用戶自行擴展的擴展模板(43)進行第一步識別動作; 在復雜動作擴展模塊(4)接收到元動作列表信息以后,頂級動作消缺模塊(41)開始對用戶自行擴展的擴展模板(43)進行分析,并消去此次識別的用戶所設置的最頂級動作子動作集合,保留最頂級動作作為此次的復雜動作識別結果,并將結果傳遞到時序分析模塊(42)中,進行時序分析,在操作人員動作完成的時間范圍內完成此套動作的識別; 在時序分析模塊(42)中,根據Kinect的骨骼識別頻率30幀/秒來設定計時器,即通過對骨骼幀的計數來計算出相對應的時間,每一次復雜動作的識別時間為1/30F秒,通過用戶自行設定此套復雜動作所跨越的時間段。
【文檔編號】G06F3/01GK103941869SQ201410159749
【公開日】2014年7月23日 申請日期:2014年4月21日 優先權日:2014年4月21日
【發明者】白彪, 桂丹, 楊堂華, 羅慶兵, 朱興柯, 李文亮, 李長生, 吳秋玫, 丁東, 車勇波, 楊鷗, 姚莉 申請人:云南電網公司普洱供電局, 昆明能訊科技有限責任公司