摘 要:在Visual Studio 2010开发环境中以C++为编程语言,使用计算机视觉计算中的开源OpenCV库处理图像,判定手势运动方向,构造基于视觉手势识别技术的智能窗帘系统。通过调用Windows API函数实现PC与LPC2131之间的串口通信,从而通过控制步进电机的转动方向来实现窗帘的打开和关闭操作。系统具有人机交互界面良好、操作简单、窗帘的长度可自行设定等优点。
关键词:智能窗帘;计算机视觉;手势识别;串口通信;人机交互
随着科学技术的发展,人民生活和工作条件的不断改善,智能窗帘越来越为人所接受,在欧美等发达国家,智能窗帘已广泛应用。智能窗帘产品不但实现了自动化和智能化,而且通过应用传感器和无线电遥控技术可以降低劳动强度,延长产品的使用寿命。基于视觉的手势识别是实现新一代人机交互所不可缺少的一项关键技术。将其应用到智能窗帘的研究中,不仅可以美化家居环境,也可以使窗帘的智能化推向一个新的高度,极大地方便了人们的日常生活,从而使家居装饰更具现代化。
方便与享受的智能窗帘对于现代化快节奏生活的人们来说,是适应现代化办公和生活环境的需要,是人们生活水平提高的一个标志。据介绍,智能窗帘根据操作机构和装饰效果的不同分为智能开合布帘系列、智能升降帘系列、智能天棚帘、智能遮阳棚系列,具体如百叶帘、卷帘、罗马帘、风情帘、蜂巢帘、垂直帘、香格里拉帘等。目前,市场上所出售的智能窗帘大多数具有可根据室内环境状况自动调节光线强度、空气湿度、平衡室温等特性。但是,基于视觉手势识别技术的智能窗帘并没有在市场上出现,也没有相关的研究。因此,我们特地提出了将基于视觉的手势识别技术应用于智能窗帘研究的想法,并通过试验取得了良好的成果。
1 设计方案
本系统以ARM7嵌入式芯片LPC2131最小系统为核心。首先,通过摄像头获取手势图像,利用计算机将手势从背景图片中分离出来,对手势进行建模、分析,再进行动态识别,从而判断出手势的运动方向;然后,计算机调用Windows API 函数与LPC2131进行串口通信[1],将已判定的手势运动方向以数据方式发送到LPC2131;最后,LPC2131接收到计算机发来的数据后进行解析,进而控制步进电机的转动方向,实现窗帘的打开和关闭。系统总体流程如图1所示。
2 硬件设计
本系统的硬件工作流程如图2所示。首先,LPC2131通过UART0与计算机进行串口通信,接收计算机发送来的数据;然后,LPC2131对接收到的数据进行分析,判断出数据所表示的手势运动方向;最后,根据数据分析的结果控制步进电机的转动方向。
2.1 MAX232工作原理
MAX232包含4个部分:双路电荷泵DC-DC电压转换器、RS-232驱动器、RS-232接收器以及接收器与发射器使能控制输入。内部有两个电荷泵,将+5 V转换为+10 V或-10 V(空载),为RS-232驱动器提供工作电压。第一个转换器利用电容C1将+5 V输入加倍,得到V+输出端C3上的+10 V;第二个转换器利用电容C2将+10 V转换为V-输出端C4上的-10 V。可以从V+和V-输出端获取少量的电源功率,为外部电路供电,但由于V+、V-未经稳压,所以输出电压会随负载电流增大而下降。当V+、V-为外部电路提供电流时,注意不要因为所加负载的原因,使V+、V-低于输出电压最小值的限制。如果负载是标准值为5 kΩ的RS-232接收器,且Vcc=+5 V时,驱动器输出电压摆幅的典型值为+8 V~-8 V。空载时驱动器输出电压范围是(V+ -1.3 V)~(V- +0.5 V)。
2.2 电平转换电路
由于单片机使用的是TTL电平,其低电平“0”小于0.8 V,高电平“1”在2.4 V~5 V之间,而PC机与单片机之间的通信通常使用RS-232接口,规定低电平“0”在+5 V~+15 V之间,高电平“1”在-5 V~-15 V之间,因此不能与TTL电平直接相连,所以需要用电平转换芯片对电路电平进行转换,否则将使TTL电路烧坏。MAX232内含双路电荷泵电压转换器C4、C5、C9、C10用于升压或降压(具体用法参照MAX232芯片使用手册),一般为1 μF左右,C7、C8为去耦电容,一般大小最好相差100倍。具体电平转换电路如图3所示。
3.1 手势建模
在手势识别框架中,手势模型是一个最基本的部分。根据不同的应用背景,手势识别采用的模型会有不同,而对于不同的手势模型,采用的手势检测与跟踪算法、特征提取、识别技术也会有差别。手势建模主要分为基于表观的手势模型与基于三维的手势模型。
基于表观的手势建模是一种二维建模,从二维平面观察得到的平面图像信息来描述手势的特征。
基于表观的手势模型[2]主要包括基于颜色的模型与基于轮廓的模型两种。
基于颜色的手势模型是把手势图像看作像素颜色的集合,通过提取手部颜色的特征来描述手势。基于颜色的手势模型的常用特征是颜色直方图。
基于轮廓的手势模型是把手看作一个轮廓,通过提取手部图像中手的轮廓的几何特征来描述手势。
3.2 手势的检测与跟踪
手势检测与跟踪[2]是手势识别处理流程中最前端的处理部分,它处理从摄像头获取到的手势序列图像,从中检测和分割手势对象。如果是动态手势识别,还要对手进行跟踪。
基于运动信息的方法是假设在视频中只有手是运动物体。其中一种方法是背景减法。它要求背景静止不变,把视频中的每帧与背景相减,背景相同的部分变为零,不同的部分就认为是运动的物体,即手。另一种方法是差帧法,通过当前帧与前一帧(前若干帧)相减,检测出两帧之间的差异来确定手部运动的起始区域。但是一般相邻帧之间的手势运动幅度不大,差帧法只能检测出运动的轮廓,一般要以比较低的帧采样率或者隔若干帧做减法才能正确检测与分割出运动的手部。
Dt(x,y)=It(x,y)-Ibg(x,y)
3.3 手势图像的预处理
将手势图像从RGB空间变换到YCbCr空间,利用YCbCr色彩空间亮度和色度分离的特性,在一定程度上克服了光照的干扰,然后用最大类间方差法Otsu对Cb和Cr通道的图像进行二值化处理。实验结果表明,与Y通道相比,Cb和Cr色差通道具有更好的分割效果。
但是用Otsu法得到的手势分割[3]图像还存在一定的噪声,所以考虑运用形态学的开运算,先膨胀后腐蚀,从而得到较理想的分割效果。为了对手的区域进行更好的特征提取,本文使用灰度投影法来获取准确的手势区域。具体方法是对经过预处理的二值图像分别在垂直方向和水平方向采用灰度投影法,从而得到手势在X方向和Y方向的坐标范围(x1-x2),(y1-y2)。如图5所示,(a)是从实时视频中截取的手的RGB图像,(b)为(a)对应的二值化图像,(c)为通过灰度投影确定的准确的手区域。
3.4 手势特征提取
手势特征的提取与手势模型密切相关,不同的手势模型会有不同的手势特征。例如基于模型的手势模型有手的每个关节的状态特征,基于表观模型的手势特征是轮廓特征、位置特征、肤色特征等。
静态手势识别和动态手势识别的特征也不同,静态手势特征只是描述手的静态信息,例如轮廓、面积等。动态手势特征是连续的静态特征序列。
3.5 手势识别
(1)静态手势识别
静态手势识别的方法有很多,例如基于规则的方法、模板匹配的方法等。
基于规则的识别方法[4]是最简单的一种识别方法。它为手势之间建立关系、定义识别规则。对于输入的手势特征,按照这些规则判别即可。基于规则的方法效率很高,缺点是这些规则需要预先编码在规则库中。
基于模板匹配的方法[4]是采集静态手势作为样本,提取特征作为模板特征库。在识别时把输入的手势特征与模板库的模板进行匹配。其中比较经典的是使用弹性图匹配(Elastic Graph Matching)方法。
在基于模板的识别方法中比较重要的是定义特征的距离函数。距离函数需要根据特征的特点来选取。Hausdorff距离是用来度量两个集合之间的相似度,它的数学定义如下:A和B是两个集合,元素个数分别是n和m。
(2)动态手势识别
动态手势是具有时间和空间变化的,手势特征量化编码之后成为时间上的符号序列。目前有许多方法可以对时间序列数据进行分类。
图像处理领域最基本的直方图技术在某些情况下用于动态手势识别是非常有效的。直方图能反映手势序列的整体特征。虽然它丢失了序列的时间特征,但是在一些手势种类少而且运动轨迹区别明显的手势识别应用中,不失为一种好选择,它的识别处理效率很高。
窗帘是家居环境中必不可少的日常生活用品。在欧洲,窗帘智能化已经成为了时尚家居的一大标志。基于视觉手势识别技术的智能窗帘不仅具有结构简单、操作方便等优点,而且还能使家居环境更加美观,更具现代化,为人们的日常生活带来极大方便。测试表明,本系统具有灵活、稳定和低能环保的特点,是一种比较理想的研究。因此,基于视觉手势识别技术的智能窗帘在今后会有更加广阔的发展前景,其低能环保的优点定会受到广大群众的欢迎。
参考文献
[1] 周立功,王祖麟,陈明计,等.ARM嵌入式系统基础教程(第2版)[M].北京:北京航空航天大学出版社,2008.
[2] 胡友树.手势识别技术综述[J].中国科技信息,2005(2):41-42.
[3] 刘俊梅,阮秋琦.一种复杂背景下的手势分割新方法[J].北京电子科技学院学报,2006,14(2):23-26.
[4] 任海兵,祝远新,徐光,等.基于视觉手势识别的研究综述[J].电子学报,2000,28(2):118-121.