APP下载

基于DTW 的手势识别算法*

2022-09-28佟喜峰樊鑫

计算机与数字工程 2022年8期
关键词:像素点中心点黑点

佟喜峰 樊鑫

(东北石油大学计算机与信息技术学院 大庆 163318)

1 引言

手势识别的方法主要有传统的模板匹配法和人工神经网络法[1~3]。杨红玲等通过摄像头实时采集手势图像,采用结合RGB 和HSV 双颜色空间的手势分割方法得到二值化图像,然后对分割后的手势图像提取骨架与边缘相融合的手势特征图,通过手势特征图识别手势[2]。吴斌方等提出了一种基于支持向量机的手势分割和基于Inception-v3的手势识别方法,将预先经过手势分割处理后的样本导入模型训练,调整超参数得到最优手势识别模型[4]。包兆华等使用神经网络提取关键点,通过关键点判断手部的位置,在Ycbcr 颜色空间上进行手势分割,将LeNet5 用于识别手势[5]。李国友等使用Kinect V2 传感器,根据提取图像数据与深度数据,使用隐马尔可夫模型实现了手势识别[6]。任重庚等提出了基于Kinect 骨骼数据的手势识别方法,在Kinect 获取的关节坐标的基础上,统计各个关节在3 个维度上的变化情况并表示为相应的权值,使用DTW 方法识别手部整体运动轨迹[7]。模板匹配法的优点是简单,识别速度快,且不易受到光照的影响,缺点是鲁棒性不太强,对于同一种手势,当手部形状变化较大时,识别准确率就会变低,误识的情况就会出现的比较多。人工神经网络法具有较强的自主学习能力,鲁棒性较好,缺点是训练时间较长,需要学习较大数量的样本。

手势识别总体上属于形状匹配与识别范畴。在形状匹配与识别方面,王生生等提出了一种基于特征点分类的融合框架,将全局与局部算法的匹配结果进行融合,提高了准确率[8]。朱聪斌等利用轮廓段中的高曲率显著点将轮廓分割为若干部分,并设计了针对角度描述符和长度描述符的匹配算法[9]。刘砚菊等先对几何形状提取骨架,然后通过形状上下文对骨架提取特征,最后通过形状上下文距离度量两个形状的相似度[10]。王峰等提出了基于主曲率增强距离变换的形状相似性计算方法,该方法对于部分内容遮挡或缺失情况下的目标识别取得了较好的效果[11]。李向军等提出了基于最小点对成本的二维轮廓精确匹配与分析方法,该方法首先构建出列表轮廓原型知识库,然后通过粗匹配得到形状的大致类别,再通过细匹配得到具体的类别[12]。实时手势识别对算法的时间复杂度要求比较高,以上算法在识别准确率指标上比较理想,但是由于时间复杂度的原因,以上算法不适合用于实时手势识别。

本文提出了基于DTW 算法的手势识别。DTW即动态时间规整(Dynamic Time Warping),该方法基于动态规划算法的思想,用于计算两个时间序列信号的欧式距离。由于DTW 算法具有鲁棒性强的优点,已被用于孤立词语音识别[13]、联机笔迹鉴别[14]等。

2 手势特征提取

对手势图像提取特征,需经过手部区域检测、几何形状中心点定位、边缘检测与特征提取等步骤。

2.1 手部区域检测

要进行手势识别首先要获取手势区域,对于手势区域的检测,本文采用肤色检测法[15]对存在手势的图像进行处理,检测出手势区域后,再将除了手部区域的其它部分全部变为白色区域,然后进行灰度处理,最后再利用图像二值化实现图像的分割。

2.2 几何形状中心点定位

如图1 所示,假设黑色区域为手势图形区域,为比较手势图形的相似度,需要计算图形各个边缘点到几何图形中心点的距离。为求得几何图形的中心点,需要统计图像每一行黑点个数和每一列黑点个数。假设图像的高为H,图像的宽为W,假设Sri代表图像的第i 行的黑点个数,Scj代表图像的第j列的黑点个数,则可以通过如下公式计算手势图形的中心点坐标(Cx,Cy):

图1 手势的一个例子

2.3 边缘检测与特征提取

算法采用各个边缘点与中心点的距离作为特征,因此,边缘点的检测是必不可少的步骤。边缘点周围一般既有黑点又有白点,因此,通过如下的方法进行边缘检测:对源图像的各个像素点(x,y),如果像素点(x,y)为黑点,且像素点(x+1,y)、(x-1,y)、(x,y+1)、(x,y-1)不都是黑点,则将目标图像像素点(x,y)标记为黑点。

为了比对几何图形,需要提取特征。如图2 所示,假设A 点为用式(1)和式(2)求得的几何图形中心,B 点为由A 点垂直向下的射线与封闭曲线的交点。从B 点开始,沿着逆时针方向,逐步跟踪曲线上的各个黑点,直至走完封闭曲线又回到B 点。在跟踪过程中,记录各个点的坐标(xk,yk)。在得到曲线上各个点的坐标序列之后,计算各个点相对于中心点的坐标(xck,yck):

图2 特征提取示意图

曲线长度也是重要的特征,为计算曲线长度,规定从一个点出发,向上、下、左、右前进一步时,距离为1,向左上、左下、右上、右下前进一步时,距离为,既1.414。图3 给出了曲线长度计算示意图。在图3 的例子中,假设每个黑点代表一个像素点,从M 点出发,经过N、R、S 到达T,则从M 出发到T点的曲线长度为1+

图3 曲线长度计算示意图

提取到的特征包括:

1)几何图形中心坐标(cx,cy);

2)几何图形边缘像素点个数q;

3)按曲线长度递增次序排列的几何图形各个边缘像素点(xk,yk)的信息,具体包括:

(1)边缘像素点(xk,yk) 相对于中心的坐标(xck,yck);

(2)从图2中的起点B到当前像素点(xk,yk)的曲线长度lk。

对于形状非常相似但大小不一样的两个手势,希望将这两个手势判定为同一个类别。此时需要将两个手势图形调整到相似大小。常见的方法是插值,即保持一个几何图形大小不变,通过插值使两个图形大小基本一致。但是插值的运算量通常是很大的。本文采用了缩放曲线边缘点的坐标的方法。假设图像的高为H,图像的宽为W,则对图像进行插值的时间复杂度为O(HW)。一般情况下,图像内的几何图形边缘像素点个数与图像矩形区域的周长是同一数量级。因此,缩放曲线边缘点的坐标的时间复杂度为O(H+W)。显然,缩放边缘点坐标的运算量远远小于图像插值的运算量。

采用根据封闭曲线长度进行缩放的方法。假设封闭曲线长度的初始值为Dori,即最后一个边缘像素点(第q-1 个像素点)的曲线长度lq-1。假设经过归一化后长度变为Ddes,为了实现缩放,首先需计算缩放比例系数:

经过线性缩放后,几何图形的中心变为

接下来,需要对边缘曲线按等长度间隔的方式选取Ddes个点,并计算经过缩放后的坐标。

假设(xk,yk)为被选取的边缘点,经过线性缩放后,(xk,yk)点的坐标变为

所以,经过归一化以后,(xzk,yzk)相对于中心点(czx,czy)的坐标为

假设:

则vk代表长度归一化后的边缘点(xzck,yzck)与中心点的距离。在采用DTW 方法匹配几何图形时,可以使用vk值(即曲线高度)。

计算曲线各个点与若干邻近点平均值的差值,对这些差值做DTW 匹配有望取得更好的结果。由于边缘曲线是封闭曲线,所以根据式(12)得到的各个vk计算差值时,如果出现左侧邻域或右侧邻域越界的情况,应将其看做循环周期信号进行处理。具体公式如下:

上式中,先对每个vk计算邻近的2u+1 个点的平均值,其中(k-u)mod q 为邻域左边界,(k+u)mod q 为邻域右边界,q 为边界曲线上点的个数,mod q的作用是:把vk看做循环周期信号进行取数。图4给出了对图2进行相对曲线高度计算的一个例子。

图4 相对曲线高度的一个例子

3 基于DTW的曲线匹配算法

利用上面得到的相对曲线高度特征采用DTW算法求取相似度,具体过程如下。

设模板序列为A 和测试序列为B,他们的长度分别为i 和j,那么首先得建立一个i*j 大小的矩阵,矩阵中的元素(m,n)对应两个序列元素的距离d(m,n),这里我们的特征采用相对曲线高度,求取距离的公式如下:

其中A 和B 分别代表两个序列中各个点的相对曲线高度,ABS()为求绝对值的函数。DTW 算法就是要在矩阵中寻找一条最短路径。按照DTW 算法的规则,路径必须从左下角开始右上角结束,因为曲线上的点都是逐个遍历,因此先后顺序是固定的。再根据单调性和约束性,(m,n)的前一个点只能是(m-1,n)、(m-1,n-1)和(m,n-1)三个点中的一个,所以计算距离的公式为

利用该公式就可以求出两个模板序列的累加距离,从而求出测试序列和所有模板序列的距离。

4 实验结果及分析

为验证本文算法的识别效果,对ASL手势库[16]中的‘0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’这十个数字的手势进行了测试。在ASL 手势库part1组,每个数字的手势包括25幅图像,十个数字共250 幅图像。测试分为两组,第1 组选取每个数字手势的第1幅图像为学习样本,其余24幅图像为测试样本。第2组选取每个数字手势的第1幅图像和第11 幅图像为学习样本,其余23 幅图像为测试样本。得到的识别准确率如表1所示。从表1可以看出,在每个数字选取1 幅图像为学习样本时,总体识别准确率为0.975。在每个数字选取两幅图像为学习样本时,总体识别准确率为1.0。表明本文的方法对手势具有较高的准确率。

表1 本文算法识别手势几何形状的准确率

在时间耗费方面,在CPU 为Intel i7-4900MQ,内存为8G 时,测得对单幅图像特征提取的平均时间为0.074s,两个手势的特征进行比对时平均时间为0.0011s。假设识别十种手势,每种手势保存两个特征模板,则识别一个手势所需的时间大约为20*0.0011+0.074=0.096s,表明本文的算法基本可以满足实时手势识别的要求。

5 结语

本文提出一种基于DTW 的手势识别算法,该算法能够对手势形状的时间序列进行规整,然后进行相似度计算。实验结果表明使用较少的样本也能取得较好的识别结果,由于DTW 算法具有鲁棒性强的特点,使得文本的算法对有一定形状变化的手势也能准确识别。经实际测试表明,本文的算法在识别十种手势时,识别一个手势所需的时间小于0.1s,可以满足实时手势识别的要求。

猜你喜欢

像素点中心点黑点
白菜长黑点还能吃吗?
Scratch 3.9更新了什么?
如何设置造型中心点?
磨课,一段痛苦与快乐交织的过程
一种X射线图像白点噪声去除算法
基于灰度直方图的单一图像噪声类型识别研究
基于canvas的前端数据加密
图像采集过程中基于肤色理论的采集框自动定位
有黑点的珍珠
白纸上的黑点