一种面向多设备的手势交互方法_2

文档序号:8298798阅读:来源:国知局
设备支持的手势交互类型匹配手势集,若交互设备支持触摸交互,令Gi =GiU G t_h;若交互设备支持隔空交互,令Gi= GiU G也;若交互设备支持辅助交互,且辅助设备为交互笔,令Gi= GiH Gtrace;
[0027]2.3从交互设备的驱动程序获取识别到的手势参数类型,若驱动程序输出的参数仅有线参数,令Gi= G i n G line;若驱动程序输出的参数仅有面参数,令G i= G i n Gsurface;
[0028]第三步,应用程序进行手势映射,方法是:
[0029]3.1根据应用程序的应用手册确定该应用程序的功能集合;
[0030]3.2为应用程序的功能集合中的元素分别映射相应的手势,如果应用程序有源代码或二次开发接口,则执行3.2.1,否则执行3.2.2:
[0031]3.2.1为应用程序加入功能与手势相映射的源代码或二次开发代码,转第四步;
[0032]3.2.2通过基于鼠标事件的多点触摸手势交互中间件进行映射,执行第四步;该中间件公开于申请号为[201110329438.0]的发明专利
[0008]段。
[0033]第四步,多设备进行手势识别,方法是:
[0034]4.1设备Em+1,-,Ej,…,En并行进行手势识别,j取值为区间[m+1,η]中的整数,Ej进行手势识别的过程是:
[0035]4.1.1 以三元组定义触摸手势参数 TouchParaj= (TouchState,Sum,TouchValue[]),其中TouchValue[]为五元数组,对应有序集合TPARA中的五个参数;以四元组定义触摸手势识别结论 TouchResultj= (TouchState, Sum, TouchPara,Value);将TouchParaj和TouchResult」的所有元素置空;
[0036]4.1.2Ε」运行专属的驱动程序,捕捉手部数据,输出手势参数,写入TouchPara」,若TouchValue []中的元素没有输出值,则维持空值;
[0037]4.1.3对触摸手势参数进行识别,得到识别出的手势编号Gestp方法是:
[0038]4.1.3.1 令临时参数 temp = O ;
[0039]4.1.3.2 若 TouchPara」.TouchValue [temp]不为空,则将有序集合 TPARA 的第temp 个元素写入 TouchResultj.TouchPara,令 TouchResultj.TouchPara = TouchParaj.TouchValue [temp],转 4.1.3.4 ;否则令 temp = temp+1 ;
[0040]4.L 3.3 若 temp〈5,转 4.1.3.2 ;否则,转 4.6 ;
[0041]4.1.3.4识别结论TouchResultj的四个元素与触摸手势的除Tid外的四个元素——对应,将识别结论TouchResultj的取值与手势集G 的手势取值逐项对比,若四个元素的取值与匕中某一个手势的四个对应参数取值完全相同,则将该手势的Tid值写入Gestp 转 4.L 4 ;否则,转 4.6 ;
[0042]4.1.4将Gestj传送给设备E」上当前活动的应用程序,将该手势映射为设定的功會K ;
[0043]4.2确定一台计算机主机负责隔空手势的整合,并将交互设备E1, ???3?1与主机通过局域网连接;交互空间中同一时间发生的触摸手势操作可以有多个,同一时间发生的隔空手势操作仅有一个;
[0044]4.3设备E1,…,Ek,...,Em并行进行手势识别,k取值为区间[l,m]中的整数,Ek进行手势识别的过程是:
[0045]4.3.1 以四元组定义隔空手势参数 AirParak= (Shape, AirValue [], AirTrend[],AirTrace []),将 AirParak.Shape 的值简记为 ks,数组 AirValue []、AirTrend []和AirTrace[]的长度为Pnumks;以五元组定义隔空手势识别结论AirResult k= (Shape,AirPara, AirValue,AirTrend, AirTrace),将识别出的手势编号记为AirGestk;以四元组定义传输结论 TranResultk= (k,ParaNum, AirGest k, TransTime),其中参数数量 ParaNum指得到的形状参数的数量,TransTime指向主机发送传输结论时的系统时间,将AirParak、AirResultk和TranResult k的所有元素置空;
[0046]4.3.2Ek运行专属的驱动程序,捕捉手部数据,输出手势参数,写入AirPara k,若AirValue[]、AirTrend[]、AirTrace[]中的元素没有输出值,则维持空值;
[0047]4.3.3对隔空手势参数进行识别,得到识别出的手势编号AirGestk,方法是:
[0048]4.3.3.1令临时参数tempi = 0,将AirParak.AirTrace []中的非空元素数量写入ParaNum ;
[0049]4.3.3.2 若 AirParak.AirTrace [tempi]不为空,则将有序集合 APARAks的第 tempi个元素写入 AirResultk.AirPara,令 AirResultk.AirTrace = AirParak.AirTrace [tempi],转 4.3.3.10 ;否则令 tempi = templ+1 ;
[0050]4.3.3.3 若 templ〈Pnumks,转 4.3.3.2 ;否则,转 4.3.3.4 ;
[0051]4.3.3.4 令 tempi = O,将 AirParak.AirTrend[]中的非空元素数量写入 ParaNum ;
[0052]4.3.3.5 若 AirParak.AirTrend[tempi]不为空,则将有序集合 APARAks的第 tempi个元素写入 AirResultk.AirPara,令 AirResultk.AirTrend = AirParak.AirTrend[tempi],转 4.3.3.10 ;否则令 tempi = templ+1 ;
[0053]4.3.3.6 若 tempKPnumks,转 4.3.3.5 ;否则,转 4.3.3.7 ;
[0054]4.3.3.7 令 tempi = O,将 AirParak.AirValue []中的非空元素数量写入 ParaNum ;
[0055]4.3.3.8 若 AirParak.AirValue [tempi]不为空,则将有序集合 APARAks的第 tempi个元素写入 AirResultk.AirPara,令 AirResultk.AirValue = AirParak.AirValue [tempi],转 4.3.3.10 ;否则令 tempi = templ+1 ;
[0056]4.3.3.9 若 templ〈Pnumks,转 4.3.3.8 ;否则,转 4.6 ;
[0057]4.3.3.10识别结论AirResultk的五个元素与隔空手势的除Aid外的五个元素一一对应,将识别结论AirResultk的取值与手势集G k中的手势取值逐项对比,若五个元素的取值与Gk中某一个手势的五个对应参数取值完全相同,则将该手势的Aid值写入AirGestk,否则,转 4.6 ;
[0058]4.3.4 将 k,ParaNumi AirGestk, TransTime 四个值写入 TranResultk,将TranResultk传输到主机;
[0059]4.4主机在E1,…,Em中确定对隔空手势操作进行响应的设备E act?下标act为对隔空手势操作进行响应的设备的编号,方法是:
[0060]4.4.1求取act的值,有两种方法:
[0061]4.4.1.1比较接收到的几组TranResultk的TransTime值,将TransTime值最小的TranResultk的 k 值写入 act ;
[0062]4.4.1.2比较接收到的几组TranResultk的ParaNum值,若ParaNum值最大的TranResultk只有一个,则将ParaNum值最大的TranResult k的k值写入act ;若ParaNum值最大的TranResultk多于一个,比较ParaNum值最大的几个TranResult k的TransTime值,将TransTime值最小的TranResultk的k值写入act0
[0063]4.4.2主机向Eac:t发送信息,由其负责响应隔空手势操作;
[0064]4.5设备Eac:t将AirGestac^t传送给当前活动的应用程序,将该手势映射为设定的功會^ O
[0065]4.6 结束 D
[0066]本发明的有益效果是,当家庭、教室、会议室等场所中存在多种支持手势交互的设备时,多设备之间可以无冲突的实现手势识别。
【附图说明】
[0067]下面结合附图和实施例对本发明进一步说明。
[0068]图1是本发明面向多设备的手势交互方法的总体流程图。
[0069]图2是本发明步骤1.4中各手势子集的关系。
[0070]图3是本发明轨迹手势与应用程序功能匹配的举例。
【具体实施方式】
[0071]在图1中,一种面向多设备的手势交互方法,包括以下步骤:
[0072]弟一步,生成通用手势集G,G = GttjuehU G ail?,其中Gttjueh指触換手势集,G ail?指隔空手势集:
[0073]1.1生成触摸手势集Gt_h,方法是:
[0074]1.1.1用由Pid, State,Coordinate,Time组成的四元组来定义触摸点Point,Point = (Pid, State,Coordinate,Time),其中Pid取值为自然数,指检测到的多个触摸点中该触摸点的序号;State指触摸点的状态,取值为集合STATE中的元素,集合STATE ={Appear,Move,Leave},Appear、Move、Leave分别表示触摸交互设备检测到触摸点出现、在移动和离开!Coordinate为二元实数组,指触摸点坐标;Time指触摸点对应的系统时间;
[0075]1.1.2设定距离阈值Ltl与时间阈值T 0,只有距离小于Ltl且触摸时间间隔小于Ttl的两个点才属于同一手势,属于同一手势的点组成触摸点集;一个触摸点集生成一个触摸手势,用五元组定义触摸手势 TouchGesture = (Tid, Touc
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1