国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android+Kinect的失能老人自助系統(tǒng)設(shè)計與實現(xiàn)

2017-05-02 05:39武乾坤
計算機技術(shù)與發(fā)展 2017年4期
關(guān)鍵詞:體感手勢骨骼

武乾坤,胡 冰,蘭 浩

(安徽工程大學(xué) 計算機與信息學(xué)院,安徽 蕪湖 241000)

基于Android+Kinect的失能老人自助系統(tǒng)設(shè)計與實現(xiàn)

武乾坤,胡 冰,蘭 浩

(安徽工程大學(xué) 計算機與信息學(xué)院,安徽 蕪湖 241000)

當(dāng)前社會老齡化現(xiàn)象越來越嚴(yán)重,更好地照顧失能老人是社區(qū)居家養(yǎng)老中亟需解決的問題。Kinect是微軟在2009年推出的使用于Xbox游戲機的體感控制設(shè)備,游戲玩家使用Kinect在不借助其他任何控制器的情形下實現(xiàn)和游戲機的交互。為此,基于Android+Kinect的技術(shù)原理,并運用了WPF設(shè)計編程用戶界面框架,設(shè)計并實現(xiàn)了針對失能老人的自助系統(tǒng),解決失能老人在手腳不方便的困難,只需通過幾個簡單的手勢動作實現(xiàn)對電腦的相應(yīng)控制。Kinect通過深度數(shù)據(jù)處理技術(shù)和骨骼追蹤技術(shù)對老人手勢動作進(jìn)行識別,把識別結(jié)果轉(zhuǎn)換為控制指令傳送到電腦,在電腦客戶端利用Android編程進(jìn)行Socket通信。實驗結(jié)果表明,該系統(tǒng)通過對手勢的接收與識別,能在電腦界面上分別實現(xiàn)健康訓(xùn)練、視頻通話、短信求助等功能,能方便失能老人更好地生活和更順暢地與外界交流,具有一定的創(chuàng)新性和較好的實用性。

Kinect;體感控制設(shè)備;用戶界面框架;深度數(shù)據(jù);骨骼追蹤;失能老人自助

0 引 言

隨著社會的進(jìn)步發(fā)展,人口老齡化問題日益加劇,社區(qū)居家養(yǎng)老問題在國內(nèi)日益受到重視。為解決失能老人的行動問題,研究實現(xiàn)了一種基于微軟體感攝像機Kinect和Android的失能老人自助系統(tǒng)。

Kinect是微軟2009年在E3大會上推出的體感攝像機,研究者對Kinect的應(yīng)用研究包括圖像分割、視頻跟蹤、手語識別、步態(tài)識別、三位空間建模、遙控機器人等等。陳濱等[1]利用微軟Kinect體感設(shè)備開發(fā)出一款利用手勢動作控制計算機的體感虛擬鼠標(biāo)軟件;朱明茗等[2]通過Kinect實現(xiàn)手勢控制PPT;肖杰等[3]借助Kinect體感攝像頭分析捕獲的實時場景深度數(shù)據(jù)跟蹤識別人體骨架關(guān)鍵信息;陳怡霖等[4]設(shè)計并實現(xiàn)了一種基于Kinect的遠(yuǎn)程運動康復(fù)系統(tǒng);王松林等[5]提出了一種基于圖像深度信息和人體骨骼信息的手指指尖識別方法和手掌輪廓檢測算法;楊熙年等[6]針對相似骨骼結(jié)構(gòu)之間的重定向提出了基于骨干長度比例的重定向算法;Rama Bindiganavale等[7]將圖像邊緣檢測中常用的二階導(dǎo)數(shù)的零交叉用來檢測運動中的重大變化,再利用視覺注意跟蹤和逆向運動學(xué)來加強約束,以提高重定向后目標(biāo)角色運動的真實性。

文中基于Android+Kinect的技術(shù)原理,并運用了WPF設(shè)計編程用戶界面框架,設(shè)計并實現(xiàn)了針對失能老人的自助系統(tǒng),解決失能老人手腳不方便的困難。

1 技術(shù)原理

Kinect是微軟發(fā)布的主要用于XBOX360電子游戲機制的體感周邊外設(shè)3D攝像機。與普通攝像機的不同之處在于,Kinect有一個紅外發(fā)射器和一個紅外接收傳感器,能提供包含數(shù)度數(shù)據(jù)流、彩色視頻流、原始音頻三大類的原始數(shù)據(jù)信息等[8],分別對應(yīng)骨骼跟蹤、身份識別、語音識別三個功能。骨骼跟蹤是Kinect體感操作的基礎(chǔ),它要求系統(tǒng)在允許的時延范圍內(nèi),快速根據(jù)骨骼關(guān)節(jié)構(gòu)建玩家的軀干、肢體、頭部甚至手指。當(dāng)Kinect通過紅外攝像獲取人體三維世界后,從深度圖像生成骨骼圖[9]。其實現(xiàn)原理為,首選分析比較接近Kinect的區(qū)域,接著逐點掃描這些區(qū)域深度圖像的像素,從深度圖像中將人體各個部位識別出來,能夠?qū)崿F(xiàn)人機的實時性交互[10]。鄭立國等也進(jìn)行了Kinect的實時性的動作捕捉[11]。

該項目中使用Kinect的紅外傳感器進(jìn)行動作捕捉,當(dāng)驅(qū)動Kinect時發(fā)射紅外掃描視場范圍,紅外接收器接收失能老人反射回來的紅外線,經(jīng)內(nèi)部芯片處理后輸出深度圖像數(shù)據(jù),RGB圖像傳感器就直接采集到彩色圖像數(shù)據(jù)。利用骨骼追蹤技術(shù)將人體準(zhǔn)確地標(biāo)定為20個關(guān)鍵點,并對這20個點進(jìn)行定位實時追蹤,實現(xiàn)對動作進(jìn)行指令轉(zhuǎn)換。Kinect將處理后的動作指令傳給與其連接的電腦客戶端,在電腦客戶端利用Android編程進(jìn)行Socket通信,對Kinect傳來的指令進(jìn)行數(shù)據(jù)處理,實現(xiàn)對失能老人進(jìn)行健康訓(xùn)練,幫助失能老人進(jìn)行通訊,遇特殊情況協(xié)助失能老人進(jìn)行求助等功能。

2 項目設(shè)計與實現(xiàn)

該項目設(shè)計思想為將Kinect連接到電腦,通過Kinect捕捉動作,客戶端程序做出識別并進(jìn)行處理,如圖1所示。

圖1 失能老人自助系統(tǒng)功能結(jié)構(gòu)圖

2.1 老人健康訓(xùn)練模塊

Kinect的空間定位精確,適用于廣泛的互操作領(lǐng)域[12],通過Kinect統(tǒng)計老人有規(guī)律的運動次數(shù)。其意義在統(tǒng)計提醒老人揮動手臂,避免老人時間長不運動。算法中當(dāng)老人持續(xù)運動量達(dá)到10次以上時開始累加,每天零點把數(shù)據(jù)清零。Elham Dolatabadi等提出的Kinect對于時空參數(shù)的測量[13]具有現(xiàn)實的意義。

運動情況判斷算法框圖如圖2所示。

圖2 運動情況判斷算法框圖

Kinect的SDK中用Joint類型來表示每個人的20個骨骼點。Joint類型包含JointType、Position、TrackingState三類,分別對應(yīng)骨骼點、骨骼點的位置信息、骨骼點的追蹤狀態(tài),TrackingState枚舉型中的Tracked表示正確捕捉到該骨骼點,NotTracked表示沒有捕捉到骨骼點,Inferred表示狀態(tài)不確定。通過輪詢模型來讀取骨骼事件,調(diào)用SkeletonStream類的OpenNextFrame()函數(shù)即可實現(xiàn)。

2.2 通訊模塊

失能老人通過特定的手勢與家人手機中安裝的特定app進(jìn)行視頻通話,實現(xiàn)實時通訊。當(dāng)失能老人面對攝像頭做出右手貼在耳邊打電話的手勢時,失能老人控制系統(tǒng)開始呼叫系統(tǒng)電腦服務(wù)端采用的固定IP地址。當(dāng)安卓端接收呼叫時便可以與老人實時通訊。效果圖如圖3所示。

圖3 失能老人求助視頻效果圖

PC客戶端調(diào)用Kinect for windows SDK 2.0中的ColorImageFrame類的OpenColorImageFrame()方法將采集到的視頻存入數(shù)組,可得到一個每一幀畫面的回調(diào)事件。取得畫面后,進(jìn)行簡單的壓縮,將圖像用Socket傳輸?shù)椒?wù)器上,并綁定到一個窗口的pictureBox上就可以了。

電腦服務(wù)端使用Socket進(jìn)行通信,將服務(wù)端bind到端口上,啟用Linten()監(jiān)聽方法,啟用了一個accept線程以實現(xiàn)端口監(jiān)聽。當(dāng)accept到一個客戶端時,會觸發(fā)OnClientAccepted事件調(diào)用AcceptSocket方法,自動創(chuàng)建一個ClientInfo對象,將一些相關(guān)屬性保存。

SocketServer類結(jié)構(gòu)如下:

public class SocketServer{

List clientList=null;

private SocketsocketServer=null;

private IPAddress serverIP;

privateint portNo=15693;

private IPEndPoint serverFullAddr;

Thread acceptThread=null;

Public SocketServer(string ServerIP){

this.serverIP=IPAddress.Parse(ServerIP);

}

public SocketServer(string ServerIP,int portNo){

this.serverIP=IPAddress.Parse(ServerIP);

this.portNo=portNo;

}

public void StartListen() {

{監(jiān)聽函數(shù);

實現(xiàn)取完整Socket地址,綁定端口,啟動監(jiān)聽,獲取連接,綁定事件等功能

}

安卓客戶端主函數(shù)類結(jié)構(gòu)如下:

public class MainActivity extends Activity implements SurfaceHolder.Callback, Camera.PreviewCallback{

private SurfaceView mySurfaceview=null;

private SurfaceHolder mySurfaceHolder=null;

private CameramyCamera=null;

設(shè)置服務(wù)器的端口地址以及視頻的屬性。

private StringpUsername="WQK";

private StringserverUrl="172.117.82.25";

private int serverPort=2000;

......

public void onStart(){

安卓設(shè)備重啟函數(shù):

重啟后實現(xiàn)設(shè)備的初始化;

super.onStart();

}

public void SendMessage(byte[] content) {

發(fā)送視頻信息;

}

發(fā)送命令線程:

class MyThread extends Thread {

public void run() {

try {

client=new Socket(serverUrl, serverPort);

}catch (UnknownHostException e) {

}catch (IOException e) {

}

}

}

2.3 求助模塊

老人通過特定的求助手勢動作,電腦客戶端的軟件通過調(diào)用相應(yīng)的函數(shù)給失能老人的緊急聯(lián)系人發(fā)送預(yù)設(shè)短信。當(dāng)Kinect檢測到鏡頭中的老人做出這樣的手勢動作時,會給預(yù)設(shè)的手機號碼發(fā)送一段短信,然后開始傳送鏡頭中的視頻到持有安卓的手機客戶端。當(dāng)持有安卓客戶端的人打開安卓軟件即可看到失能老人現(xiàn)在的生活情況。

在此模塊中主要對采集到的五個骨骼點進(jìn)行判斷。五個骨骼點分別為:肩部中心(ShoulderCenter)、左手(HandLeft)、左手腕(WristLeft)、右手(HandRight)、右手腕(WristRight)。采集這五個骨骼點的數(shù)據(jù)信息,主要代碼如下:

Joint ShoulderCenter=(from j in s.Joints where j.JointType==JointType. ShoulderCenter select j).FirstOrDefault();

Joint LeftHand=(from j in s.Joints where j.JointType==JointType. HandLeft select j).FirstOrDefault();

Joint LeftWrist=(from j in s.Joints where j.JointType==JointType. WristLeft select j).FirstOrDefault();

Joint RightHand=(from j in s.Joints where j.JointType==JointType. HandRight select j).FirstOrDefault();

Joint RightWrist=(from j in s.Joints where j.JointType==JointType. WristRight select j).FirstOrDefault();

經(jīng)過實驗分析得到,當(dāng)右手(左手)關(guān)節(jié)點Y軸上的距離比肩部中心關(guān)節(jié)點大于或小于0.45,并且左手(右手)關(guān)節(jié)點在Y軸上的距離比右手腕(左手)關(guān)節(jié)點大于或小于0.45,認(rèn)為用戶試圖發(fā)出求救信號的精確度最高。

用以下語句判斷失能老人是否發(fā)出求救信號:

if(Math.Abs(ShoulderCenter.Position.Y-rightHand.Position.Y)<0.45&&(Math.Abs(head.Position.Y-leftHand.Position.Y)<0.45&&!isForwardGestureActive&&!isBackGestureActive))

{… //調(diào)用相應(yīng)函數(shù)發(fā)送求救短信}

調(diào)用中國網(wǎng)建SMS短信通的API接口實現(xiàn)電腦客戶端給手機發(fā)短信。短信發(fā)送的接口地址:http://utf8.sms.webchinese.cn/?Uid=本站用戶名&Key=接口安全秘鑰&smsMob=手機號碼&smsText=要發(fā)送的內(nèi)容。將拼接完成的URL傳遞給中國網(wǎng)建提供的函數(shù)就可以把求助短信發(fā)送到用戶手機[14]。

2.4 人手動作捕捉

Kinect for Windows SDK中跟蹤了人體的20個骨骼點。分層圖如圖4所示[9]。

圖4 骨骼點分層圖

通過跟蹤到的人體20個骨骼點的信息判斷不同的手勢,調(diào)用相應(yīng)函數(shù),完成相應(yīng)的事件。

人手動作通過Kinect3D攝像頭捕捉,其主要代碼為:

Joint leftHand=(from j in s.Joints where j.JointType==JointType.HandLeft select j).FirstOrDefault();

Joint rightHand=(from j in s.Joints where j.JointType==JointType.HandRight select j).FirstOrDefault();

Joint head=(from j in s.Joints where j.JointType==JointType.Head select j).FirstOrDefault();

捕捉到人的左手、右手、頭的骨骼點信息,然后把骨骼點的手和頭的信息做比較,進(jìn)行相應(yīng)處理。

3 結(jié)束語

經(jīng)設(shè)計實踐表明,此系統(tǒng)極大地改善了用戶的體驗,使得人機交互方式更加人性化,是人機交互和醫(yī)療保健領(lǐng)域的一次獨特的應(yīng)用創(chuàng)新,有廣闊的應(yīng)用前景,推廣使用能產(chǎn)生顯著的社會效益。在描述和證明了Kinect傳感器獲取運動的潛力,并與目前市場上其他同類產(chǎn)品進(jìn)行對比,Kinect傳感器的低成本、易于使用SDK和能夠同時采集身體姿勢的特點,使得利用它進(jìn)行非入侵式測量身體有用的姿勢具有巨大潛力。

[1] 陳 濱,時 巖.基于Kinect的體感虛擬鼠標(biāo)研究與開發(fā)[J].軟件,2016,37(2):46-49.

[2] 朱明茗,景 紅.基于Kinect的PPT控制系統(tǒng)研究[J].中國教育信息化,2014(9):80-81.

[3] 肖 杰,李秀鵬,史會余,等.基于Kinect的跨平臺人機交互系統(tǒng)的研究和實現(xiàn)[J].電腦編程技巧與維護,2016(2):20.

[4] 李 明,陳怡霖,潘曉英.遠(yuǎn)程醫(yī)療中Kinect點云數(shù)據(jù)的實時傳輸[J].西安郵電大學(xué)學(xué)報,2016,21(1):33-37.

[5] 王松林,徐文勝.基于Kinect深度信息與骨骼信息的手指尖識別方法[J].計算機工程與應(yīng)用,2016,52(3):169-173.

[6] 楊熙年,張家銘,趙士賓.基于骨干長度比例之運動重定目標(biāo)算法[J].中國圖象圖形學(xué)報,2002,7(9):871-875.

[7] Bindiganavale R,Badler N I.Motion abstraction and mapping with spatial constraints[C]//Modelling and motion capture techniques for virtual environments international workshop.[s.l.]:[s.n.],1998:70-82.

[8] 吳國斌,李 斌,閻驥洲.Kinect人機交互開發(fā)實踐[M].北京:人民郵電出版社,2013 .

[9] 石曼銀.Kinect技術(shù)與工作原理的研究[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報,2013,29(3):83-86.

[10] Khoshelham K,Elberink S O.Accuracy and resolution of Kinect depth data for indoor mapping applications[J].Sensors,2012,12(2):1437-1454.

[11] 鄭立國,羅江林,許 舸.基于Kinect的動作捕捉系統(tǒng)的實現(xiàn)[J].吉林大學(xué)學(xué)報:工學(xué)版,2013(S1):249-255.

[12] Hsu J.The potential of Kinect as interactive educational technology[C]//Proceedings of economics development & research.[s.l.]:[s.n.],2011:334-338.

[13] Dolatabadi E,Taati B,Mihailidis A.Concurrent validity of the Microsoft Kinect for Windows v2 for measuring spatiotemporal gait parameters[J].Medical Engineering and Physics,2016,38(9):952-958.

[14] SMS短信通API下行接口參數(shù)[EB/OL].2006.http://www.smschinese.cn/api.shtml.

Design and Realization of an Android+Kinect-based Self-help System for Disabled Seniors

WU Qian-kun,HU Bing,LAN Hao

(College of Computer and Information,Anhui University of Engineering,Wuhu 241000,China)

As the aging problem becomes more and more serious nowadays,it is urgent to take better care of the disabled elders in the community.The Kinect,launched by Microsoft in 2009,is a motion-control device applied to X-Box,with which game players can realize the interaction with the game machine without the help of other controllers.Based on the technical principle of “Android+Kinect”,the self-help system with programming user-interface framework using WPF has been designed and implemented for disabled seniors.This system enables the disabled elders to control computers with several simple gestures.By means of data processing and skeletal tracking technique,Kinect has been firstly employed to identify the elders’ gestures,by which control instructions can be converted from identification results of gestures and then transmitted to computer via Socket communication on computer client with Android.Experiment results show that the constructed self-help system is endowed with the functions of rehabilitation training,video communication and short message for help convenient for the higher level of elders’ life and smooth communication with others,and also show that this system is somewhat innovative and practicable.

Kinect;motion-control device;WPF;depth data;skeletal tracking;disabled elders self-help

2016-05-09

2016-09-08

時間:2017-03-07

國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練項目(201310363114)

武乾坤(1994-),男,研究方向為虛擬現(xiàn)實技術(shù);胡 冰,碩士,助理研究員,研究方向為虛擬現(xiàn)實技術(shù)、大數(shù)據(jù)。

http://kns.cnki.net/kcms/detail/61.1450.TP.20170307.0921.030.html

TP302

A

1673-629X(2017)04-0135-04

10.3969/j.issn.1673-629X.2017.04.030

猜你喜歡
體感手勢骨骼
做家務(wù)的女性骨骼更強壯
體感交互技術(shù)在腦卒中康復(fù)中的應(yīng)用
三減三健全民行動——健康骨骼
人體體感感知機械手設(shè)計與實現(xiàn)
挑戰(zhàn)!神秘手勢
引入體感控制技術(shù)推動校園足球發(fā)展
非觸控式的體感機械臂交互控制系統(tǒng)研究
勝利的手勢
認(rèn)手勢說數(shù)字
骨骼是如何生長的
彭山县| 上虞市| 万盛区| 海兴县| 桑植县| 安新县| 阜宁县| 千阳县| 云霄县| 阿荣旗| 璧山县| 大埔区| 白玉县| 旌德县| 景泰县| 常州市| 鄂州市| 廉江市| 民丰县| 南平市| 苍南县| 封开县| 德庆县| 开阳县| 广汉市| 贺州市| 蒙自县| 铜梁县| 阳谷县| 赞皇县| 呼图壁县| 黑龙江省| 格尔木市| 鹤峰县| 太仆寺旗| 崇信县| 敦化市| 韶关市| 咸丰县| 屯昌县| 普格县|