您现在的位置:新闻首页» 原创文章 »正文

基于K60的手势识别系统设计

  来源:现代科学仪器网2017-03-09点击:698


【核心介绍】该系统以飞思卡尔系列单片机K60为主控芯片,CMOS摄像头OV7620作为图像传感器,将采集的手势图像送到单片机进行图像压缩、去噪滤波、动态阈值二值化、轮廓跟踪、指尖检测等处理步骤,完成手势的识别。并将识别结果通过语音模块输出,根据识别结果实现风扇的调速控制。手势轮廓的提取采用八邻域跟踪算法,指尖检测采用K_COS算法,并结合待测点与质心的距离,剔除指谷的影响。该项目不仅完成对特定手势的识别和风扇的调速控制,而且实时识别过程中脱离计算机,使用方便小巧的单片机,实现良好的人机交互,让手势控制成为了更为大众化  

基于K60的手势识别系统设计

高华帅  郭晶晶  高 飞  郑晓瑞  彭 振

(青岛理工大学 自动化工程学院 青岛266520)

该系统以飞思卡尔系列单片机K60为主控芯片,CMOS摄像头OV7620作为图像传感器,将采集的手势图像送到单片机进行图像压缩、去噪滤波、动态阈值二值化、轮廓跟踪、指尖检测等处理步骤,完成手势的识别。并将识别结果通过语音模块输出,根据识别结果实现风扇的调速控制。手势轮廓的提取采用八邻域跟踪算法,指尖检测采用K_COS算法,并结合待测点与质心的距离,剔除指谷的影响。该项目不仅完成对特定手势的识别和风扇的调速控制,而且实时识别过程中脱离计算机,使用方便小巧的单片机,实现良好的人机交互,让手势控制成为了更为大众化的一种控制方法。

关键词 手势识别;图像压缩;轮廓跟踪;MK60DN512OV7620

中图分类号 TP29 文献标识码 A


Design of Gesture Recognition System based on K60

Gao  Huashuai, Guo  Jingjing, Gao  Fei, Zheng  Xiaorui, Peng  Zhen

(College of Automation Engineering ,Qingdao University of Technology ,Qingdao ,266520)


Abstract The system uses Freescale MCU K60 as the main control chip and CMOS camera OV7620 as the image sensor. The collected gesture images are sent to the MCU for image compression, denoising filtering, dynamic threshold binarization, contour tracking, fingertip detection and so on, which completes the recognition of the gesture.Then the recognition result is output through the voice module, and the speed regulation control of the fan is realizedaccording to the recognition result.The eight-field tracking algorithm is used to extract the gesture contours. The K_COS algorithm is applied to the fingertip detection, and the influence of the finger’svalley is eliminated by combining the distance between the measured points and the center of mass.The project,with the convenient single chip microcomputer rather than the computer,not only completes the recognition of specific gesture and the speed control of the fan, but also realizes good human-computer interaction, which makes the gesture controlbecome a more popular control methodin the process of real-time recognition.

Key  words gesture recognition; image compression;contour tracking; MK60DN512; OV7620

引 言

计算机和互联网的普及使得人机交互成为人们日常生活的重要组成部分,比如智能手机配备的指纹识别技术,应用于虚拟现实、遥控机器人及远程医疗等的触觉交互技术,应用于呼叫路由、家庭自动化及语音拨号等场合的语音识别技术。眼睛虹膜、语音、唇读、人脸等人类特征都可作为人机交互的重要特征,而手势作为人类最自然的表达方式之一,在日常生活中得到了广泛的应用。手势生动、形象、直观,而且蕴涵着丰富的信息,是人与人沟通的重要媒介。目前基于手势的交互已经成为人机交互的重要内容。现在基于计算机的手势识别甚至人脸识别研究已经初见起色。但是这些无疑有一个很大的弊端,那就是一定要用计算机,使用不方便。

本文设计的系统就避免了这一弊端,仅用小巧的单片机完成特定手势的识别。为克服单片机相对计算机处理速度慢的问题,在图像采集方面采用DMA进行数据传输,然后在不失真的前提下选用合适的压缩比对图像进行压缩,极大的提高了数据采集和处理速度。为解决灰度图像转化为二值图像手指背影的影响,本文采用动态阈值二值化的方法,相对于传统的定值二值化和硬件二值化,较好的克服了背景影响。本文设计,结构轻巧,成本低,较好的完成手势的识别和风扇的调速控制。

1硬件系统设计

手势识别系统包括摄像头OV7620采集手势图像、主控芯片K60进行数据处理、电源模块给系统各模块供电、驱动模块驱动风扇电机以及语音模块输出识别结果。系统总体设计结构图如图1-1

1-1 系统总体设计结构

1.1 摄像头采集模块

本文图像采集模块选用OV7620,OV76201/3CMOS彩色/黑白图像传感器。它支持连续和隔行两种扫描模式,VGAQVGA两种图像格式;最高像素为664*492,帧速率为30fps;数据格式包括YUVYCrCbRGB三种,能够满足一般图像采集系统的要求,较好的适应了手势图像采集。

1.2 电机驱动模块

驱动部分用的是IRF540 N沟道MOS管和IR2104驱动芯片,因为只需要驱动电机的单向转动,所以只用了一个MOS管,以简化硬件电路图。所构成的原理图如图1-2

1-2 驱动电路原理图

1.3电源供电模块

电源模块相当于房屋的基石,供电的稳定直接关系到整个系统的稳定运行。系统整体用的是7.2V 2000mAh Ni-Cd 电池供电。单片机用ASM1117-3.3V芯片转换成3.3.V电压供电。PWM驱动芯片IR2104需要12V供电,本文先用LM2940芯片将电池电压转换成5V,再用一个B05S12芯片产生所需的12V电压给IR2104供电。所用的原理图严格按照数据手册提供的原理图设计,原理图如图1-3

1-3 电源模块原理图

2 软件系统设计

2.1整体设计流程

主程序首先进行完成摄像头等模块的初始化,获取图像进行压缩滤波、动态阈值二值化处理,然后提取轮廓边缘,进行指尖检测并将匹配结果通过语音模块和OLED显示,利用匹配的结果来控制电机转速。

DMA中断子程序主要完成摄像头图像数据的采集,并将获取结果存储到数组中,大大减轻了CPU的负担。

软件设计流程如图2-1

2-1 软件设计流程框图

2.2识别原理与算法

图像处理过程中,滤波采用中值滤波,滤去图像中的高频杂点。二值化采用动态阈值的算法,准确屏蔽背景影响。提取轮廓采用八邻域顺序提取边缘算法,使图像变为单层连续的手势图形。指尖检测采用K_COS算法。手势图像的处理示意图如图2-2

2-2 手势图像处理示意图

2.2.1图像压缩、滤波预处理

由于采集的手势图像较大,会占用单片机大量的处理周期,不利于后续数据的处理,所以本系统对图像进行了压缩处理。在不影响手势轮廓提取的前提下,选用合适的压缩比,对图像进行隔行隔列扫描,将扫描后的灰度值放到数组中,以便后续数据处理。

另外,采集的图像含有大量高频噪点,进行了滤波去噪处理,滤波算法采用了中值滤波算法。该算法采用一个滑动窗口,用窗口中各点灰度的中值来代替窗口中心像素的灰度值。该算法能较好的去除高频噪点的影响,且编程算法简单可靠。

2.2.2动态阈值二值化

为了减少背景的影响,采取OTSU算法将灰度图像变为二值图像的阈值设为动态的,即随整幅图形的像素落差自动计算阈值。OTSU算法原理如下:

对灰度图像,记T为前景与背景的分割阈值,前景点数占图像比例为W0,平均灰度为U0;背景点数占图像比例为W1,平均灰度为U1。图像的总平均灰度为:U=W0*U0+W1*U1 。从最小灰度值到最大灰度值遍历,依次计算类间方差σB2,当σB2最大时的T即为分割的最佳阈值,计算公式如下:

2.2.3八邻域轮廓跟踪算法

提取手势二值图像后,本文采用八邻域轮廓跟踪算法提取手势轮廓,以便利用K_COS算法进行手势指尖检测。该算法相对于Freeman算法来说,计算量相对较小,更适用于单片机,并且C语言算法容易实现。其算法步骤如下:

二值图像每个像素点有八个方向与其连接,共定义了八个方向遍历,如图2-3所示,定义左下方顺时针旋转到正下方分别编码0-7。算法步骤如下: 从左到右、从上向下依次遍历各像素点,直到寻找到第一个非孤立白点,即轮廓跟踪的初始点O,记录其坐标。‚ 以O点左下方作为初始方向进行跟踪,若该点为白点,则跳出本次循环。否则,顺时针旋转45°直到找到下一个白点,并记录其坐标。ƒ 把该白点作为新的起始点,以当前跟踪方向上逆时针旋转90°继续跟踪。„ 如此循环遍历,直到再次找到初始点0,遍历结束跳出总循环。

2-3 轮廓跟踪方向

2.2.4K_COS算法

曲率定义为某一点的切向角度相对于弧长的变化率,曲率越大,曲线的弯曲程度越大。观察手势轮廓指尖曲率最大,且曲率具有旋转、平移不变性,可作为手势特征。

由于曲率公式较为复杂,C语言编程复杂,所以本文采用K_COS算法,利用两向量夹角余弦值近似曲率进行指尖检测,以此判断手指个数。点PiXi,Yi的K向量表示为:

K_COS算法对k值的选取较为敏感,该值选取太小,不能克服噪点影响,选取太大不能良好的反映曲率的变化。经过多次实验,选取了k=6,其较好的反映了曲率变化。另外,当指尖张开较小时指谷也会包含进去,对此我们求取图像质心,当候选点与质心的距离小于一定阈值时将其舍弃。通过不断的试验,选取COSθi=0.73作为指尖检测的阈值。

3 实验测试与分析

本文以数字056个手势作为系统研究对象,每种手势分别由10个不同的人进行测试,一共进行了60组测试,通过观察电机转速的变化以及语音模块的输出来判断手势识别的正确与否。通过测试,本文系统在该6种静态手势的识别率较高,平均识别率为95.17%,基本完成了人机交互的任务。但在手势3的识别中存在一定的误差,这主要是手势3的大拇指方向有凸起,利用K_COS算法进行指尖检测时,由于凸起可能会造成该处曲率过大的情况而误判为指尖,从而影响手指个数的判断。综上所示,利用八邻域轮廓跟踪算法和K_COS算法能较好的进行指尖检测,识别出手指个数。手势识别率如表1

1 手势识别率



4 结语

本文在查阅关于手势识别的文献和进行相应的程序调试后,识别出数字056种手势。该系统识别过程中完全脱离电脑设备,利用单片机进行处理,图像压缩、八邻域轮廓跟踪算法大大缩短了单片机的处理时间,K_COS算法较好的进行指尖检测,语音模块和风扇调速实现了良好的人机交互。本文手势识别系统具有简易通用性,为后续单片机的图像处理研究提供参考借鉴。

参考文献

[1] 段洪伟.实时基于视觉的手势识别及其应用[D].上海:上海大学,2004.

[2] 何阳青.基于几何特征的手势识别算法研究[D].上海:上海海事大学,2004.

[3] 龚声荣,刘纯平,王强.数字图像处理与分析[M].北京:清华大学出版社,2006.7.

[4] 李华林.指尖检测与空间定位关键技术研究[D].武汉:华中科技大学,2012.

[5] 任海兵,祝远新,徐光祐等.基于视觉手势识别的研究—综述[J].电子学报,2000.

[6]高守传,姚领田.Visual c++数字图像处理与工程应用篇[M].北京铁道出版社,2006,1.







(资讯来源:现代科学仪器 期刊,由现代科学仪器网官方发布,禁止转载)

  (来源:现代科学仪器网

关注本网官方微信 随时订阅权威资讯