目录
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导: https://blog.csdn.net/qq_37340229/article/details/128243277
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于机器视觉的数字静态手势的匹配识别-OpenCV
课题背景和意义
现如今
,
人们对于人机交互技术的需求日益提高
,
手势识别便是人机交互的重要的手段之一
。 人机交互的目标是使人机器即计算机的性能与人 -
人交互相似
。
手势在我们的日常生活中起着重要作用,
它们可以帮助人们传达信息并表达自己的感受
。从技术上讲
,
手势是时空模式
,
可以是静 态的,
动态的或两者兼而有之的
。
手势识别技术可以应用于各个学科和我们的生活领域中了
,
如智
能家居方向就可以使用这种高效的控制方式实现对设备的操控
。手势识别的研究可以分为动态手势和静态手势。
其中
,
静态手势是利用模版匹配法进行手势识别
,
主要是分析不同特征
(
HOG
特征、
Gabor
特征
、几何特征
、谱图小波特征
以及多特征联合) 信息的识别效果
。
而动态手势则在静态手势的基础上基于状态转移的图模型方法,
检测和跟踪手势目标。例如基于深度卷积网络的深度学习方法可以通过 SSD 模型和微调网结构实现目标识别和匹配。手势识别成为了一种新型的人机交互手段,对于社会生产和日常生活都有着非常重要的研究意义。
实现技术思路
一、相关理论和实现过程
HSV 颜色模型
HSV
(
HUE
色调
,Saturation 饱和度
,
Value
明度
)
是根据颜色直观特性有
A. R. Smith
在
1978
年创建的一种颜色空间
。
H
的取值范围为
0° ~ 360°
,
红色为
0°
,
按逆时针开始计算
;
S
的取值越大
,
颜色越饱和;
V
的取值范围为
0% ~ 100%
,
由黑到白
。
一般情况下
,
RGB
模型面向的是工业工程
,
而HSV 模型面向的是用户
。
在本文中
,
HSV
颜色模型至关重要
,
通过该模型直接进行肤色分割
,
因为黄种人的肤色在 HSV
颜色模型中各项参数是由取值范围的
。
肤色范围
:
H
(
0 - 30
) ,S(
30 - 170
) ,
V ( 0 - 200
)
。
图像的获取
利用
VideoCapture
来访问计算机的摄像头
,
如若访问失败
,
便会输出摄像头打开失败的信息,
并停止程序
。
环境需要光线充足
,
用户必须穿着长袖衣物以遮挡手腕部分
。
当摄像头成功
打开
,
继续执行程序
,
将摄像头获取的图片帧储存到
frame
中
,
如若后续过程中摄像头没有接收到图片,
便输出没有获取图片并跳出获取图片帧的循环
。
手势轮廓提取
1)H
通道分离
为了后续的肤色分割处理
,
我们首先将图片转换为
HSV
空间
,
再将其中的
H
通道图片分离出来
单独处理
。
使用到了
OpenCV
函数库中的
cvtColor
函数
。
cvtColor
函数前两个参数便是输入与输出图片
,
第
三个参数
CV_RGB2HSV
表示将输入图片从
RGB
空间转换为
HSV
空间
。
Split
函数的作用是通道分
离
,
将图像分离为
H
、S、
V
三个通道并存入
channels
、channels、channels中。
RGB
转换
HSV
公式如下
:
2)肤色分割
通过上一步对图片
H
通道图像的提取
,
可以针对原图
H
的值将用户的皮肤提取出来
。
使用
in-
Range
函数
,
第一个参数即输入
,
后两个元素便是筛选的阈值区间
,
最后一个参数就是输出的图片
, 其中输出的图片是一幅二值化后的图像。
3)
滤波降噪
通过线性滤波器以减少噪声
,
使用中值滤波器来模糊图像
,
此方法相较于使用线性滤波器
,
处理
的图像细节更清晰
,
图像的边缘信息丢失少
,
但代价是需要更多的处理时间
。
4)
形态学处理
调用
morphologyEX
函数对降噪后的图片进行开运算处理
(
对图像先膨胀处理再进行腐蚀
。在删除图像中细小对象时很好用,
同样还可以放大低亮度区域
) ,
从而进一步去除大噪声
,
突出手势对象以便后续的手势提取。
经过多次实验验证
,
采用了
MORPH_RECT
的构建方式
,
即矩形的结构元素,
大小选择的是
7 × 7
。
5)
手势轮廓提取
手势轮廓提取前将上述步骤处理后的图片所具有的信息进行整理
,
图片提取出来
,
放入一个大小相同的图片窗口中,
并将其中的点存入被定为二位浮点型向量的
mContours
中
,以便后续的轮廓查找。轮廓提取效果图如图 :
手势的匹配识别
1)
手势模板制作
通过程序识别手势从
1
到
10
的数字表示
,
将进行手势的轮廓提取再将处理后的图片作为识别模板,
结果如图:
2)Hu
不变矩
Hu
不变矩实际上是指图像的
Hu
矩具有平移
、
旋转和缩放不变的性质
。
将每个图像看作一个
ρ
(
x
,y)
的密度分布函数
,
其分布区间放在
[0,255]
中
。
阈值对应的
(
p + q
)
阶中心矩定义如下
3)匹配识别
首先判定函数中的
mContoursProc
和
mContoursTemp
中已经储存了图片信息
,
然后应用
matchS-hapes 函数比较两张图片轮廓的
Hu
不变矩
,
并返回相似度大小
。
该函数共有三种比较匹配方式
: 最后一个参数 取 值 为 0,1,2 时
![](https://i-blog.csdnimg.cn/blog_migrate/c816bd38b1958aefc0180bb2365dbe5d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ba1c1c2a94b33522ba9a1c7dc9d1db7f.png)
二、结果分析
数据集来源
实验数据来源于
5
位志愿者在不同背景下的手势拍照图像集
,
共包含
10
种手势
,
每种手势有
10
张图
,
合计
100
张手势图
。
不同手势图像存在脖子
、
干扰手臂
、
灯光
、
景深以及复杂背景的干扰
,
部分实验图像如图
所示
。
将收集到
100
张图像随机分成训练集和测试集两个部分
,
训练集和测试集的比例为 7
:
3
。
识别结果分析:
为了验证基于 OpenCV 的静态手势识别技术的识别效果,分别选取 30 组 1 - 10 的手势数据,通 过已设定手势模板进行测试。输出结果中 hu 的值越小,表示匹配度越高,本文将 hu 小于 0. 15 的视 为匹配成功并输出。上图为手势数字识别结果,以箱线图和正态分布曲线形式表示。
根据各数字的 hu 不变矩特征值均值结果按大到小的排列顺序为: 7 > 5 > 8 > 2 > 6 > 3 > 1 > 10 > 4 > 9。
实现效果图样例
信息视觉数字手势识别:
我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。
毕设帮助,疑难解答,欢迎打扰!