APP下载

基于嵌入式动态手势跟踪识别系统研究

2020-11-26徐宏宇

通信电源技术 2020年15期
关键词:色度肤色饱和度

丁 闯,徐宏宇

(沈阳航空航天大学 电子信息工程学院,辽宁 沈阳 110136)

0 引 言

伴随着计算机技术的长足发展,人工智能人机交互等众多学科成为研究热点[1]。人机交互主要是研究人和计算机之间的信息交换。人与计算机之间的信息交换主要依靠交互设备进行,手势被视作人机交互的一个重要方式。手势识别指人体做出的手势动作通过计算机进行分析与识别,起始于20世纪80年代初期。在人们早期的探索和识别方法研究中,研究手段主要是利用手势特征和机器学习的方法,如支持向量机(SVM)、SCG神经网络算法和动态时间规则算法(DTW)。目前,由于作为智能的输入设备拥有操作简单、灵活易懂等优点,手势被大量应用在动作识别领域[2],如智能机器人、无人驾驶汽车以及智能家居等方面。

1 嵌入式系统与Linux简介

嵌入式系统一般是指有着计算机功能但又不称之为计算机的器材。它的主要特性是应用性,可以通过修改其软硬件达到在成本、功耗、体积以及可靠性等方面的要求。它主要包含嵌入式处理器、操作系统和相关硬件等。相较于通用的计算机系统而言,嵌入式系统具有高可靠性、高性价比、低功耗以及功能强大等优点。由于它面向的是特定的应用,因此可以根据具体需求进行灵活定制。因为嵌入式系统本身并不具有自举开发能力[3],所以需要一套开发工具和开发环境对其进行开发。

Linux是一个广泛运用在服务器上的操作系统,天生具有开放性。用户可以根据自己的特定要求修改功能[4-5]。

2 手势处理基础

2.1 颜色空间概念

对人体肤色所采集的图像处理是最常用的颜色空间RGB模型[6-8],且在RGB空间里人体肤色对亮度非常敏感。训练时的图像亮度与测试时存在较大差距时,将很难从图像分割出比较完整的手势图像,得到的肤色点可能会是离散的。不同人之间的肤色会存在很大差异,主要体现在亮度与饱和度方面,其中黑人的饱和度最大,白人的饱和度最小,黄种人的饱和度居中,而色度的差+异并不明显。因此,可以将亮度与色度分离,然后只使用色度信息,以降低光照所产生的影响。通常是将RGB空间转换成某个亮度与色度分离的空间[9],再通过比较不同物体与手势之间存在的色度上的差异分割手势主体。

对于HSI灰度化,H、S、I分别表示色调、饱和度、明度。色调指日常所说的颜色(红、白、黑等);饱和度代表颜色的不同鲜艳度,值越大,代表越鲜艳;明度则是颜色的明亮。计算得到的H范围为[0,1),S范围为[0,1),I范围[0,255]。肤色在HSI中的分布如图1所示。

图1 肤色在HSI中的分布

RGB颜色空间中,物体的色度和感知存在差距。HSV颜色空间比较均匀,体现的亮度分量和色差信息之间没有很强的关联性,所以分割效果比前者的颜色空间好[10],因此被广泛应用于彩色图像处理。

2.2 基于YCbCr颜色空间的肤色检测

YCbCr颜色空间也属于非常常见的关于亮度分离的一种颜色空间[11],通过YUV颜色空间转换所得,能够便利地分离出其中的亮度信息,还可以较好地对肤色分布进行一定的聚类。所以,在YCbCr颜色空间对肤色进行分割的时候,能够实现良好的分割效果,并且能使计算更简单。对于YCbCr颜色空间而言,在将肤色的信息映射到YCbCr颜色空间时,会使得在CrCb二维空间里关于肤色的像素点近似于呈现椭圆分布,然后依据YCbCr模型计算得到的帧间差分的值,直接完成对前景物体的提取。

2.3 背景建模算法

本文主要通过背景建模算法实现对运动目标的检测,通过计算每个像素的平均值来作为它的背景建模。在检测当前帧时,只需将当前帧的像素值R(x,y)减去背景模型中相同位置的像素的平均值T(x,y),从而得到差值D(x,y)。将D(x,y)与其中的一个阈值TH进行对比,大于阈值认为是前景,小于阈值认为是背景。输出图像为二值图像,二值化的阈值设置为20,学习率设置为0.01。

改进算法通过新增一个辅助背景SBG(Secondary Background),同时将SBG的初始值设置成BG,即使SBG(x,y)=BG(x,y)得到的新的输出图像的output_g的值为:在本文的动态手势识别系统内,通过系统的手势检测模块,获取手势所感兴趣的区域1D色调直方图,再使用该直方图得到每一帧图像的色调通道的反投影。

2.4 计算重心

首先获取在空间点周围密度分布的重心,然后依据得到的不同密度的倾斜,制定不同的更改方案对空间点进行聚类。

定义1 邻近重心点,即在以核心点为圆心、以Eps为半径的圆域内的所有邻近点的重心点。邻近重心点Q(m,n)的坐标与所有邻近点的分布有关,坐标计算公式为:

其中,k代表邻近点数量;Qim代表任意一个邻近点的x轴的坐标;Qin代表任意一个邻近点的y轴的坐标。

其中,Px表示邻近点的x轴坐标;Py表示邻近点的y轴坐标。

然后,计算重心点偏离SP:

图3 重心点偏离

3 手势识别系统应用

手势通过人的意识操控肌肉的活动产生变化,是一种较为高级的行为活动方式。而通过手部的变化所产生的信息就是手势,是一种体现人的思考和思维转变的表达形式。用户主要的任务内容是展示自己的操作用意,也就是用户的心理想法(概念手势),经过自己的动作操控以手势的变化表现出来。

手势的模型建立是通过手的形状构造和手部的运动轨迹来传递输入的手势语音信息的内容。人的手可以通过关节的运动来不断改变手的形状,这种变化可以通过手指的位置和状态空间的转变来描绘手部运动的特征。

手势跟踪应用程序根据系统信号量执行软件编程。为了提高程序的可移植性,为将来的系统功能扩展预留空间,整个软件系统均采用模块化和分层方法进行设计,并使用汇编语言读取、写入和中断寄存器,同时为上层的开发提供灵活的接口。上层用C语言编写,通过调用下层函数间接控制硬件资源。以这种方式创建程序可以为整个系统提供清晰的结构,提高程序的可移植性和可伸缩性,减少对硬件资源的消耗,并为扩展系统功能和进一步开发提供充足的空间。

4 检测与验证

系统通过判断手势的运动方向,操作显示屏上的图片。为了方便处理,系统中规定运动方向为水平,图像的每一个像素点和目标颜色对比并计算重心,再算出偏移的重心的偏移量,对比x轴和y轴的偏移量,通过记录两帧之间人手的面积信息或坐标信息[12],运算和处理此时刻的数据与前一时刻的数据来判定人手的运动方向[13],进而实现操纵显示屏上的图片。

主程序中调用的手势识别子例程采用动态手势识别算法,动态手势会在一段时间内测量手势的空间特征的序列值并通过该值进行表示。如图4所示,通过USB摄像头采集手势的相关特征数据信息采集手势信息,然后将收集的数据发送到A/D模块,并通过串行端口模块发送到控制单元。在该模块中,控制单元接收实时数据,并由ARM嵌入式操作系统控制程序进行处理。在PC端完成手势信息的采集与获取来检测手势的前后左右运动方向,最后实现上位机的手势运行方向的跟踪与显示。

图4 控制系统模型

5 结 论

在当前的人机交互领域中,本文将手势用作主体,将动态手势功能和嵌入式系统用作载体,设计了一种可以根据手势变化来完成相应指令的一套系统。文中简单介绍了ARM芯片以及Linux操作系统,并根据系统的总体框架和设计理念,不断依据具体情况调整设计流程,调试优化算法,完成了系统的硬件设计和软件实现,基本实现预定目标。

猜你喜欢

色度肤色饱和度
唐古特大黄有效成分与色度相关性分析
保质期内莲藕色度值统计分析
糖臬之吻
肤色(外一首)
Conversation in a house
人的肤色为什么不同
为什么人有不同的肤色?
谈“理想声音的概念”在演唱中的应用
粉煤灰颗粒和粉煤灰处理精制棉黑液的比较
制作一个泥土饱和度测试仪