向,找到集合当中沿此方向距离最 远的点,作为大拇指指尖点,最近的点作为大拇指指根点。确定大拇指所在位置,结合方法 1,可确定之后其他手指弯曲时指尖点位置。
[0070]本文通过实现多边形拟合、K-COS、CSS三种利用手部轮廓提取特征点方法,对CSS提取手部特征点方法同其它两种方法进行了对比实验。在实验中,一共读入24种随机手部 轮廓,将同一手部轮廓分别按照上述三种方法进行特征点提取。CSS方法能够较好的剔除手 部轮廓中凸起并不明显的点,将其不算入手指指尖点,而多边形拟合和K-C0S两种方法常 常会将凸起的手腕点误算为指尖点。同时,对于凸起相对不明显的手指,CSS和K-C0S方法 可得到五指指尖,而多边形拟合方法无法只根据轮廓得到手指指尖点。
[0071] 接下来,对于全部手型轮廓集合,分别按照三种方法提取手部指尖点,统计每种方 法均方根误差、最大误差、缺失手指、算错手指四种指标。
[0072] 实验结果如表1~4所示,可以看出CSS方法检测手指指尖特征点正确率较好(如 表1,表1示出了三种方法各个手指指尖点均方根误差),同时最大误差同另外两种方法相 比较低(如表2,表2示出了三种方法各个手指指尖点最大误差)。对于完全弯曲的手指, 三种方法都不能只根据轮廓很好的检测出全部手指(如表3,表3示出了三种方法丢失手指 数量),对于弯曲手指指尖点的检测,需要根据角度阈值方法得到指尖点坐标。在排除手部 轮廓凸点中非指尖点的效果上,CSS方法有良好的排除能力(如表4,表4示出了三种方法 算错手指数量)。
[0073]表1
[0079]
[0080]表 4
[0082] 以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依 据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明 技术方案的保护范围。
【主权项】
1. 提出一种基于深度图的手部特征点检测方法,包括以下步骤: (1) 手部分割:利用Kinect采集到人体运动视频序列来提取手部,通过深度图利用 OPENNI得到人体手部位置信息,通过设定搜索区域及深度阈值方法,初步获得手心点;利 用OPENCV的find_contours函数得到手部轮廓;通过找到手轮廓内最大内接圆圆心,精确 确定手部手心点,通过计算所有手部内部点到轮廓点之间的最短距离m,在最短距离中找到 最大值M,M所代表的手部内部点为手心点,内接圆半径R = M ; (2) 特征点提取:通过不断对手部轮廓进行高斯平滑,并结合曲率阈值从而得到CSS曲 率图,根据图中CSS轮廓分析极限值得出手部指尖点及指谷点坐标,同时需要补全根据CSS 曲率图无法得到的手部指谷点; (3) 补全缺失手指,利用角度阈值和深度跳变结合的方式来补全缺失手指,从而找到弯 曲手指的指尖点。2. 根据权利要求1所述的基于深度图的手部特征点检测方法,其特征在于:所述步骤 (1)中在计算手部内部点到每一个手部轮廓点的最小距离m时,如果当前最小距离比当前 的最大距离M小,假设这一点并不是处在中心点位置,忽略计算此点到其他手部轮廓点的 距离。3. 根据权利要求2所述的基于深度图的手部特征点检测方法,其特征在于:所述步骤 (1) 中在手部内部和手部轮廓的N个连续的点中,只计算一个点,N多1。4. 根据权利要求3所述的基于深度图的手部特征点检测方法,其特征在于:N = 8。5. 根据权利要求4所述的基于深度图的手部特征点检测方法,其特征在于:所述步骤 (2) 包括以下分步骤: (2. 1)根据公式(1)计算手部轮廓每一点的曲率,设轮廓每一点(x(t),y(t)),t = 0, · · N-I Ho=(mm - myu)) / (-^2 (〇+>·2 (〇) (ι) 其中仍和冲),KO表示轮廓中位置为t的点的一阶导和二阶导,曲率阈值为g, 计算出轮廓中每一点曲率经过g的点,并记录到CSS曲线图; (2.2) 根据公式(2)利用高斯平滑,对手部轮廓不断进行平滑处理 x'(t) = .\it)(E)g(t,a) y'(t)= y(t)<S)g(t,a) (2) 其中表示卷积,g(t,〇)表示高斯函数,不断对手部轮廓进行高斯平滑,直到所有点 的曲率都经过指定阈值;获取CSS曲线(t,σ ),其中σ代表使得参数点t对应卷积曲线曲 率位于2~2. 5之间的取值;在不断平滑过程中,每点曲率范围跳变在0. 5以内,保证所有 点的曲率都位于2~2. 5之间;通过寻找CSS曲线图中的局部极大值点,找到手指指尖点 集; (2.3) 指谷点的计算与步骤(2.2)中指尖点计算相同,但对应卷积曲线曲率位 于-1. 5~-1之间; (2. 4)遗漏指谷点补充:若第一个指尖点位置比第一个指谷点位置靠前,则此指尖点 之前缺失一个指谷点,根据第一个指尖点和指谷点在手部轮廓中的相对位置的距离,在指 尖点前方估算出对应指谷点坐标,并将新指谷点放入指谷点集合中;若当最后一个指尖点 位置比第最后指谷点位置靠后,则此指尖点之后缺失一个指谷点,则根据最后一个指尖点 和指谷点在手部轮廓中的相对位置的距离,在指尖点后方估算出对应指谷点坐标,并将新 指谷点放入指谷点集合中; (2.5)估算手指关节点:先判断大拇指指尖是否已被检测,点列的前15%~25%内,若 已检测出指尖点,则判断为大拇指指尖,否则认为大拇指指尖未被检测;两个指谷点中点为 指根,结合指尖点,利用其平均得到手指的关节点,大拇指为两个关节点,其它手指为三个 关节点。6.根据权利要求5所述的基于深度图的手部特征点检测方法,其特征在于:所述步骤 (3)包括以下分步骤: (3. 1)若大拇指已被检测:设定另外四指中的指根与大拇指指根以及掌心连线的余弦 argcos 的范围:0· 8+g ~I. 4+g, I. 4+g ~I. 7+g,I. 7+g ~2+g,>2+g,g = (45-depth) *0· 03, depth表示当前深度;根据此范围判断CSS未检测到的手指类型:计算CSS已检测到的手指 指根同掌心以及大拇指指根的角度,如果没有角度落入之前设定好的角度阈值内,则认为 对应手指类型的指尖点缺失;以手掌心为起点,取该手指对应搜索范围的中值角度,搜索在 此直线上深度跳变最大的点,取为由于手指弯曲而丢失的手指指尖点坐标; (3.2)若大拇指未被检测:搜索手部轮廓内所有点当中深度最小的点集合,在该集合 当中,以手轮廓15%~25%排序点的中点,朝掌心方向,找到集合当中沿此方向距离最远 的点,作为大拇指指尖点,最近的点作为大拇指指根点。
【专利摘要】本发明公开了一种基于深度图的手部特征点检测方法,包括步骤:(1)利用Kinect采集到人体运动视频序列来提取手部,通过深度图利用OPENNI得到人体手部位置信息,通过设定搜索区域及深度阈值方法,初步获得手心点;利用OPENCV的find_contours函数得到手部轮廓;通过找到手轮廓内最大内接圆圆心,精确确定手部手心点,通过计算所有手部内部点到轮廓点之间的最短距离m,在最短距离中找到最大值M,M所代表的手部内部点为手心点,内接圆半径R=M;(2)通过不断对手部轮廓进行高斯平滑,并结合曲率阈值从而得到CSS曲率图,根据图中CSS轮廓分析极限值得出手部指尖点及指谷点坐标,补全根据CSS曲率图无法得到的手部指谷点;(3)补全缺失手指。
【IPC分类】G06T7/20, G06K9/62
【公开号】CN104899600
【申请号】CN201510282688
【发明人】孔德慧, 李淳, 王少帆, 尹宝才
【申请人】北京工业大学
【公开日】2015年9月9日
【申请日】2015年5月28日