基于手势识别的智能控制系统的设计与实现
2020-09-28刘长坤符志强李舒怡蒋明亮宋晓金
刘长坤 符志强 李舒怡 蒋明亮 宋晓金
摘要:随着AI技术和计算机视觉的不断进步,通过AI识别的智能控制系统开始蓬勃发展。该文研究基于手势识别的智能家居控制系统,以数字手势控制不同的智能家居产品。系统采用了Python的OpenCV、PyQt5和Sklearn库搭建完整的手势识别系统,以此作为控制智能家居的开关对智能家居进行集中控制。系统具有操作便捷、识别率高的特点。
关键词:计算机视觉;手势识别;OpenCV;智能家居
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2020)16-0009-02
开放科学(资源服务)标识码(OSID):
1 背景
随着物联网的快速发展,越来越多的家居产品也开始互联互通。智能家居是物联网在家庭环境中的体现,不仅为人们提供了安全的、便利的、舒适的基础生活设施,而且还能保证人们的居住环境环保节能[1-2]。目前普通家庭生活水平提高,智能家居产品不断增加,对各种智能家居产品做进一步的集中、快捷管理的需求应运而生。而手势作为人类的一种基本行为,是人与人交往和日常生活过程中的重要一部分。随着AI技术和计算机视觉的不断进步,手势识别的相关研究不断前进,以手势识别来控制智能家居的方式成为目前研究的热点之一。
2 关键技术
颜色空间YCrCb常用于手势识别和人脸识别。其中Y为亮度信号,Cr为图像中的红色信号分量,Cb为图像中的蓝色信号分量。通过把基于RGB空间的图像转化为YCrCb后,亮度在该图像中的影响就可以小到忽略不计,这样处于肤色范围内的点就会聚集在一起。因此判断当前图像内某个点是否是人脸或者是手臂等其他部位,可以通过其Cr、Cb值是否分布于肤色点的取值范围内,以此来确定当前像素点是否属于肤色,进一步区分识别图像中的肤色与背景。最大类间差算法Otsu是目前用于图像分割中阈值选取的算法,把前景和背景分成两个灰度数不同的部分,使用聚类的思想,计算出最大的方差值,使得前景和后背景能够明显地区分开[3-4]。
本文主要通过Python的PyQt5进行页面的设计,采用OpenCV实现对手势动作的捕获,用YCrCb颜色模型以及Otsu法阈值分割算法进行去噪和肤色检测,接着进行形态学处理并提取手势轮廓,完成对手势图像的预处理,再对轮廓点进行傅立叶算子提取进行二次降噪。之后采集手势扩充手势样本库,最后利用已有的手势样本库训练SVM模型,提高识别准确率。
3 系统设计
本系统最重要的核心部分是手势识别模块。目前实现手势识别主要有两种方式:
1)基于图像识别;
2)基于立体三维加速度识别。
两者当中,基于图像识别的手势识别技术较为成熟,理论研究较为广泛且相关的算法识别成功率相对较高,复杂率也相对较低,可较好的完成对家居产品的控制操作。本文用PC机的摄像头捕获用户做出的相应手势,再通过对手势的处理识别,判断用户想要对相应家居产品做出的相应控制,再由虚拟按钮做出进一步响应动作,进而集中统一地控制各种智能家电设备。
手势识别模板主要是通过PC机的摄像头捕获用户的手势,产生控制命令,进一步控制家居设备。该模块主要由识别界面、图像预处理、提取特征、模型训练组成。
手势识别主界面如图1所示。
该部分先调用OpenCV获取用户基本手势,创建了main和picture两个文件。其中main作用为录制当前摄像头捕获的画面,picture作用则是完成对main中捕获图像的预处理,相关步骤为:去除噪点、基于YCrCb空间的肤色检测、相关的形态学处理、提取处理过的图像的轮廓。main調用摄像头进行录制,然后框选出需要的手势部分,接着对图像进行滤波,即对图像实现噪声的消除,增强图像效果。基于YCrCb空间的肤色检测,首先将原本基于RGB空间的图像转换到YCrCb中去,将亮度这一条件对图像产生的影响降到最低,这样肤色就会得到很好的聚合,再通过判断像素点的Cr、Cb值是否分布于肤色点的取值范围内,以此来确定当前像素点是否属于肤色。提取出Cr分量图像后,再对对CR通道进行单独的Otsu处理,其中Otsu方法里的opencv用的是threshold对图像灰度级进行聚类。
经过肤色检测处理后的手势图像出现了背景白点,而且手势上也有部分残缺存在。这时需要对所分割出来的图像做进一步的处理。腐蚀和膨胀是形态学运算中两种基本运算,主要作用是寻找图像中极大极小区域。腐蚀操作就是将图像“变瘦”,膨胀操作就是将图像“变胖”。先腐蚀再膨胀其作用是分离物体,去除图像中孤立的小像素点和毛刺。先膨胀再腐蚀其作用为融合物体,将图像中的小孔填平,弥合细小裂缝[5-6]。对捕获的手势图像进行处理后效果如图2所示。
可以看到经过形态学处理后,图中的背景杂质点消除掉了。提取特征是对手势图像预处理后的轮廓点坐标,进行提取傅立叶描述子,建立手势的特征库。有许多计算表达不同物体形状的方式,基于这些不同的形状表示方式,有许多各种各样的识别方法被研究提出,其中具有最佳识别物体形状性能的就是傅立叶描述子。轮廓提取完成后,对图像再进行第二次去除噪点的处理,最后去除图像中相对面积较小的部分,效果如图3所示。
最后使用支持向量机SVM对轮廓进行识别,它的基本思路就是在所给的空间中,找到一个平面,使得分离两边的间隔最大,这样相关数据就较高的效率被分开了。SVM具有良好的学习能力,且得到的错误率较低,一般可用于模式的识别和物品的分类。该部分主要是在手势库上进行训练分类器。本文用网格搜索法进行调参,保存模型用joblib模块。通过识别用户手势,判断用户想对特定家居产品做出的控制,进行下一步响应。
4 结束语
本文研究基于手势识别的智能家居控制系统,系统最重要的核心内容就是对用户手势的识别,识别的准确与否将进一步影响用户是否能准确操作想要操控的家居产品并做出准确的操作。本文采用了Python的OpenCV、PyQt5和Sklearn库搭建完整的手势识别系统,以此作为控制智能家居的开关,对智能家居进行控制。经测试系统识别率较高,能准确地控制家居产品,系统操作较为便捷。
参考文献:
[1] 韩洪江, 张建军,张利魏,等. 智能家居系统与技术[M]. 合肥: 合肥工业大学出版社, 2011.
[2] 胜德8X家居智能化系统解决方案浅析[J]. 智能建筑技术, 2003(2): 33-35.
[3] 易靖国, 程江华, 库锡树. 复杂背景下的手势识别方法[J]. 数字技术与应用, 2016(9): 50-53.
[4] 丁毅, 曹江涛, 李平, 等. 复杂背景下的手势识别算法研究[J]. 自动化技术与应用, 2016, 35(8): 113-116.
[5] 徐战武. 静态图像肤色检测研究[D]. 杭州: 浙江大学, 2006.
[6] 鲁一姝. 基于视觉的手势识别研究[D]. 天津: 天津工业大学, 2016.
【通联编辑:谢媛媛】