再议指尖识别

来源: 张维祥的日志

用hough+细化的方法,识别速度快,但是在某些情况下容易造成误差,识别不是很稳定。如下图:

由于深度图的视差等原因,会有些点找不到,如上图握拳后掌心位置,如果还采用前一章的方法,细化结果会很糟糕(掌心处会产生若干干扰线段)造成识别不准确。

可以利用图像形态学中的开闭运算消除这种影响,但是当五指靠的非常近时会对手指间造成恶劣的影响(五指被靠在一起了)。

考虑其他方法:利用图像轮廓+图像中凸包和凸缺陷以及矩的概念进行识别。

opencv提供了轮廓图像的轮廓检测,通过返回最外层轮廓可以得到手的边缘。

利用轮廓然后可以得到凸包和凸缺陷,从而得到一系列凸顶点和凸缺陷(凹)顶点和凹的深度(其中包含指尖坐标)

如上图所示,一只手有很多凸缺陷,需要一定的策略判断哪些是手指缝那些是干扰,可利用

凹的深度和凸点和凹点的夹角([0,90))进行阈值判断,夹角利用三点的向量积求得。但是大拇指比较特殊(当张开很大时角度可能偏大)

这里可以利用矩的概念进行识别,

矩是沿X,y方向的积分,因此有一个轮廓矩的概念,

轮廓矩是沿轮廓边界像素的积分,

用来计算形状的重心,面积,主轴和其它的形状特征等,因此可以求得手掌重心,根据其与凸缺陷点的物理距离可以舍去其他干扰因素。最终可求得指尖坐标。

 

相对上章算法,轮廓算法识别速度略显慢,但是识别精度比较高,稳定性好。不影响实时识别。但是存在下面问题:当只有一个手指头伸出或者做“六”动作的时候,轮廓不存在凹点,也就无法识别指尖了,因此,需要结合:

对轮廓识别出来后,如果轮廓法识别出0个指尖,那么对轮廓内部进行填充(消除第一张图的影响),利用hough法进行识别。两者的结果即为最终结果。

上结果图:

 

手指识别做好后,可以基于它做许多的应用,我基于识别结果做了个小的实例,可以隔空查看图片和看视频,废话不说,上图。

看图

 

 

看电影

如果将其与一些软件结合,可以做出很好的前景。如将其与U3D,UDK等3维可视化软件结合,可以做出一些比较有意思的体感游戏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值