指尖检测测试(二)

本文介绍了在指尖检测中,使用凸包和曲率结合的方法来确定手指点。首先计算手部轮廓的中心或重心,然后通过凸包算法排除干扰点。凸包算法通过选取y坐标最小的点作为基点,按角度排序并逆时针扫描,判断点是否在凸包上。最后,给出了部分代码示例和检测效果。
摘要由CSDN通过智能技术生成

    接着上一篇《指尖检测(一)》讲,当用曲率的方式检测出候选指尖点后,我们需要踢出非指尖点,主要就是手指间的凹槽。从原理上分析,如果候选点集Pi(i=0,1,2....)按照一定方式排列,比如都按顺时针或者逆时针存储在一个数组中,那么向量(Pi-1,Pi)和(Pi,Pi+1)(说明,这里向量表示不是这样的,因为这上面编辑公式不太方便就用这种方式表示了,大家理解就行) 的叉乘正负性不同也就是方向不同,通过这样的方式可以检测出来那哪些是指尖。理论上是可行的,但是我在具体编程时发现不太好写,因为我所找到的点是通过Opencv的一个函数得到的,点放在CvSeq的对象中,我输出了所以点进行观察,但是发现那些点既不是顺时针也不是逆时针排列,搞不清楚怎么排的。

    还有种方法也可以去掉凹槽,那就是先算出手部轮廓坐标中心(横坐标平均,纵坐标平均)或者算重心(用矩算),然后根据点之间距离差异滤掉干扰点,但是在设置阈值上有点麻烦,如果手部轮廓图大小发生变化,那么固定阈值就不起作用。我考虑过用自适应阈值的方式,那就是通过图像大小和手部轮廓大小的比例关系来设置阈值,但我还为做实验验证是否可行。

    那么由于有这些问题所在,我最后采用凸包和曲率结合的办法,在用曲率确定了候选点后,再用凸包算法找到手部轮廓凸包,再将凸包顶点与候选点比较获得手指点。

凸包算法简介:

1.在所有点中选取y坐标最小的一点H,当作基点。如果存在多个点的

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值