羅 章,譚海波,李曉風,趙 赫
(1.中國科學院 合肥物質科學研究院,安徽 合肥 230031;2.中國科學院大學,北京 100049;3.中國科學技術大學,安徽 合肥 230026)
Kinect運動捕獲技術在健康醫療中的應用研究
羅 章1,2,3,譚海波1,3,李曉風1,2,3,趙 赫1,3
(1.中國科學院 合肥物質科學研究院,安徽 合肥 230031;2.中國科學院大學,北京 100049;3.中國科學技術大學,安徽 合肥 230026)
體感交互技術在人機交互領域具有跨時代的意義,實現了不需要任何手持設備就可進行人機交互的全新體驗。Kinect作為最新的人機交互技術,如何利用自身的運動捕獲技術與健康醫療進行結合并開展相關應用成為當下的研究重點。通過調研Kinect運動捕獲技術在健康醫療中的應用,為課題組利用Kinect開發針對青少年的康復訓練系統提供理論指導和技術支持,并探索新的應用模式。通過調研國內外文獻,并對第二代Kinect體感產品進行研究,探討了Kinect for Windows SDK的數據源和編程模型,分析了基于Kinect的人體運動捕獲技術在健康醫療領域中的應用方式和前景。
人機交互;Kinect;運動捕獲;健康醫療
人機交互主要是研究人與計算機之間的信息交換,先后經歷了三次革命,從鼠標操作到多點觸控再到現在的體感技術。體感交互技術在人機交互歷史上具有里程碑式的意義,它徹底改變了傳統的交互模式,用戶不再需要任何手持設備就可與機器進行互動。這種全新模式是革新性的,它主要通過語音識別、動作捕獲、紅外識別等技術進行實現。體感交互技術已經成為當下的研究熱點[1-2]。
Kinect體感設備是微軟公司于2010年世界電子大會上發布的針對XBOX 360的外部周邊設備。它是以體感技術為基礎的跨時代產品,將體感交互融入到現實生活中,使得人機交互的理念更加突出[3]。傳統的人體捕獲技術由于使用方法、成本和開發難度等方面的限制,無法較好地推廣到健康醫療領域。Kinect作為最新的傳感器技術,其提供的骨骼追蹤和深度過濾技術能夠同時識別6個人(每個人25個關節點),此外其提供的高清視頻錄制、新的主動式紅外檢測、改進的麥克風、新增拇指追蹤和手勢識別等先進技術推動了人體捕獲技術的發展。Kinect相對其他體感產品在運動捕獲精度方面有所提高[4]。國內外不少學者利用Kinect運動捕獲技術在健康醫療方面進行相關研究和應用,完備的Kinect SDK能夠為開發者探尋和創造新的應用App提供入口[5]。
基于Kinect運動捕獲技術開發的應用也層出不窮,如手勢姿態檢測應用、虛擬場景模擬、軍事化體能訓練系統、3D虛擬試衣間、電子游戲等[6]。Kinect技術正在被用于物理療法,通過Kinect作為監控病房情況的一種健康服務手段。此外Kinect也可用于教育領域中,增加教育過程的互動性,對現有的課程進行補充。
Kinect體感設備構造如圖1所示。

圖1 Kinect構造
圖中共有三個攝像頭,分別是RGB彩色攝像頭、紅外線發射器和紅外線CMOS攝像頭。Kinect設備底部為麥克風陣列,能夠探測周圍的語音。主要功能如下所述:
1.1 3D影像探測
Kinect產品是獨一無二的,不管是在網絡攝像機,還是在彩色照相機的條件下,它都可以在3D模式下觀看。通過利用紅外線探測可形成像素點深度數據。使用Kinect和Kinect Fusion對人體、對象及環境進行掃描,可以整合輸出到3D建模軟件和3D網絡中,甚至發送到3D打印機[7]。
1.2 人體骨骼追蹤
Kinect把紅外攝像頭探測到的深度圖像映射到骨架追蹤系統。該系統可同時跟蹤6個人,最多25個關節的活動,同時骨骼的穩定性也得到了大幅改善。系統可以從解剖學角度更準確地定位關節,在對骨關節定位的改善中,增加了大拇指關節和指尖關節,也增加了用于表示開關的手部狀態,這樣便增大了檢測范圍。該系統可以呈現距離設備各方向(近則5 cm,遠則8 m)的深度數據[8]。
1.3 音頻處理
Kinect的音頻系統采用四元線性麥克風陣列,可以監聽來自四面八方的聲音,通過語音完成與應用程序的交互,從而完成整個系統的工作目標。麥克風可由軟件控制,可以通過語音啟動程序。
2.1 Kinect SDK
通過Kinect SDK可以判定Kinect設備前是否有人出現,Kinect中使用了能夠檢測人體的所有識別算法,系統可以使用骨骼跟蹤身體,了解人體所處的位置。Kinect SDK提供大量的API,不僅適用于過去的桌面應用程序和微軟的商店應用程序,而且也適用于XBOX環境。Kinect SDK也可以整合到Unity游戲或應用程序中,對用戶輸入進行響應、互動。
Kinect技術的核心與人體相關,當人站在設備前只需要思考移動就會看到相關運動或者表情的變化。通過Kinect for Windows SDK開發者可以實現很多難以置信的應用。Kinect提供的攝像頭非常精密,對深度數據判斷十分精準,因此它可以成為制作動畫的最佳方式,傳統需要30 min的動畫時間,現在只需要10 s即可。在醫院,利用Kinect for Windows和Windows Modern App,醫生可以在病人最需要的地方部署軟件。在家庭,開發者可以把開發出的Kinect應用放在Windows Store上,以此來吸引上百萬消費者。通過Kinect SDK,開發者可以不斷開發出影響人類生活方式的體感應用。
2.2 Kinect SDK數據源
Kinect SDK共有6種數據源,所有的編程模型都是基于這些數據源的,它們是Color、Infrared、Depth、BodyIndex、Body和Audio,如圖2所示。
Color數據源:像素1 920*1 080,彩色圖片。該數據源具有廣闊的視野,圖中可以清楚看到它們。Infrared屬于紅外線數據源,是超級干凈的紅外線,可以應用于對象檢測和識別。深度信息數據源使得程序開發者能夠掌握X、Y和Z坐標上的單獨像素,這樣就可以知道物體有多遠。BodyIndex數據源可以識別出具體對象和判定人員的個數等。Body數據源可以檢測到每個人的骨關節或者身體關節。目前有25個關節,當前骨骼的穩定性有了巨大提升,臀部的位置也降低了,從而能夠達到解剖學上的正確性,這樣更容易追蹤。此外系統增加了大拇指關節和指尖關節,系統也內置手勢開關的初始識別,如綠色表示伸展開手掌,紅色表示手掌握拳。另外一種手型叫套鎖,這個動作用藍色表示。身體都有一系列的關節組合,如果對關節進行跟蹤或推斷,可視化過程會根據代碼的處理方式使用不同的方法處理關節,Kinect系統可以同時提供6個身體的情況。Audio數據源提供相關聲音信息。

圖2 Kinect數據源
KinectSDKV1只能運行單一的Kinectapp,但是在這個模型中,它有一個共享模型,可以同時運行使用這些數據的多個APP。KinectSDK中提供Kinectstudio工具,它可以記錄來自KinectSensor的數據,記錄不同數據源,還可以對不同數據源進行回放,開發者可以在任何地方開發Kinectapp。Kinect也提供了工具GBA,該工具可以通過兩種方法進行姿勢檢測:啟發式方法和機器學習方法。
2.3 Kinect編程架構
Kinect及其App的架構如圖3所示。

圖3 Kinect編程架構
圖3中,最底層是物理層Kinect Sensor,在傳感器上方,系統還為驅動程序安裝軟件層,為運行時安裝軟件層,運行時的主要任務是以獨立方式提供大量數據,有原生API、受管理的API、.net API和WinRt API,系統通對API進行一次設計,讓開發者可以跨范圍構建多個應用程序。Kinect架構中需要了解系統體系結構、硬件規范和設計原則三個問題。體系結構已經介紹,其硬件規范主要從CPU、GPU、RAM、USB和OS方面來考慮。CPU建議i7,RAM建議4 G內存,GPU要求DirectX 11,USB3.0要求Intel或者Renesas Chipset,OS要求Windows8以上。在設計原則方面,通過將運行時與其他API整合在一起,能夠最大程度地降低每幀的地址分配,這樣才能緊密地在主循環中持續運行程序,而不加重存儲系統的負擔[8]。設計Kinect時,響應時間短、吞吐量高是十分重要的原則;再有,一定要數據公開,低級數據和高級數據都要公開,所以系統為開發者提供了骨架跟蹤、手部跟蹤以及基本紅外幀。實際代碼如下,首先是Kinect Sensor的分類情況,但實際上只有一個物理傳感器可用,這里選擇C#語言。

C#://調用KinectSensor.GetDefault就選擇了系統的默認值This.sensor=KinectSensor.GetDefault();//打開Kinect傳感器this.sensor.Open();//MaketheworldabetterplacewithKinect//關閉Kinect傳感器this.sensor.Close();
目前只支持每臺機器插接一個傳感器,如果調用關閉數據流,數據流就會關閉,就會停止使用CPU和GPU資源,當再使用數據時需要再次打開。體感器也可用同樣的方法打開,無需啟用新的樣例,體感器對象始終處于工作狀態。打開建立應用程序時,無需擔心體感器處于何種狀態,從Kinect Sensor得到的源是元數據,所以一旦有了讀出器(reader)就可以通過事件或者輪詢來訪問各幀。對于多數像XAML、JavaScript這樣的UI Framework apps而言,可以使用事件機制,因為這些apps將被寫入,通過對使用apps的人進行輪詢,即知游戲主循環方式。比如,DirectX app可以交替使用這些方法,其目的是使應用程序得到更多發揮。此外,在同一個源上,可以創建出多個讀出器,與現有的Kinect for Windows相比,這是一個貼心功能。讀出器可以暫停,可以縮減數據,還可以在短時間內關閉數據。如果應用程序中有不感興趣的新輸入或者Kinect數據的可執行程序段,當再次需要數據時,可以暫停讀出器,還可以對其取消暫停,而事件不會被觸發也不會被輪詢,所以不必擔心數據的獲取問題,以及此后的重置狀態問題[9]。使用讀出器的代碼如下(C#):

InfraredFrameReaderreader=sensor.InfraredFrame-Source.OpenReader();reader.FrameArrived+=InfraredReaderFrameArrived;
然后InfraredReaderFrameArrievd監聽來的每一幀,循環下去直到接收全部所有幀為止。通過從KinectSensor中獲得源,然后打開讀出器,以便訂閱已經就緒的幀事件,只需要訂閱已經到達的幀即可,當有幀進來時即回調,列表中的下一項是幀引用,在幀事件的數組變量中,實際發送的就是幀引用,這樣就可以得以訪問幀本身。在幀引用中,包含AcquireFrame和RelativeTime兩個關鍵內容,通過AcquireFrame可以訪問實際的幀。之所以不直接給出幀,原因在于,在許多系統中,事件都是非確定性的,是基于所在的線程而發生的,而不論UI線程是否正在發送信息,也不論事件做出反映的時間有多長,因此就有可能出現這種情況,當幀事件觸發時,代碼要求一個幀而此時該幀已經過期,而幀引用就可以根據相對時間找回這些幀,讓幀記錄時就知道,這樣如果幀依然可用的話,就可以獲得幀。但是,Kinect設計原則是盡量縮減每個幀的地址分配,如果有無限的活動幀,應用程序就會很快因為內存不足而癱瘓,這種幀引用模式可在需要的時候訪問幀,從而避免大量的地址分配,使應用程序易于適應實時數據。得不到幀就無法展開工作,由于處理的數據量很大,每秒要處理30個幀,因此編寫準確的代碼,進行正確的處置,制作的副本數量,提高循環的效率都很重要。通過相對時間可使開發者對不同的幀建立暫時的相關,每個源都使用relativeTime的相同基點,這樣就可以知道彩色幀或者紅外幀之間所需的時差是多少。編寫這種代碼很簡單,首先進行事件訂閱,并進行觸發,再從幀事件數組變量中獲取幀引用,在C#中,只需要嵌入一個using數據塊即可,這個using數據塊將自動處置幀,完成這個操作后,要準備好處理下一個幀[10]。具體代碼如下:

VoidirReader_FrameArrived(InfraredFrameReadersender,In-fraredFrameArrivedEventArgsargs){using(InfraredFrameframe=args.FrameReference.Acquire-Frame()){if(frame!=null){//Getwhatyouneedfromtheframe}}}
隨著Kinect體感技術的成熟,其應用層出不窮,從微軟早期的體感游戲向健康醫療康復、網絡等領域滲透[11]。基于Kinect技術開發出的體感訓練系統能夠節約更多的器材,可以幫助患者進行主動運動訓練和康復治療,適用于社區與家庭康復。本節主要從醫療護理領域、行為障礙的康復和醫療手術三方面應用來闡述Kinect體感技術應用的方式和未來前景。
3.1 醫療護理康復
在美國,為了能夠為空巢老人提供獨立自主的生活環境,美國家庭服務公司Americare和密蘇里州大學辛克萊護理學院通過合作開展了老虎場(Tiger Place)項目。老虎場其實是一個老人生活中心,通過在老虎場內布置Kinect網絡傳感器來監控老人的活動。基于Kinect數據可以推測出老人的步行時間、速度等信息,通過不間斷地觀察,一旦發現有老人的運動指數和正常值出現偏差,系統會及時給予反饋,同是這種基于Kinect的應用模式也受到了極大的關注。
加州大學圣地亞哥分校(UCSD)也將Kinect作為其醫療護理工具的一部分。該項目被稱作Lab-in-a-Box,是UCSD研究人員Nadir Weibel及其在圣地亞哥退伍軍人醫療中心的同事們的勞動成果。這套系統可以像保姆一樣,監測醫生是否對患者給予了足夠的“人文關懷”(而不是將時間過多花費在電腦屏幕上)。Kinect傳感器在該過程中扮演了重要的角色,因為其精神攝像頭可以準確地記錄下醫護人員的頭部和身體的運動。另外還有一個獨立的眼動追蹤設備會檢測醫生的凝視動作,而麥克風則會記錄下雙方的談話內容。最后,系統會對整個過程生成一份詳盡的報告,以確保在當今日益數字化的世界中的醫患關系更加融洽[12]。現在這套系統并沒有大規模的應用,也許在未來的某一天,人們會更習慣地接受它的存在,并部署在全世界各地的醫院。
3.2 行為障礙康復
英國南安普頓大學(UK’s University of Southampton)生物力學講師謝里爾·梅特卡夫(Cheryl Metcalf)正著手利用Kinect開發可以協助中風患者康復的系統。該系統根據特定場景設計針對性算法來協助康復醫生跟蹤病人的手指情況,基于算法進行訓練指導[13]。該系統最大的特點就是引入遠程醫療監控方式,患者不必花費高昂的住院費在家就可進行康復訓練,通過互聯網的方式進行監控,隨時跟蹤患者的康復進度。
全世界范圍內青少年運動障礙患者逐年增多,如何對運動障礙患者進行康復訓練,也成為科研學者關注的方向。美國的Chang等研發了基于Kinect體感技術的Kinerehab系統[14]。Kinerehab主要是通過Kinect內置的圖像處理技術檢測運動患者的運動信息,該系統初步試運行期間選擇兩例患者進行Kinerehab評測。一例是患有肌肉萎縮同時肌肉無力的16歲女性患者,另外一例是上肢僵化和先天性肌肉無力的17歲男性患者。測試過程中,讓兩位患者依次開展前舉、側舉和上舉的動作。Kinerehab系統對通過Kinect捕獲到的關節點信息和數據庫信息進行對比,計算患者動作的精確度。同時為增加系統的趣味性,Kinerehab系統增加“鯨魚甩尾唱歌”的形式進行反饋,Kinect識別出的患者動作精準度越高,鯨魚運動越活躍,相應地歌聲更加嘹亮,通過在顯示設備上觀察動畫可對患者進行指導。事實證明,通過Kinerehab干預的患者訓練精準度明顯提高,而無Kinerehab系統干預的患者,動作識別率較低。
在運動康復方面,結合虛擬現實技術,再利用Kinect的運動傳感器、攝像頭和話筒,通過這些技術為用戶創造一個虛擬卡通形象。借助該形象,用戶可與虛擬世界中的其他人物互動,而且面部表情和肢體動作也相當逼真,處于現實世界中的用戶可以通過各種動作和言語命令來控制該虛擬形象。鑒于這種方式未來可以開發很多類似的應用來提高患者的運動能力,患者置身于虛擬世界,通過虛擬世界里的交互運動,提高患者的行為障礙[15]。
3.3 醫療手術
當下很多外科手術都和數字圖像系統緊密結合,然而操作問題成為主刀醫生的難題。為解決該問題,微軟研究員通過結合Kinect、LCD顯示器和透視掃描儀,搭建手術影響無接觸交互平臺。該平臺能夠自主改變成像角度和區域,主刀醫生可以通過手勢對數字圖像進行放大、平移、旋轉、鎖定等操作。基于Windows的Kinect傳感器可放置在計算機顯示器上面或下面,外科醫生通過顯示器查看醫學影像。這種通過Kinect進行手術的模式,能夠大大降低手術的復雜度,同時有利于外科醫生更好地控制相關醫療信息。
Kinect正在深入到醫療手術領域,這套系統能夠使外科手術變得更快捷、更準確。經過充分測試和審核批準后,這套系統有望為患者帶來更好的療效。
Kinect體感設備可以進行深度圖像獲取、動態捕獲及麥克風輸入,可以通過Kinect for Windows SDK提供的軟件庫與應用程序進行交互,利用Kinect提供的SDK結合圖像處理和實時交互的相關算法開發出服務于健康醫療的應用,包括醫療康復系統、行為障礙康復系統,還有致力于提高手術準確率的醫療手術系統,幫助醫生對患者進行合理的評估,可以將該成果應用于社區和家庭醫療機構,對患者的早日康復起到十分重要的作用。在未來全民健康時代,通過Kinect運動捕獲搭建的技術開發出的人機交互系統可以部署在醫院、社區等,供患者和居民用于鍛煉,以提高全民素質。
[1] 王 毅.基于仿人機器人的人機交互與合作研究[D].北京:北京科技大學,2015.
[2] 倪 晨,邱 鵬,王 鋒,等.Kinect體感技術在人機交互中的應用研究[J].信息技術與信息化,2013(1):87-90.
[3] Nelson A J,Steggall E Q,Long D D E.Cooperative mode:comparative storage metadata verification applied to the Xbox 360[J].Digital Investigation,2014,11:46-56.
[4] 謝 亮,廖宏建,楊玉寶.基于Kinect的姿勢識別與應用研究[J].計算機技術與發展,2013,23(5):258-260.
[5] 李 萌.基于體感交互的沉浸式森林景觀展示研究[D].北京:北京林業大學,2013.
[6] 王松林.基于Kinect的手勢識別與機器人控制技術研究[D].北京:北京交通大學,2014.
[7] Rodrigo I,Alvaro S,Alfredo T,et al.Easy gesture recognition for Kinect[J].Advances in Engineering Software,2014,76:171-180.
[8] 黃露丹,嚴利民.基于Kinect深度數據的人物檢測[J].計算機技術與發展,2013,23(4):119-121.
[9] 張 昊.基于Kinect的人體行為分析及其應用[D].廣州:廣東工業大學,2014.
[10] 楊 濤.運動捕獲數據關鍵幀提取及檢索研究[D].杭州:浙江大學,2006.
[11] 況 鷹.基于Kinect運動捕獲的三維虛擬試衣[D].廣州:華南理工大學,2012.
[12] 馬 達.基于網絡的個人健康醫療服務平臺的研發[D].長春:吉林大學,2010.
[13] 李 青,王 青.體感交互技術在教育中的應用現狀述評[J].遠程教育雜志,2015,33(1):48-56.
[14] 可穿戴健康醫療設備前景廣闊[J].健康管理,2014(2):25-31.
[15] 羅 元,謝 彧,張 毅.基于Kinect傳感器的智能輪椅手勢控制系統的設計與實現[J].機器人,2012,34(1):110-113.
Research on Application of Kinect Motion Capture Technology in Health Care
LUO Zhang1,2,3,TAN Hai-bo1,3,LI Xiao-feng1,2,3,ZHAO He1,3
(1.Hefei Institutes of Physical Science,Chinese Academy of Sciences,Hefei 230031,China;2.University of Chinese Academy Sciences,Beijing 100049,China;3.University of Science and Technology of China,Hefei 230026,China)
Somatosensory interactive technology has a big significance in the field of human-computer interaction.It realizes the new experience without any handled device.As the latest interactive technology,how to combine Kinect motion capture and health care has been the focus of the current study.It can provide theoretical guidance and technical support for the group to develop rehabilitation training system for teenagers through researching the application of health care with Kinect motion capture technology and explore new application.Studying the documents in domestic and foreign and researching the Kinect V2 of somatosensary technology,the data source and programmable model for Kinect for Windows SDK are discussed,and the application and prospect of human motion capture technology based on Kinect in health care field are analyzed.
human-computer interaction;Kinect;motion capture;health care
2015-10-27
2016-02-25
時間:2016-08-01
國家科技支撐計劃課題(2013BAH14F01)
羅 章(1990-),男,碩士研究生,研究方向為計算機應用;譚海波,高級工程師,碩士生導師,研究方向為計算機應用和網絡安全;李曉風,博士生導師,研究方向為計算機網絡管理和計算機自動控制。
http://www.cnki.net/kcms/detail/61.1450.TP.20160801.0842.014.html
TP393.4
A
1673-629X(2016)08-0104-05
10.3969/j.issn.1673-629X.2016.08.022