一种基于深度图的手部特征点检测方法
【技术领域】
[0001] 本发明属于计算机模式识别和计算机视觉的技术领域,具体地涉及一种基于深度 图的手部特征点检测方法。
【背景技术】
[0002] 手势交互是新型人机交互研宄中一种重要的交互方式,这种交互是非接触性的、 自然的交互,更符合人的自然行为,因此基于手势的交互方式将是未来人机交互发展的趋 势。手势识别技术涉及人工智能、模式识别、机器学习、计算机图形学等众多学科。另外手 势的研宄设计到数学、计算机图形学、机器人运动学、医学等诸多学科。因此,手势识别的研 宄具有非常重要的研宄价值与研宄意义。当前基于手势交互的研宄主要集中在基于RGB光 学图像的处理上,包括人手检测、目标跟踪、手势识别三部分。
[0003] 手势检测用于检测获取控制权的手势,主要分为静态手势与动态手势两种方式, 静态手势的检测应用的是基于区域特征的目标检测方法,比如Haar特征、H0G特征、肤色特 征、形状特征等,动态手势的检测主要是基于运动的检测算法,根据运动区域的特征检测某 种预定义的手势。目前手势检测研宄较为成熟,但受光照、背景等的影响。
[0004] 目标跟踪分为非变形目标的跟踪与变形目标的跟踪。非变形目标跟踪主要基于形 状、轮廓、模板等特征,结合粒子滤波等目标搜索算法,叠加目标小角度旋转、缩放、平移等 仿射变换实现跟踪,跟踪较好且能准确判断目标是否跟踪丢失。变形目标跟踪主要基于颜 色等区域特征,结合Camshift、MeanShift等搜索算法实现区域的跟踪。
[0005] 手势识别部分与传感器无关,主要是针对跟踪结果生成的目标序列进行轨迹、时 间序列等的识别,主要算法有HMM、DTW、模板匹配等,根据对序列的切分与分类结果识别其 中的有效手势并交由系统后端进行处理。
[0006] 但由于RGB图像无法获取物体在三维空间中的信息,相关的算法受到周围环境、 光照、背景等因素的影响,在目标检测与跟踪上鲁棒性交叉,难以实现复杂场景下的任意目 标检测和在线跟踪,应用收到很大的限制。因此,越来越多的研宄者开始利用深度图像来进 行目标的检测和跟踪,从而将目标于背景分离开来,提高目标检测与跟踪的准确率。现有的 深度程序应用研宄主要集中在基于人体控制的研宄,通过对人体骨骼提取实现体感控制与 行为识别,这些检查算法要求人体的大部分出现在场景中,并且不能与其他目标连接,应用 范围受到了限制。
【发明内容】
[0007] 本发明的技术解决问题是:克服现有技术的不足,提供一种基于深度图的手部特 征点检测方法,其克服基于RGB光学图像以及深度图像手部检测算法等在实际手势交互场 景中的局限性,能够基于深度图像进行手部特征点识别。
[0008] 本发明的技术解决方案是:这种基于深度图的手部特征点检测方法,包括以下步 骤:
[0009] (1)手部分割:利用Kinect采集到人体运动视频序列来提取手部,通过深度图利 用0PENNI得到人体手部位置信息,通过设定搜索区域及深度阈值方法,初步获得手心点; 利用0PENCV的find_contours函数得到手部轮廓;通过找到手轮廓内最大内接圆圆心,精 确确定手部手心点,通过计算所有手部内部点到轮廓点之间的最短距离m,在最短距离中找 到最大值M,M所代表的手部内部点为手心点,内接圆半径R=M;
[0010] (2)特征点提取:设计实现了一种改进的基于CSS曲率图进行手部特征点(指尖 点及指谷点)检测的方法。通过不断对手部轮廓进行高斯平滑,并结合曲率阈值从而得到 CSS曲率图,根据图中CSS轮廓分析极限值得出手部指尖点及指谷点坐标,同时需要补全根 据CSS曲率图无法得到的手部指谷点;
[0011] (3)补全缺失手指,提出一种利用角度阈值和深度跳变结合的方式来补全缺失手 指的方法,从而找到弯曲手指的指尖点。
[0012] 本发明采用微软公司的Kinect传感器,通过Kinect获取人体运动深度图像与彩 色图像,通过深度图利用0PENNI得到人体骨架点信息,通过0PENCV的find_contours函数 得到手部轮廓,通过找到手轮廓内最大内接圆圆心,确定手部手心点,从而克服基于RGB光 学图像以及深度图像等手部检测算法在实际手势交互场景中的局限性,能够基于深度图像 进行手部特征点识别。
【附图说明】
[0013] 图1根据本发明的一种基于深度图的手部特征点检测方法的流程图。
[0014] 图2根据本发明的裁剪手腕的流程图。
[0015] 图3根据本发明的获取指尖CSS曲线流程图
[0016] 图4根据本发明的补全指谷点流程图。
【具体实施方式】
[0017] 这种基于深度图的手部特征点检测方法,包括以下步骤:
[0018] (1)手部分割:利用Kinect采集到人体运动视频序列来提取手部,通过深度图利 用0PENNI得到人体手部位置信息,通过设定搜索区域及深度阈值方法,初步获得手心点; 利用0PENCV的find_contours函数得到手部轮廓;通过找到手轮廓内最大内接圆圆心,精 确确定手部手心点,通过计算所有手部内部点到轮廓点之间的最短距离m,在最短距离中找 到最大值M,M所代表的手部内部点为手心点,内接圆半径R=M;
[0019] (2)特征点提取:设计实现了一种改进的基于CSS曲率图进行手部特征点(指尖 点及指谷点)检测的方法。通过不断对手部轮廓进行高斯平滑,并结合曲率阈值从而得到 CSS曲率图,根据图中CSS轮廓分析极限值得出手部指尖点及指谷点坐标,同时需要补全根 据CSS曲率图无法得到的手部指谷点;
[0020] (3)补全缺失手指,提出一种利用角度阈值和深度跳变结合的方式来补全缺失手 指的方法,从而找到弯曲手指的指尖点。
[0021] 本发明采用微软公司的Kinect传感,通过Kinect获取人体运动深度图像与彩色 图像,通过深度图利用0PENNI得到人体骨架点信息,通过0PENCV的find_c〇nt〇urs函数得 到手部轮廓,通过找到手轮廓内最大内接圆圆心,确定手部手心点,从而克服基于RGB光学 图像以及深度图像人体检测算法等在实际手势交互场景中的局限性,能够基于深度图像进 行手势分割。
[0022] 优选地,所述步骤(1)中在计算手部内部点到每一个手部轮廓点的最小距离m时, 如果当前最小距离比当前的最大距离M小,假设这一点并不是处在中心点位置,忽略计算 此点到其他手部轮廓点的距离。
[0023] 优选地,所述步骤(1)中在手部内部和手部轮廓的N个连续的点中,只计算一个 点,N彡1〇
[0024]优选地,N= 8。
[0025] 优选地,所述步骤(2)包括以下分步骤:
[0026] (2. 1)根据公式(1)计算手部轮廓每一点的曲率,设轮廓每一点(x(t),y(t)),t= 0, ? ?N-l
[0028] 其中雄),.)>(0和邱),KO表示轮廓中位置为t的点的一阶导和二阶导,曲率阈值 为g,计算出轮廓中每一点曲率经过g的点,并记录到css曲线图;
[0029] (2. 2)根据公式(2)利用高斯平滑,对手部轮廓不断进行平滑处理
[0031] 其中?表示卷积,g(t,0)表示高斯函数,不断对手部轮廓进行高斯平滑,直到所 有点的曲率都经过指定阈值;获取CSS曲线(t,〇 ),其中〇代表使得参数点t对应卷积曲 线曲率位于2~2. 5之间的取值;在不断平滑过程中,每点曲率范围跳变在0. 5以内,保证 所有点的曲率都位于2~2. 5之间;通过寻找CSS曲线图中的局部极大值点,找到手指