指尖检测根据应用可以分为单指尖检测和多指尖检测。
下面是我在工作中想到的方法,希望对你有用或提供点儿灵感。
单指尖检测新方法:重心距离法
- 找到手的区域,我一般用肤色检测
- 计算手的区域的重心
- 在手的区域的边缘点集中寻找距离重心最远的点,该点即为指尖候选位置
- 判断找到的点是否为指尖。判据:候选点到重心的距离大于边缘到重心平均距离的1.6倍,即为指尖;否则不是指尖,也就是说没有手指伸出
下面是我在随便挑的几张图片上做的试验
下面是我在应用中的试验截图:
说明:红色圆是平均距离;蓝色为重心;绿色表示最远点,其中叉表示该点不是指尖,矩形表示该点是指尖
仔细看图,你会知道该算法的准确度怎么样
多指尖检测方法之一:
1.细化图像,端点就是候选指尖点集:
2.找出指尖的点。仍然可以用重心距离法,当然这次操作是在候选指尖点集中进行
本算法主要用于多指尖检测。
多指尖检测方法之二:
本算法是单指尖检测重心距离法的延伸
算法:找出手的区域的freeman chain code,也就是一个有序的边缘,然后求出其中所有点到重心的距离
相信你看到下图就会迫不及待地想要用自己的方法找到指尖,正好,因为我还没有找到准确度很高的找到指尖的方法。
这里我只是提供一个比较有效地特征,希望对你有用。
对图像的说明:四条线,从下往上,第一条是各点到重心的距离,第二条是第一条线的平滑,第四条是第一条的导数,第三条是第四条的平滑
第一组:
第二组:
多指尖检测方法之三:
使用轮廓