Print

发布时间: 2016-10-25
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.20161010
2016 | Volumn 21 | Number 10




    图像分析和识别    




  <<上一篇 




  下一篇>> 





面向智能家居的挥手识别算法
expand article info 杨硕, 吉爱萍
沈阳化工大学计算机科学与技术学院, 沈阳 110142

摘要

目的 用手势控制家电是智能家居发展的趋势之一,传统的静态手势识别算法难以适应复杂的居家环境,特别当使用广角相机或环境干扰大时,为此提出一种动态的挥手识别算法,可以对视频序列中的挥手动作做出响应,以达到控制家电的目的。 方法 挥手动作具有周期性且频率相对稳定,算法首先调整长滤波器和短滤波器使其检测到视频内周期性运动的区域,然后利用人手识别算法对周期性运动区域进行验证并确认人手。 结果 通过与主流的手势识别算法的对比,在复杂环境下,本文算法将成功次数提高了3%,误触发次数降低了44%,响应时间也降低了近0.4 s。 结论 实验结果表明,算法能够满足实际应用需求。此外,算法不基于运动目标检测,运算量极低,可以在较高的图像分辨率下实时运行,并能被移植到嵌入式平台下。

关键词

智能家居; 人机交互; 手势识别; 挥手识别; 周期性运动目标检测

Hand-wave recognition algorithm for smart home system
expand article info Yang Shuo, Ji Aiping
College of Computer Science and Technology, Shenyang University of Chemical Technology, Shenyang 110142, China
Supported by: Foundation of Liaoning Educational Committee (L2014171)

Abstract

Objective Controlling household appliances by hand gesture is one the trends in smart home systems. Hand-gesture recognition is a developing field in human-computer interaction. In the past decades, many gesture-recognition algorithms were developed for tracking and recognizing various hand gestures. These algorithms can be categorized into two classes: static and dynamic based. Unfortunately, both types have high requirements for camera devices and environments, such as the need for RGB cameras, fixed scenes, and so on, which cause difficulty in adapting to complex home environments, especially when using wide-field cameras or experiencing heavy interferences. This paper proposes a dynamic hand-wave recognition algorithm that can respond to moving objects periodically in video sequences. Method A hand wave is periodic, and its frequency is relatively stable. This feature makes hand recognition possible in large scenes provided by wide-field camera. To detect this action, hand wave is regarded as a periodically moving object in this paper, and a detection algorithm that can respond to periodically changing pixels is proposed. Detection is achieved through short (SF) and long filters (LF). SF smoothens several neighbors of the current video frame only, while LF considers more frames. By comparing SF and LF outputs, current pixel state, i.e., whether or not they are periodically changing, can be determined. By connecting these pixels, the periodically moving object (area), which is the hand-wave candidate, is confirmed. Then, sophisticated hand-gesture recognition algorithm is applied to confirm that the candidate is indeed the hand. In practice, finding small objects in a high-resolution image that contains a complex background is one of the most challenging problems in computer vision. However, if the moving state of the object, such as periodical moving, is known in advance, detection becomes much easier. Thus, static hand gestures are not considered in this paper. Result To fully evaluate the performance of the proposed algorithm, it is applied while turning on or off the light in a room, and five challenging scenes, including actual household environment, are used. An experimenter waves his hand in front of the camera until light is triggered (whether switching on or off); the waving action lasts more than four seconds. If the light is triggered within four seconds, one is added to success time. Otherwise, if the light is triggered by other actions, such as talking or walking, one is added to false trigger time. Experimental results show that compared with state-of-the-art algorithms, the proposed algorithm increases its success times by about 3% and decreases the false trigger time and computation cost (time) by 44% and 0.4 seconds, respectively. Conclusion Results show that the proposed method meets the needs of practical application. In addition, the method is not based on moving-object detection algorithm and has low computation costs, which means that it can run under high-resolution condition efficiently or migrate to embed system conveniently.

Key words

smart home; human-computer interaction; hand gesture recognition; hand-waving recognition; periodically moving object detection

0 引 言

挥手挥手:手的左右来回摆动。作为人类特有的动作,在日常生活中被频繁使用。人的手势可以分为静态手势和动态手势[1]。挥手作为一种简单的动态手势,传递的信息非常简单,但与其他手势相比,挥手具有容易识别,不易产生歧义的优点。在计算机系统的应用中,挥手动作可以简化交互过程,使人机交互变得更加简单。

随着人们生活水平的提高,越来越多的人开始关注智能家居技术,本文在此背景下,将挥手识别应用在智能家居中开关灯的自动控制。家庭生活中,电灯是使用最频繁的电器设备之一,与其他技术手段相比,挥手开灯有如下优点:其一,不需要额外设备,如手机、遥控器等;其二,可靠性高,不产生噪声。表 1列举了智能家居中常见的灯光控制算法与挥手控制算法相比较的优缺点。

表 1 智能家居中常见开关灯方法比较
Table 1 Comparison of commonly used light control methods in smart home system

下载CSV
方法优点缺点
声音识别结构简单,由于声音非直线传播,安装不受限制可靠性受麦克风质量影响大;控制时要发出声音,夜间影响他人休息
遥控(手机或遥控器)实现最简单,可靠性最高 需要携带额外设备,使用不方便
挥手识别室内情况下做挥手动作,不容易与其他动作产生干扰,可靠性高;同时较符合人的习惯,使用方便计算量较大,需要安装广角或鱼眼摄像头,安装位置受限制

挥手识别算法的应用不只限于灯光的控制,其他类型的开关量控制,如:电机的启停、计算机软件的运行/关闭,家电的控制等都可以用挥手实现控制。但是,挥手开灯是一项具有挑战性的工作,挥手识别算法面对的是室内复杂场景,与可控的固定场景相比,算法设计方面的难点主要体现在:

1) 需要广角或鱼眼摄像头,要尽可能多的覆盖室内场景,以扩大检测范围;

2) 考虑到主要在夜间使用,需要摄像头支持红外功能,且算法不能将颜色作为特为主要特征;

3) 能够抵抗除挥手外其他动作的干扰,特别是人体常见的周期性动作,如擦地,抖腿等;

4) 能抵抗剧烈光照变化带来的干扰,如夜晚看电视时,电视切换场景导致的强烈光线变化等。

由于控制环境的特殊性,挥手识别算法的设计与常见的手势识别算法不同,目前的手势识别算法包括静态手势识别和动态手势识别两种。静态手势识别[2-4]的基本原理是:首先要将人手接近摄像头采集到静态图像,再提取特征对手势分类和识别,这类算法通常借助几何和颜色特征以及基于训练集的分类器,且需要固定场景。动态手势[5-8]则通过视频分析方法,获得手的运动轨迹和手势变化趋势,经过分析或分类后得到结果,一般需要借助运动目标检测算法,且同样需要相对固定场景,或者要求图像中人手像素所占的比例要大于背景像素。这两种算法不适合智能家居控制,主要原因是:

1) 在广角镜头下,人手在图像中所占面积很小,需要首先在场景内进行人手检测和定位,在没有深度信息前提下,在图像中定位人手是极其困难的;即使可以定位人手,同样由于广角镜头,人手的分辨率会很小,再加上噪声和复杂背景的干扰,会严重降低传统手势识别算法的成功率。

2) 多数手势识别算法所需要的颜色特征在夜间无法提取。

3) 需要固定场景,特别是基于运动目标检测的动态手势识别算法,当背景存在大量运动目标时或面对强烈光照变化干扰时,算法难以适应这种快速变化的环境。

4) 多数算法基于迭代或数学分解变换,运算量大,在嵌入式平台下难以实现,降低了算法的实用性。

此外,部分研究者利用微软的XBox Kinect平台[9-11]实现人体的动作捕捉和手势识别并取得了很好的效果。Kinect利用激光散斑图,能够提供场景的深度信息,大大提高了识别成功率,但Kinect作为XBox体感游戏的重要部分,主要用于娱乐,虽然具有较高的性能,但核心算法不开放,设备价格不菲,其摄像机镜头也是固定的,无法更换,因此不适合用于本文的挥手识别算法。

本文算法基于周期性运动目标检测,人手的左右来回挥动带有强烈的周期性,算法首先通过周期性运动检测算法得到周期性运动区域,再去验证人手,这与传统算法先检测人手再对动作分类的做法相比,具有实时性高和成功率高的优点,能够将算法方便地移植在嵌入式的平台下,使算法更具实用性。

图 1 挥手识别算法流程
Fig. 1 Flowchart of the proposed hand-waving recognition algorithm

1 本文算法

1.1 问题描述与相关背景

本文算法的流程如图 1所示。本文算法分为两个部分:周期性变化区域检测和人手识别。人的挥手动作带有明显的周期性,大致在24次/s。首先使用长滤波器(LF)和短滤波器(SF)对视频帧滤波,得到周期性变化的像素。其基本原理是:短滤波器SF沿时间轴滤波,它仅平滑当前几帧,类似于高斯滤波器,用于降低CCD噪声导致的像素跳变现象。长滤波器LF同样沿时间轴滤波,但考虑更多的帧。仔细选择LF的参数,使运动中的手的像素和背景像素相互混合以致模糊,并保持混合后的像素值相对稳定,不随时间变化而跳变。这样,随着挥手动作的持续,SF的像素值与LF的像素值的大小关系就会呈现周期性变化,通过记录变化的频率和持续时间,如果结果符合人挥手运动的规律,那么该像素就是“周期性变化像素”。然后,将图像中分布密度较高的周期性变化像素形成候选区域。在大多数情况下,该候选就是挥动中的人手,为了提高鲁棒性,对候选区域进行了简单的验证:抽取候选的形心和梯度直方图(HOG)特征,与人手模板进行比对,最终确定人手。

对于周期性运动目标检测算法,文献[12]提出了一种基于Hu矩和傅里叶变化的算法,用于人体行为分析,该算法效果较好但计算量较大且仅适合固定场景;文献[13]提出一种基于概率统计的周期性运动目标检测算法,能够对呈现特定概率分布的运动目标作出好的响应,对于类似挥手这样周期性运动的目标,该文没有给出实验效果。文献[14]提出了一种基于累积图的周期性运动目标检测算法,它从每帧图像中选择若干个长度为图像宽度的像素行(累积线),这样,k帧过后,这些像素行将累积成一幅宽高为n×k的累积图像(n为视频帧的宽度)。由于周期性运动目标会在累积图中呈现“正弦”图样,这样,周期性运动就可以通过傅里叶运算检测到。该算法可以检测到呈周期性运动的任意物体,文中以肤色为特征选择累积线,并实现了挥手识别,取得了较高的识别成功率,但该算法计算量较大,且累积线的选择标准对效果影响很大。

1.2 周期性变化区域检测

1.2.1 图像预处理

图像预处理的目的是增强图像质量,方便后序处理,一般是用3×3的高斯滤波器在空间域上对单帧图像降噪。这种预处理步骤不是必须的,如果摄像头质量较好或对实时性要求较高,预处理可以不做。相反,在图像质量不佳的环境下,可以使用较大模板的高斯滤波器或使用中值滤波、灰度均衡等技术进行预处理,以提高图像质量。

1.2.2 长滤波器和短滤波器

使用长滤波器LF和短滤波器SF是算法的核心,具体定义为

${\bf{L}}\left( {x,y} \right) = \left( {1 - {w_L}} \right){\bf{L}}\left( {x,y} \right) + {w_L}{{\bf{F}}^t}\left( {x,y} \right)$ (1)

${\bf{S}}\left( {x,y} \right) = \left( {1 - {w_S}} \right){\bf{S}}\left( {x,y} \right) + {w_S}{{\bf{F}}^t}\left( {x,y} \right)$ (2)

式中,Ft(x,y)为当前视频帧,以灰度形式存储;L(x,y)为长滤波器输出,wL为对应权值;S(x,y)wS为短滤波器输出和对应权值。LF和SF与运动目标检测算法中的背景更新算法类似,只是这里并不用于运动目标检测。式(1) (2) 中,wL的取值远小于wSwS一般取0.850.95,以能达到去噪效果且不会导致运动图像虚化为标准,本文实验环境下,wS取值为0.9。wL主要取决于使用者的挥手频率,一般取0.050.15,挥手频率较快,wL取值较大,反之较小,本文取0.1。图 2为两种滤波器的输出效果(图像中的手处于挥动状态)。图 2(a)为LF的输出,选择合适的长滤波器权值wL会使得滤波输出与手的自然挥动频率相“协调”,使得手的像素和背景像素相互混合,理想状态下,图 2(a)中白圆点位置指示的挥手区域中的像素值应符合

${{\bf{L}}_{{\rm{F - B}}}}\left( {x,y} \right) = {{{{\bf{F}}^t}\left( {x,y} \right) + {\bf{B}}\left( {x,y} \right)} \over 2}$ (3)

式中,B(x,y)为图像背景。

图 2 通过LF和SF检测周期性变化像素点
Fig. 2 Detecting periodically varying pixel through LF and SF filters ((a) output from LF; (b)output 1 from SF; (c)output 2 from SF)

图 2(b)(c)为手挥动过程中SF的输出,由于wS的取值较大,式(2) 中,视频帧占的权重更大,因此图像没有虚化。通过比较图 2(a)-(c)中白圆点位置像素值,令图 2(b)中白圆点位置SF的输出值SF(x,y)为背景像素,即SF(x,y)=B(x,y);图 2(c)白圆点位置为前景(手)的像素值,即此时SF(x,y)≈Ft(x,y)。由式(3) 可知,SF与LF的输出值的大小关系会随着手的挥动发生周期性变化,假设SF(x,y)>B(x,y),图 2(b)SF(x,y)<LF-B(x,y),图 2(c)SF(x,y)>LF-B(x,y)。

1.2.3 周期性变化像素检测

周期性变化像素定义为:单位时间内像素值变化的次数大于某阈值且跳变能维持一定时间的图像像素。具体的算法如下:

输入:图像帧Ftt为帧数,图像分辨率大小为m×n

输出:周期性变化像素集合P={p1,p2,…,pn}。

1) 用第1帧图像的值Ft=1初始化长滤波器L和短滤波器S,即L=S=Ft=1

2) 定义矩阵NSkip sFN,初始化为0,分别用于记录图像像素跳变次数和跳变持续的时间(持续的帧数)。并定义矩阵PreSkip,用于记录上次像素发生跳变的时间(帧数)。

3) 用当前帧Ft更新两个滤波器

${\bf{L}} = \left( {1 - {w_L}} \right){\bf{L}} + {w_L}{{\bf{F}}^t}\left( {长滤波器} \right)$

${\bf{S}} = \left( {1 - {w_s}} \right){\bf{S}} + {w_s}{{\bf{F}}^t}\left( {短滤波器} \right)$

然后进入步骤4) 循环。

4) 对于当前帧图像中的每一个像素(x,y),执行以下步骤(1) -(4) 循环:

(1) 如果t-PreSkip (x,y)大于阈值θFmin 说明像素(x,y)长时间没有发生变化(跳变),则更新

${N^{Skip}}\left( {x,y} \right) = {N^{Skip}}\left( {x,y} \right) \times {\lambda _{dec}}$

${s^{FN}}(x,y){\rm{ }} = {s^{FN}}(x,y) \times {\lambda _{dec}}$

式中,阈值θFmin的取值为5,本文的摄像机的帧率为15帧/s,5帧对应0.4 s左右的时间。参数λdec为衰减系数,这里取值0.2,含义是当像素长时间(超过5帧)未发生跳变时,算法没有将NSkip(跳变次数)和sFN(持续时间)立刻清零,而是使用系数λdec逐渐衰减,这样可以防止由丢帧或干扰导致的周期变化像素检测不到的问题。

(2) 步骤(1) 的另一种情况,如果t-PreSkip(x,y)小于等于θFmin,则更新

${s^{FN}}(x,y) = {s^{FN}}(x,y){\rm{ }} + {\rm{ }}1$

将持续的帧数加1。

(3) 如果S(x,y)和L(x,y)相比发生了跳变,则

$\matrix{ {Pr{e^{Skip}}\left( {x,y} \right) = t = } \cr {{N^{Skip}}\left( {x,y} \right) + {\rm{ }}1} \cr } $

式中,用PreSkip(x,y)记录跳变发生的时间(当前帧),并将跳变的次数NSkip(x,y)加1。

(4) 最后判断:如果像素的跳变持续时间sFN (x,y)大于阈值θFN,且跳变的频率 NSkip (x,y)/sFN(x,y)大于阈值θh,则说明当前帧像素Ft(x,y)是周期性变化像素,并加入到集合P中。θFNθh分别为跳变持续时间和频率的阈值,这里取值15和0.2,表示只有当像素的周期性运动持续时间超过1 s(15/15) 且像素变化频率大于3次/s(15×0.2) 时才确认为周期性变化像素。

将周期性变化像素分布较高的区域作为候选区域,如图 3中的包围框,使用滑动窗口的方法扫描图像,将容纳周期性变化像素较多且密度最高的包围框作为挥手的候选。

图 3 由周期性变化像素得到的挥手候选
Fig. 3 Hand candidate generated by periodically changing pixels

1.3 人手识别

多数情况下,图 3得到的区域对应着实际的挥手动作。但在要求高的场合下,需要对候选区域进一步验证。具体步骤和算法是:

1) 由于图 3得到的候选包围框不一定会与人手区域完全拟合,因此需要微调该包围框,具体做法是:首先使用背景差分算法[15]得到图像运动区域D(x,y)=L(x,y)-Ft(x,y);然后,计算候选包围框与运动区域的交集,将该交集作为人手包围框,它要比候选包围框准确。

2) 利用Sobel算子获得人手包围框的x,y方向的梯度,以及梯度幅值im(x,y)=dx2+dy2和角度ia=arctan(dy/dx)。并根据幅值图像im计算包围框的形心S=(sx,sy),具体方法是

$\eqalign{ & sx = {{\sum\limits_{0 \le x < w,0 \le y < h} {x \times im\left( {x,y} \right)} } \over {im\left( {x,y} \right)}} \cr & sy = {{\sum\limits_{0 \le x < w,0 \le y < h} {y \times im\left( {x,y} \right)} } \over {im\left( {x,y} \right)}} \cr} $ (4)

wh为包围框的宽和高。由于包围框的中心为C=(cx,cy)=(w/2,h/2) ,,因此,通过讲中心C和形心S相减(C-S)将得到形心指向中心的向量cs

3) 根据ia计算梯度直方图HOG,并与向量cs对齐,获得人手的HOG特征向量[16]。通过与模板进行相似度计算[17],可以确定人手或排除干扰。

1.4 算法的特点

图 4可以看出,本文算法与主流算法的区别:本文算法(图 4(a))首先使用周期性运动目标检测算法,再对周期性运动区域验证,判断是否是人手,步骤简洁,运算量低。而主流算法(图 4(b))专注于能够区分更多种类的手势,因此对所有运动区域都进行了处理,运算量较大。

图 4 本文算法与主流算法流程比较
Fig. 4 Comparison of proposed method and state of the art method ((a) proposed algorithm; (b)compared algorithm)

2 实验与分析

2.1 实验条件

为了方便获得测试数据,算法首先在PC平台下实现。摄像头为海康威视130万像素网络数字高清摄像头,型号为DS-2CD3312,该摄像头支持红外并带有定焦的广角镜头,最高分辨率支持1 280×960,帧率为25帧/s。算法使用的分辨率为1 280×720,帧率为15帧/s。PC的主要配置为:CPU Core i3-3110M(主频2.4 GB),内存6 GB,256 GB固态硬盘,Windows7操作系统。软件部分用VS2010+OpenCV2.3.1 +MSCOMM组件实现,其中OpenCV为计算机视觉领域常用的开源算法库,优点是效率较高,调用方便,运行稳定;MSCOMM为微软串口ActiveX组件,用于通过串口发送执行动作信号。控制部分基于Zigbee无线模块实现,其中发送端通过USB-串口连接PC,接收端与MCU51单片机制成小电路板隐藏在灯具内部。当确认人手挥动时,PC通过串口发送命令给Zigbee发送端,Zigbee接收端接收到数据后,转换为继电器动作,控制灯的开关。测试场景为普通家庭的客厅,面积19 m2,摄像头安装在电视机背景墙上端,能够覆盖客厅80%的区域。

2.2 不同环境下的实验结果

为了客观评价算法,采用了不同的环境对算法测试,表 2为实验结果。测试过程为:在半个小时内挥手100次,每次挥手地点在房间内随机选择,挥手时间持续4 s以内能够触发开关灯的动作记为成功1次,超过4 s未触发记为漏检,在没有挥手动作时产生触发记为误触发。

表 2 不同场景下的实验结果
Table 2 Experimental result from different environment

下载CSV
场景成功/次误触发/次响应时间/s
场景1:白天-单人活动9902.45
场景2:白天-小孩打闹9842.51
场景3:白天-多人交谈9822.49
场景4:夜晚-关灯看电视(光线剧烈变化)9412.53
场景5:夜晚-睡眠(无光照条件)9602.48

从使用结果可以看出,算法的实际效果主要取决于光照条件,白天光照好的条件下,成功率较高;夜晚由于光照强度变弱,图像质量会严重下降,从而导致成功率下降;而误触发率主要取决于环境的干扰程度,人较多且活动频繁时,误触发较高,其中影响较大的是小孩的打闹,小孩的肢体较小且活动剧烈和频繁,有些动作容易被误检为周期性运动从而导致误触发。算法正常运行下,CPU占用率保持在16%左右,没有丢帧和延时现象,说明算法计算量不大。

表 2中的响应时间是指从挥手开始到灯被点亮(或关闭)时所需要的时间,这期间要保持挥手动作以待算法确认,因此响应时间包含了两个部分:1) 运行算法本身需要的CPU时间;2) 等待挥手动作的持续直到动作被确认所需要的时间。对于本文实验条件而言,部分1) 占用的时间(算法复杂度)要远小于部分2) ,5种环境下的算法运行时间平均仅为0.06 s,其余均为部分2) 所占。整体上,实验环境下的平均响应时间为2.5 s,能够被多数人承受。

2.3 算法的对比实验

使用了两种对比算法(对比算法1和对比算法2) 进行了实验效果对比。

对比算法1基于主流算法,即图 4(b)描述的框架实现的。其中,运动目标检测部分使用了经典的混合高斯背景模型算法;人手检测部分借鉴了文献[16]使用的HOG特征和SVM(support vector machine)分类器算法;最后的目标跟踪部分使用了包围框算法,即如果相邻两帧人手图像的包围框覆盖率大于50%就认为两帧是同一目标,以此获得跟踪轨迹。

对比算法2采用了文献[14]描述的基于累积图的挥手识别算法。其检测的流程可以归纳为:1) 根据运动目标检测算法得到运动像素图像Imv;2) 逐行检查Imv,将包含肤色像素较多的像素行确定为累积线;3) 每处累积线对应一幅累积图,如果图像包含多个目标则将对应多幅累积图;4) 对每处累积线累积k帧后,可以得到水平分辨率等于图像宽度且垂直分辨率为k的累积图;5) 利用傅里叶方法对累积图分析以确定是否包含周期性运动目标,并确定挥手状态。

在保持实验场景(表 2)不变的情况下,图 5同时列出了本文算法和两个对比算法的实验结果。对于对比算法2,需要说明的是:由于算法计算量较大,算法中的累积图获取、处理和傅里叶分析部分都比较耗时,导致对比算法2在本文实验分辨率1 280×720像素下无法实时响应,图 5中的实验数据是将分辨率降低到640×480后得到的。本文算法使用了高分辨率的实验视频,主要是用于说明实时性,实际上,对于5种实验场景,本文算法在640×480像素的分辨率下,表 2列出的实验数据项目的平均值几乎没有变化,这样保证了本文算法(表 2)与对比算法2(图 5)对比的客观性。

图 5 实验结果对比
Fig. 5 Experimental result of contrastive algorithms ((a)successful times; (b)false trigger times; (c)response time)

图 5可以看出,对比算法1在复杂环境下的成功次数下降较明显且较耗时,如在场景2(小孩打闹)和场景4(夜晚关灯看电视),原因是:基于运动目标检测的算法,任何无意的动作都会被当做运动目标被后序算法所处理,因此,在干扰较多的环境中,大大增加了后序算法的运算负担,导致了性能的下降。而相比之下,本文算法在各场景下的性能表现比较平均,原因是本文算法的干扰主要来自于视频中除人手外的其他周期性运动目标,因此单纯的运动目标对本文算法几乎无影响。正常环境中,除有意识的动作之外,无意动作导致的周期性运动目标往往很少,因此本文算法表现较好,平均成功次数高于对比算法3%左右。此外,对比算法1的运动目标检测部分在背景复杂时很难完整得提取到人手图像,这会对后续的SVM判断带来困难,这也是导致成功率下降的原因。

图 5的结果中,对比算法的成功率较高,原因是:与本文使用的周期性运动像素检测算法相比,基于累积图的方法提供的信息量大,因此准确度较高。但是,对比算法2缺少对周期性目标是否是人手的验证过程,它将一切呈现周期性运动的肤色区域都看成是挥手,导致其抗干扰性较差,误触发多。实时性方面,即使降低了图像分辨率,对比算法2的实时效果依然不理想。而对于夜间场景(场景4、场景5) ,由于算法2无法提取到肤色特征,因此未能获取实验数据。

2.4 算法的移植

为了使算法更具实用性,同时将该算法移植在嵌入式平台下,详细配置为:CPU为三星Exynos 4412,核心为Cortex-A9,4核,2GB DDR3内存;软件方面,系统为Ubuntu9.0及使用了OpenCV;算法方面,为了提高实时性,将图像分辨率降为800×600像素,视频帧保持15帧/s不变,但使用了跳帧技术,即每隔一帧调用执行一次算法,同时算法相关参数和阈值也做了调整。

在嵌入式平台下,性能留有损失,但基本能保持10帧/s的实时效果,具有实用性。

3 结 论

介绍了一种挥手识别算法,用于智能家居中开关量的控制。算法基于周期性运动目标检测,通过定义两个滤波器(LF和SF),并调谐相关参数,使其对人手的挥动频率有较好的响应,再通过目标检测算法确认是人手,实验结果表明本文算法具有良好的效果。

本文算法的优点是:首先,具有很低的计算复杂度,其计算量仅相当于简单的背景差分算法,因此可以支持更高的分辨率,获得更好的效果,并方便移植到嵌入式平台下;其次,通过在各种居家环境下的测试,算法面对复杂环境具有较好的鲁棒性,这样可以很方便地将该算法推广到其他场合下应用。

不足之处是:由于算法比较简单,考虑的场景并不全面,因此在某些特殊场合下误触发可能较频繁,这需要在具体场合下分析并改进;此外,算法目前对挥手的响应是2.5 s左右,前提是挥手频率较快,而对于缓慢的周期性运动,响应时间势必相应的延长,但如果超出人的承受心理,会导致算法的实用性下降。因此,对于进一步的研究,除了降低误触发外,如何缩短响应时间也是改进算法的重点。

参考文献

  • [1] Marilly E, Gonguet A, Martinot O, et al. Gesture interactions with video: from algorithms to user evaluation[J]. Bell Labs Technical Journal , 2013, 17 (4) : 103–118. DOI:10.1002/bltj.21577]
  • [2] Liu Y, Zhang P. An automatic hand gesture recognition system based on Viola-Jones method and svms[C]//Proceedings of the 2009 Second International Workshop on Computer Science and Engineering. Qingdao, China: IEEE, 2009: 72-76.[DOI: 10.1109/WCSE.2009.769
  • [3] Chen Q, Georganas N D, Petriu E M. Hand gesture recognition using Haar-Like features and a stochastic context-free grammar[J]. IEEE Transactions on Instrumentation and Measurement , 2008, 57 (8) : 1562–1571. DOI:10.1109/TIM.2008.922070]
  • [4] Lu L L, Jiang C H, Hao Z B. Human gesture recognition new approach based on different light conditions[J]. Journal of Computer Applications , 2015, 35 (S1) : 273–277. [ 陆霖霖, 江春华, 郝宗波. 基于不同光照条件下的人体手势识别新方法[J]. 计算机应用 , 2015, 35 (S1) : 273–277. ]
  • [5] Su M C. A fuzzy rule-based approach to spatio-temporal hand gesture recognition[J]. IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews) , 2000, 30 (2) : 276–281. DOI:10.1109/5326.868448]
  • [6] Zhao J L, Chen T D. An approach to dynamic gesture recognition for real-time interaction[C]//Proceedings of the Sixth International Symposium on Neural Networks. Berlin Heidelberg: Springer, 2009: 369-377.[DOI: 10.1007/978-3-642-01216-7_39
  • [7] Bao J T, Song A G, Guo Y, et al. Dynamic hand gesture recognition based on SURF tracking[J]. Robot , 2011, 33 (4) : 482–489. [ 包加桐, 宋爱国, 郭晏, 等. 基于SURF特征跟踪的动态手势识别算法[J]. 机器人 , 2011, 33 (4) : 482–489. DOI:10.3724/SP.J.1218.2011.00482 ]
  • [8] Pang H B, Li Z B, Ding Y D. Dynamic gesture recognition based on gesture contour model of time series[J]. Journal of South China University of Technology: Natural Science Edition , 2015, 43 (1) : 140–146. [ 旁海波, 李占波, 丁友东. 基于时间序列手势轮廓模型的动态手势识别[J]. 华南理工大学学报: 自然科学版 , 2015, 43 (1) : 140–146. DOI:10.3969/j.issn.1000-565X.2015.01.022 ]
  • [9] Yao Y, Fu Y. Contour model-based hand-gesture recognition using the Kinect sensor[J]. IEEE Transactions on Circuits and Systems for Video Technology , 2014, 24 (11) : 1935–1944. DOI:10.1109/TCSVT.2014.2302538]
  • [10] Ren Z, Yuan J S, Meng J J, et al. Robust part-based hand gesture recognition using Kinect sensor[J]. IEEE Transactions on Multimedia , 2013, 15 (5) : 1110–1120. DOI:10.1109/TMM.2013.2246148]
  • [11] Wang C, Liu Z, Chan S C. Superpixel-based hand gesture recognition with Kinect depth camera[J]. IEEE Transactions on Multimedia , 2015, 17 (1) : 29–39. DOI:10.1109/TMM.2014.2374357]
  • [12] Azy O, Ahuja N. Segmentation of periodically moving objects[C]//Proceedings of the 19th International Conference on Pattern Recognition. Tampa, Florida, USA: IEEE, 2008: 1-4.[DOI: 10.1109/ICPR.2008.4760949
  • [13] Wei W, Gao W N, Liu M. Characteristics extraction and classification based on periodically moving object[J]. Computer Engineering and Applications , 2012, 48 (35) : 139–142. [ 魏玮, 高维娜, 刘命. 周期性运动物体的特征提取及其分类[J]. 计算机工程与应用 , 2012, 48 (35) : 139–142. DOI:10.3778/j.issn.1002-8331.1207-0008 ]
  • [14] Li N N, Wu X Y, Xu D, et al. A new approach for hand-waving detection in crowds[C]//Proceedings of the IEEE International Conference on Robotics and Biomimetics. Shenzhen, China: IEEE, 2013: 2489-2493.[DOI: 10.1109/ROBIO.2013.6739845
  • [15] Lee D S. Effective Gaussian mixture learning for video background subtraction[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence , 2005, 27 (5) : 827–832. DOI:10.1109/TPAMI.2005.102]
  • [16] Liu S P, Liu Y, Yu J, et al. Hierarchical static hand gesture recognition by combining finger detection and HOG features[J]. Journal of Image and Graphics , 2015, 20 (6) : 781–788. [ 刘淑萍, 刘羽, 於俊, 等. 结合手指检测和HOG特征的分层静态手势识别[J]. 中国图象图形学报 , 2015, 20 (6) : 781–788. DOI:10.11834/jig.20150607 ]
  • [17] Dalar N, Triggs B. Histograms of oriented gradients for human detection[C]//Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Diego, CA, USA: IEEE, 2005, 1: 886-893.[DOI: 10.1109/CVPR.2005.177