ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于视觉的动态手势轨迹跟踪

2020-01-25 13:42:21  阅读:364  来源: 互联网

标签:轨迹 手部 跟踪 图像 视觉 矩形 手势


这个是我的综合实践与设计的课题,作为毕设的一部分,因为时间比较紧,做的很简单。主要实现了在简单背景下,利用笔记本摄像头实时采集视频,根据肤色检测识别手部区域并跟踪手部运动轨迹。

项目的GitHub地址:(采用C++,基于opencv)
https://github.com/1092366225/HandGestureRecognition
代码百度网盘链接:
链接:https://pan.baidu.com/s/1Wh9qRPjjqY4pL5HrFfdwzg
提取码:zd2w

效果如下:(画五角星)
在这里插入图片描述

1.背景介绍

手势分为静态手势和动态手势,静态是指一个固定的手的形姿态,比如摆出“V”的pose,动态是指手部的位置或形态变化的含义,比如画个圈。

手势识别技术在人机交互领域有很大的作用和应用前景。目前已经发展地比较久了,有着很多的实现方案,但是仍然存在鲁棒性不强,识别率不高或者是无法满足实时性的问题。

手势识别主要有基于计算机视觉、基于超声波和基于惯性传感器三种实现方式。我采用的是基于视觉的,通过处理真实的视频图像来识别手势,分为手势分割、轨迹跟踪和分类识别三个过程,这里只实现了前两步。

2.主要流程与算法

流程图:
在这里插入图片描述

(1)手势分割

利用人的肤色在YCrCb颜色空间的聚类性质,根据颜色来区分图像中的手部和背景。先把图像转换到YCrCb颜色空间,然后采用otsu自适应阈值来对Cr通道进行划分。当然也可以根据经验值或者训练值直接给出阈值,不过效果较差。

处理后的二值图像如下:
在这里插入图片描述
这时候会发现有很多干扰区域,所以先对图像进行形态学处理,先膨胀后腐蚀,消除小的封闭空间。结果如下:
在这里插入图片描述
然后利用opencv中的相关算法来找出图中的各个连通域的外接矩形,同时把面积较小的先排除。

之后图像中最大的连通域有两块:手部和脸部。采用模板匹配的方法来排除脸部的干扰(也可以用其他方法,比如手指个数,肤色比例等),模板是用ps做的
在这里插入图片描述
这样就可以划分出手部区域:(图中的红色小矩形表示模板匹配最佳点的结果,绿色矩形为手部区域的外接最大矩形)
在这里插入图片描述

(2)轨迹跟踪

跟踪手的运动轨迹可以采用图像跟踪算法,经典的有光流法、camshift等,或者目前比较主流的KCF、深度学习等。我原本想采用camshift,但是没能成功,就直接利用每帧图像中检测到的手部位置来跟踪轨迹。

用手部外接矩形的左上角坐标来表示手的位置。然后等间隔采样得到坐标点序列,再根据每个坐标与坐标序列中心点的角度对其进行离散化,提取特征向量用于后期的分类识别。

例如8连通链码得到的特征向量为0-7的整数序列
在这里插入图片描述

realfancy 发布了24 篇原创文章 · 获赞 9 · 访问量 2万+ 私信 关注

标签:轨迹,手部,跟踪,图像,视觉,矩形,手势
来源: https://blog.csdn.net/realfancy/article/details/104082637

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有