个特征点,而Pn为使用者右手 在待测图像序列的第i帧图像中对应的20(作为预定数目的示例)个特征点。
[0080] 若使用者手势仅包含单只手,则捕获的待测图像序列中的每帧图像均是仅包含该 单只手的图像,从而通过以上处理之后能够得到该单只手的待测特征点序列,即01:4 = 1,2, · · ·,M}或{Pri,i=l,2, · · ·,M} 〇
[0081] 根据一种实现方式,动作识别单元330可以包括如图6所示的分割子单元610、匹配 序列确定子单元620、关联子单元630和动作名称确定子单元640。
[0082]如图6所示,分割子单元610可以针对每只手的待测特征点序列,根据预定时间窗 将该待测特征点序列分割为多个子序列,并获得每个子序列对应的平均位置。其中,每个子 序列对应的平均位置可以选取指定特征点(如手腕中点,或者也可为其他特征点)在该子序 列中的平均位置。其中,预定时间窗约为一个单手基本动作(即单手的握、抓等)从开始到结 束的时间,可根据经验值来设定,或可以通过试验的方法来确定,例如可以为2.5秒。
[0083]在一个例子中,假设待测特征点序列是在10秒内采集的,分割子单元610利用2.5 秒的时间窗可以将左手的待测特征点序列以及右手的待测特征点序列分别分割成4个子序 列。以左手的待测特征点序列{Ph,i=l,2,...,M}为例(右手的待测特征点序列{Pri,i=l, 2, ...,M}与其类似,这里不再详述),假设每秒采集10帧图像,则待测特征点序列对应的是 100帧图像,即M=100,也就是说,{Pli,i=l,2, . . .,M}包括100组特征点集Ph、Pl2、…、 ?11〇()。这样,通过上述2.5秒的时间窗,可以将{?乜4 = 1,2,...,}分割为{?乜4 = 1,2,..., 25}、{Pli,i= 25,26, · · ·,50}、{Pli,i= 51,52, · · ·,75}和{Pli,i= 76,77, · · ·,100}4个子序 列,且每个子序列各对应25帧图像,也即,每个子序列各包括25组特征点集。指定特征点选 取手腕中点,以子序列{?114= 1,2,...,25}为例(其余三个子序列与其处理相似,这里不 再详述),手腕中点在{Pli,i=l,2,. . .,25}对应的25组特征点集中的位置分别为位置Pl、 Ρ2、···、Ρ25,于是手腕中点在子序列{Pli,i=l,2, . . . ,25}中的平均位置为(ρ?+Ρ2+ ···+Ρ25)/ 25,作为子序列{Ph,i=l,2,. . .,25}对应的平均位置。
[0084] 然后,匹配序列确定子单元620可以针对每只手对应的每个子序列,将该子序列与 多个预设特征点序列中的每一个分别进行匹配,在多个预设特征点序列中选择与该子序列 的匹配程度高于预设的匹配阈值(该匹配阈值可以根据经验值来设定,或者也可以通过试 验的方法来确定)、并且最大的那个预设特征点序列,作为该子序列的匹配序列。其中,匹配 序列确定子单元620可以计算子序列与预设特征点序列之间的相似度,来作为二者之间的 匹配程度。
[0085] 其中,多个预设特征点序列可以预先设置在一个手部动作名列表中,该手部动作 名列表包括基本的手部动作,例如:挥、推、拉、张、合、转等,每个动作都有唯一的名称标识 以及用归一化的用手部特征点序列(即预设特征点序列)表示的模板。需要说明的是,对于 使用者的双手来说,每只手都具有一个上述的手部动作名列表。也就是说,对于左手来说, 左手的手部动作名列表(简称左手动作名列表)中包括的每个动作除了分别具有各自的名 称之外,还具有一个左手模板(即左手的一个预设特征点序列);对于右手来说,右手的手部 动作名列表(简称右手动作名列表)中包括的每个动作除了分别具有各自的名称之外,还具 有一个右手模板(即右手的一个预设特征点序列)。
[0086]例如,单只手的多个预设特征点序列分别记为序列Μ、序列A2、···、序列Ah,其中,Η为该单只手的上述多个预设特征点序列所包含的序列数,则在该单只手的手部动作名列表 中:动作1的名称标识为"挥"且对应的模板(即预设特征点序列)为序列Α1;动作2的名称标 识为"推"且对应的模板为序列Μ;…;动作Η的名称标识为"转"且对应的模板为序列心。 [0087]需要说明的是,对于每个子序列,并非一定能够在多个预设特征点序列中找到该 子序列对应的匹配序列。当对于单只手的某个子序列并未找到其匹配序列时,则将该子序 列的匹配序列记为"空",但该子序列的平均位置可以不为"空"。根据一种实现方式,若子序 列的匹配序列为"空",则将该子序列的平均位置设为"空";根据另一种实现方式,若子序列 的匹配序列为"空",该子序列的平均位置为该子序列中指定特征点的实际平均位置;根据 其他一种实现方式,若子序列的匹配序列为"空",将该子序列的平均位置设为"+ra "。
[0088]此外,根据一种实现方式,若子序列中不存在指定特征点(也即不存在该指定特征 点的实际平均位置),可以将该子序列的平均位置设为"+~"。
[0089]然后,如图6所示,关联子单元630可以将每个子序列对应的平均位置与该子序列 的匹配序列对应的动作名称相关联。
[0090] 这样,动作名称确定子单元640可以针对每只手,将该只手对应的各子序列的匹配 序列作为该只手对应的多个匹配序列,并将该多个匹配序列各自对应的动作名称(按时间 顺序排序后)作为该只手的多个动作名称。
[0091]例如,假设对于左手的待测特征点序列的多个子序列为01,4=1,2,...,25^ {Pli,i= 25,26, · · ·,50}、{Pli,i= 51,52, · · ·,75}和{Pli,i= 76,77, · · ·,100},分别在左手 的多个预设特征点序列中找到{?乜4 = 1,2,...,25}、{?乜4 = 25,26,...,50}、{?乜4 = 51,52, · · ·,75}的匹配序列依次为Ph'、P12'、P13',而未找到{Pli,i= 76,77, · · ·,100}的匹 配序列。假设Ph'、Pl2'、P13'在左手动作名列表中对应的动作名称依次分别为"挥"、"推"、 "拉",{Pli,i=l,2, · · ·,25}、{Pli,i= 25,26, · · ·,50}、{Pli,i= 51,52, · · ·,75}和{Pli,i= 76,77,. . .,100}各自的平均位置分别为pnu、pm2、pm3和pirn,则由此得到的左手的动作名称 和位置包括:"挥"(位置pnu); "推"(位置pm2); "拉"(位置pm3); "空"(位置"pm4")。需要注意 到是,在不同实施例中,pm4可能是真实位置值,也可能是"空"或"+~"等。
[0092]由此,通过分割子单元610、匹配序列确定子单元620、关联子单元630和动作名称 确定子单元640的处理,能够得到使用者每只手对应的多个动作名称(作为该只手的动作名 称,也就是说,该只手的动作名称),且每个动作名称分别关联有一个平均位置(作为该只手 的位置,"该只手的位置"中包括一个或多个平均位置,数量与动作名称的数量相同)。相比 于单单识别单个动作作为手势的识别技术来说,采用如图6所示的组成的处理所识别的双 手各自的多个动作和位置,提供了更灵活的组合方式,一方面使得手势的识别精度更高,另 一方面使得能够识别的手势更多样、丰富。
[0093]此外,根据一种实现方式,可以通过如图7所示的结构来实现手势识别单元340的 处理。如图7所示,手势识别单元340可以包括手势表存储子单元710和手势表匹配子单元 720〇
[0094]如图7所示,手势识别单元340可以将预定义的一个从两只手动作和位置两个要素 到手势的映射列表存储为预设手势表:每个映射的左端是一组动作名称对及每个动作名称 对的位置;每个映射的右端是一个手势HandSignal。
[0095] 其中,"一组动作名称对"包括多个动作名称对,每个动作名称对包括左手动作名 称ActNameieft和右手动作名称ActNameright,每个动作名称对的位置包括两只手的相对位 置。
[0096] 例如,在预设手势表中,映射一为{( "拉","空""拉","拉""空","合")、 ("空"彳空"川作为要素一八丨^^山^^^⑴^丄^…川相对位置^乍为要素二) 至IJ手势"开关"的映射;映射二为{( "拉","拉""张","张""空","空""空","空")}、 {(X5,y5),(X6,y6),(X7,y7),(xs,ys)}到手势"爆炸"的映射;等等。其中,每个动作对(如 ("拉","空"中左边的动作名称对应于左手动作,而右边的动作名称对应于右手动作。
[0097] 以映射一为例,(X1,yi)表示的是左手第一个动作"拉"与右手第一个动作"空"之间 的相对位置(即动作对("拉","空")中左手动作和右手动作对应的两只手的相对位置); (X2,y2)表示的是左手第二个动作"拉"与右手第二个动作"拉"之间的相对位置;(X3,y3)