基于Opencv的手势识别系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分割即将目标物体从背景中分离,以便进行下 一步分析。常用方法:
• 背景差分法 • 基于肤色空间的分割 • 通过训练器进行训练
本系统使用第二种方法,因为其计算量小,在背景及 光照不变的情况下效果比较理想
8
3.3 基于肤色的手势分割
根据肤色在某一颜色空间中的取值范围进行分割 提取,主要是在RGB和HSV、 Ycrcb空间中。
--图像的复原
• 针对图像降质的原因,设法去补偿降质因素,从而使改善后的 图像尽可能的逼近原始图像。
• 图像增强的两大应用
– 改善图像的视觉效果 – 突出图像的特征,便于计算机处理 方法
(1)灰度变换
(2)直方图修正
线性:均值滤波器 ,高斯平滑滤波器
(3)滤波
非线性:中值滤波 边缘保持滤波
直接灰度变换
在进行进一步的边缘检测、图像分割、特征提取、 模式识别等处理前,需要采用适当的方法尽量减 少噪声 • 最常见的图像噪声:脉冲噪声 • 特点:
– 噪声点的取值与图像信号本身无关 – 椒盐噪声 – 随机值脉冲(加性)噪声
• (a) 原始图像
(b)高斯噪声
• 被高斯噪声所污染的图像
3X3窗口
7X7窗口
16
谢谢!
17
– 最大值滤波
– 最小值滤波
中值滤波消除雀斑 中值滤波消除雀斑
a
b
c
d
e
f
g
图4-24 噪声平滑实验图像 (a) Lena原图; (b) 高斯噪声; (c) 椒盐噪声; (d) 对(c)平均平滑; (e) 对(b)平均平滑; (f) 对(b)5×5中值滤波; (g) 对(c)5×5中值滤波
3.2 手势检测与分割
• 总体结构如下:
5
3.系统实现分析
• • • • 图像(包含手势)的预处理 肤色检测与分割 手势模板匹配 跟踪与预测算法:Camshift算法和Kalman 算法 • 接口部分的设计与实现
6
3.1 图像预处理
预处理目的: 为了改善图像的质量,有两种方法: -- 图像的增强
• 不考虑图像降质的原因,只将图像中感兴趣的特征有选择 的突出,而衰减次要信息 • 特点:能提高图像的可读性,但改善后的图像不一定逼近 原始图像。可用场合:如衰减各种噪声、突出目标的轮廓等
• 所有方法都是根据肤色图像所在颜色区域 空间分布的大量实验统计结果,具有一定 适用性。 • 比如第一种基于RGB颜色空间的方法具体 判断条件为: R>95,G>40,B>20,R-B>15,R-G>15 或者R>200,G>210,B>170, |R-B|<=15,R>B,G>B
具体实验效果如下图所示:
中值滤波
– 中值滤波的原理 • 用模板区域内象素的中值,作为结果值 • R = mid {zk | k = 1,2,…,9} • 强迫突出的亮点(暗点)更象它周围的值, 以消除孤立的亮点(暗点)
中值滤波
– 中值滤波算法的实现
• 将模板区域内的象素排序,求出中值。 • 例如:3x3的模板,第5大的是中值, • 5x5的模板,第13大的是中值, • 7x7的模板,第25大的是中值, • 9x9的模板,第41大的是中值。 • 对于同值象素,连续排列。 • 如(10,15,20,20,20,20,20,25,100)
3 4 6 7 9 10 10 11 10 10 9 7 6 4 3
2 3 4 5 7 7 8 8 8 7 7 5 4 3 2
2 2 3 4 5 5 6 6 6 5 5 4 3 2 2
15X15高斯滤波模板
邻域运算
• 输出图象中每个象素是由对应的输入象素 及其一个邻域内的象素共同决定时的图象 运算。 • 通常邻域是远比图象尺寸小的一规则形状。
1 2 2 4 2 2 1
5 7 10 12 14 16 17 18 17 16 14 12 10 7 5
1 1 2 2 2 1 1
6 8 10 13 15 17 19 19 19 17 15 13 10 8 6 6 8 11 13 16 18 19 20 19 18 16 13 11 8 6
7X7 高斯滤波模板
3
• 本系统目标: 通过读取摄像头信息来识别相应的手势进行鼠标控 制。 • 控制逻辑如下: 手掌(五指全部伸开时)表示鼠标移动(用手掌 中心来对应移动距离),一根手指表示点击(最 好的体验应该是通过指尖来确定位置,但是实现 比较困难的话就先用手掌中心进行代替),拳头 表示鼠标按键弹起
2.系统总体结构
• 均值滤波器的效果
(a)原图像 (b)3*3均值滤波 (c)5*5均值滤波 (d)9*9均值滤波
(e)15*15均值滤波
(f)36*35均值滤波
观察6幅图,总结邻 域平均模板大小对滤波结 果的影响。
高斯平滑滤波器
高斯平滑滤波器-1
根据高斯函数选择邻域内各像素的权值
(i 2 j 2 ) 2 2 j] e
9
HSV颜色空间
基于颜色空间的肤色分割方法
现有的部分方法: • 第一种:RGB color space • 第二种:RG color space • 第三种: Ycrcb之cr分量+otsu阈值化 • 第四种:YCrCb中D133<=Cr<=173 77<=Cb<=127 • 第五种:HSV中D 7<H<29
g[i,
高斯平滑滤波器…2
高斯函数具有五个重要的性质: • 旋转对称性
在各个方向上的平滑是一致的
• 单调递减
邻域的影响随着距离的增加而减弱
• 付氏频谱是单瓣的
保留所需信号
高斯平滑滤波器…3
• 参数σ调节平滑程度
在过平滑与欠平滑之间取得平衡
• 可分离性
降低计算复杂度
高斯平滑滤波器…4
模板设计方法: •直接法
g[i,
(i 2 j 2 ) 2 2 j ] ce .
g[i, j ] c
(i 2 j 2 ) 2 2 e .
2=2,n=7 ó
Байду номын сангаас 高斯平滑滤波器-6
(2)放大,取整
i , j
-3 -2 -1 0 1 2 3
-3 1 4 7 10 7 4 1
-2 4 12 26 33 26 12 4
基于Opencv的手势识别系统分析
指导老师:鲁晓军 作者:毛晓洁 日期:2013.10.18
1
基于Opencv的手势识别系统分析
• • • • •
系统研究背景 手势识别流程分析 系统总体结构 系统的设计与实现 总结
2
1.系统研究背景及应用
• 人机交互在当今计算机技术迅猛发展的今 天逐渐成为人们日常生活中的重要部分 • 手势识别是一种简单、直观的新的交互方 式,被越来越多的采用 • 基于手势识别的窗口控制系统,可以应用 在很多方面,比如PC上的鼠标控制、 Android界面控制、图片浏览、音乐播放器 控制等方面。
1 2 2 4 2 2 1
3 4 6 7 9 10 10 11 10 10 9 7 6 4 3
2 2 4 8 4 2 2
4 5 7 9 11 12 13 13 13 12 11 9 7 5 4
2 4 8 16 8 4 2
2 2 4 8 4 2 2
5 7 9 10 13 14 15 16 15 14 13 10 9 7 5
6 8 10 13 15 17 19 19 19 17 15 13 10 8 6
5 7 10 12 14 16 17 18 17 16 14 12 10 7 5
5 7 9 10 13 14 15 16 15 14 13 10 9 7 5
4 5 7 9 11 12 13 13 13 12 11 9 7 5 4
高斯平滑滤波器-5
直接法:
直接根据高斯函数的离散值计算模板权值
(1)计算离散值
i , j
-3 -2 -1 0 1 2 3 -3 .011 .039 .082 .105 .082 .039 .011 -2 .039 .135 .287 .368 .287 .135 .039 -1 .082 .287 .606 .779 .606 .287 .082 0 1 .105 .082 .368 .287 .779 .606 1.000 .779 .779 .606 .368 .287 .105 .082 2 .039 .135 .287 .368 .287 .135 .039 3 .011 .039 .082 .105 .082 .039 .011
• 拳头判断: 图像的面积大于一定阈值,且其轮廓大致 为多边形的判定为拳头。 • 无手势判断: 当图像面积小于一定值时判断没有手势出 现。
5 接口的设计与实现
• 鼠标控制——调用相应的系统控制函数, 控制其移动、单击、弹起操作 • 接口的设计:根已定义的模型对手势图像 处理的结果进行判别,并根据判别结果在 手势变换时调用不同的鼠标控制函数,控 制其位置移动及单击、弹起操作 • OpenCV窗口的前端显示
11
5. 系统测试
• 对系统进行功能测试,其效果:
右图是系统运行时的鼠标 操作记录
12
下图是系统运行时的手势识别窗口,右图是对 右图二值化处理后的结果
13
总结
• 本系统利用目前比较成熟的OpenCV的相关 函数,进行了基于肤色分割和模板的手势 识别的研究,并利用已有的鼠标控制函数 进行了简单的虚实交互。 但在手势识别精度、更多手势匹配、算法 速度方面还有很大不足,需要进一步改善。
– 如:下面情况中,一个点的邻域定义为以该点 为中心的一个圆内部或边界上点的集合。
• 邻域运算与点运算一起构成最基本、最重 要的图象处理工具。
非线性滤波
中值滤波器
(1)取邻域 (2)按亮度 值大小排列 像素点 (3)选排序 像素的中间 值作为中心 点的新值
中值滤波
• 中值滤波的原理 –用一个N×N的窗口(N=3,5,7…)在图像上 滑动,把窗口中像素的灰度值按升/降次序排列, 取排列在正中间的灰度值作为窗口中心所在像 素的灰度值。 • 性质 –是一种非线性滤波,对消除脉冲噪声十分有效。 –在去除噪音的同时,可以比较好地保留边的锐 度和图像的细节
-1 7 26 55 71 55 26 7
0 10 33 71 91 71 33 10
1 2 3 7 4 1 26 12 4 55 26 7 71 33 10 55 26 7 26 12 4 7 4 1
(3)规范化,使权值之和为1
1 1 2 2 2 1 1
2 2 3 4 5 5 6 6 6 5 5 4 3 2 2 2 3 4 5 7 7 8 8 8 7 7 5 4 3 2
• 灰度级变换的应用之一
– 亮度调整——加亮、减暗图像
255 218
255
32
128 255 128 255
求反
对比度增强
亮度增强
直接灰度变换图例
一个指纹图像增强的实例
直方图修正
直方图的作用
直方图修正
灰度均衡
有时也称直方 图均衡
直方图修正 直方图均衡化
图像中的脉冲噪声模型 • 在图像传输过程中,经常会受到各种噪声的干扰,
• 中值滤波
– 主要用途:钝化图像、去除噪音 – 计算公式:R = mid {zk | k = 1,2,…,9}
• 最大值滤波
– 主要用途:寻找最亮点 – 计算公式:R = max {zk | k = 1,2,…,9}
• 最小值滤波
– 主要用途:寻找最暗点 – 计算公式:R = min {zk | k = 1,2,…,9}
HSV(hue, saturation and value)的缩写 – A. R. Smith根据颜色的直观特性于1978年创建的, 也称 六角锥体模型(hexcone model),如下图所示 – HSV的表示方法 • 色调:用角度度量,0°~360°。红色为0°,按 逆时针方向计算,绿色为120°,蓝色为240° • 饱和度:取值范围为0.0~1.0 • 亮度值:取值范围为0.0(黑色)~1.0(白色)
通过实验可知第一种及第五种方法较优。选 二者进行分别实验,可满足要求。考虑过 将二者结合起来,但是效果不理想。本系 统中选取第一种方法。
4. 手势模板匹配
模板库中包含三种手势定义:
• 手掌 • 拳头 • 无
10
匹配算法实现
• 手掌判断: 提取出手势图像后转化为灰度图像,在其 轮廓外侧用矩阵框圈起,计算出矩阵框圆 心,在其上半部分划几条线,如果测出是 黑(其值为0)白(非0)相间,则判断为 手掌
• 背景差分法 • 基于肤色空间的分割 • 通过训练器进行训练
本系统使用第二种方法,因为其计算量小,在背景及 光照不变的情况下效果比较理想
8
3.3 基于肤色的手势分割
根据肤色在某一颜色空间中的取值范围进行分割 提取,主要是在RGB和HSV、 Ycrcb空间中。
--图像的复原
• 针对图像降质的原因,设法去补偿降质因素,从而使改善后的 图像尽可能的逼近原始图像。
• 图像增强的两大应用
– 改善图像的视觉效果 – 突出图像的特征,便于计算机处理 方法
(1)灰度变换
(2)直方图修正
线性:均值滤波器 ,高斯平滑滤波器
(3)滤波
非线性:中值滤波 边缘保持滤波
直接灰度变换
在进行进一步的边缘检测、图像分割、特征提取、 模式识别等处理前,需要采用适当的方法尽量减 少噪声 • 最常见的图像噪声:脉冲噪声 • 特点:
– 噪声点的取值与图像信号本身无关 – 椒盐噪声 – 随机值脉冲(加性)噪声
• (a) 原始图像
(b)高斯噪声
• 被高斯噪声所污染的图像
3X3窗口
7X7窗口
16
谢谢!
17
– 最大值滤波
– 最小值滤波
中值滤波消除雀斑 中值滤波消除雀斑
a
b
c
d
e
f
g
图4-24 噪声平滑实验图像 (a) Lena原图; (b) 高斯噪声; (c) 椒盐噪声; (d) 对(c)平均平滑; (e) 对(b)平均平滑; (f) 对(b)5×5中值滤波; (g) 对(c)5×5中值滤波
3.2 手势检测与分割
• 总体结构如下:
5
3.系统实现分析
• • • • 图像(包含手势)的预处理 肤色检测与分割 手势模板匹配 跟踪与预测算法:Camshift算法和Kalman 算法 • 接口部分的设计与实现
6
3.1 图像预处理
预处理目的: 为了改善图像的质量,有两种方法: -- 图像的增强
• 不考虑图像降质的原因,只将图像中感兴趣的特征有选择 的突出,而衰减次要信息 • 特点:能提高图像的可读性,但改善后的图像不一定逼近 原始图像。可用场合:如衰减各种噪声、突出目标的轮廓等
• 所有方法都是根据肤色图像所在颜色区域 空间分布的大量实验统计结果,具有一定 适用性。 • 比如第一种基于RGB颜色空间的方法具体 判断条件为: R>95,G>40,B>20,R-B>15,R-G>15 或者R>200,G>210,B>170, |R-B|<=15,R>B,G>B
具体实验效果如下图所示:
中值滤波
– 中值滤波的原理 • 用模板区域内象素的中值,作为结果值 • R = mid {zk | k = 1,2,…,9} • 强迫突出的亮点(暗点)更象它周围的值, 以消除孤立的亮点(暗点)
中值滤波
– 中值滤波算法的实现
• 将模板区域内的象素排序,求出中值。 • 例如:3x3的模板,第5大的是中值, • 5x5的模板,第13大的是中值, • 7x7的模板,第25大的是中值, • 9x9的模板,第41大的是中值。 • 对于同值象素,连续排列。 • 如(10,15,20,20,20,20,20,25,100)
3 4 6 7 9 10 10 11 10 10 9 7 6 4 3
2 3 4 5 7 7 8 8 8 7 7 5 4 3 2
2 2 3 4 5 5 6 6 6 5 5 4 3 2 2
15X15高斯滤波模板
邻域运算
• 输出图象中每个象素是由对应的输入象素 及其一个邻域内的象素共同决定时的图象 运算。 • 通常邻域是远比图象尺寸小的一规则形状。
1 2 2 4 2 2 1
5 7 10 12 14 16 17 18 17 16 14 12 10 7 5
1 1 2 2 2 1 1
6 8 10 13 15 17 19 19 19 17 15 13 10 8 6 6 8 11 13 16 18 19 20 19 18 16 13 11 8 6
7X7 高斯滤波模板
3
• 本系统目标: 通过读取摄像头信息来识别相应的手势进行鼠标控 制。 • 控制逻辑如下: 手掌(五指全部伸开时)表示鼠标移动(用手掌 中心来对应移动距离),一根手指表示点击(最 好的体验应该是通过指尖来确定位置,但是实现 比较困难的话就先用手掌中心进行代替),拳头 表示鼠标按键弹起
2.系统总体结构
• 均值滤波器的效果
(a)原图像 (b)3*3均值滤波 (c)5*5均值滤波 (d)9*9均值滤波
(e)15*15均值滤波
(f)36*35均值滤波
观察6幅图,总结邻 域平均模板大小对滤波结 果的影响。
高斯平滑滤波器
高斯平滑滤波器-1
根据高斯函数选择邻域内各像素的权值
(i 2 j 2 ) 2 2 j] e
9
HSV颜色空间
基于颜色空间的肤色分割方法
现有的部分方法: • 第一种:RGB color space • 第二种:RG color space • 第三种: Ycrcb之cr分量+otsu阈值化 • 第四种:YCrCb中D133<=Cr<=173 77<=Cb<=127 • 第五种:HSV中D 7<H<29
g[i,
高斯平滑滤波器…2
高斯函数具有五个重要的性质: • 旋转对称性
在各个方向上的平滑是一致的
• 单调递减
邻域的影响随着距离的增加而减弱
• 付氏频谱是单瓣的
保留所需信号
高斯平滑滤波器…3
• 参数σ调节平滑程度
在过平滑与欠平滑之间取得平衡
• 可分离性
降低计算复杂度
高斯平滑滤波器…4
模板设计方法: •直接法
g[i,
(i 2 j 2 ) 2 2 j ] ce .
g[i, j ] c
(i 2 j 2 ) 2 2 e .
2=2,n=7 ó
Байду номын сангаас 高斯平滑滤波器-6
(2)放大,取整
i , j
-3 -2 -1 0 1 2 3
-3 1 4 7 10 7 4 1
-2 4 12 26 33 26 12 4
基于Opencv的手势识别系统分析
指导老师:鲁晓军 作者:毛晓洁 日期:2013.10.18
1
基于Opencv的手势识别系统分析
• • • • •
系统研究背景 手势识别流程分析 系统总体结构 系统的设计与实现 总结
2
1.系统研究背景及应用
• 人机交互在当今计算机技术迅猛发展的今 天逐渐成为人们日常生活中的重要部分 • 手势识别是一种简单、直观的新的交互方 式,被越来越多的采用 • 基于手势识别的窗口控制系统,可以应用 在很多方面,比如PC上的鼠标控制、 Android界面控制、图片浏览、音乐播放器 控制等方面。
1 2 2 4 2 2 1
3 4 6 7 9 10 10 11 10 10 9 7 6 4 3
2 2 4 8 4 2 2
4 5 7 9 11 12 13 13 13 12 11 9 7 5 4
2 4 8 16 8 4 2
2 2 4 8 4 2 2
5 7 9 10 13 14 15 16 15 14 13 10 9 7 5
6 8 10 13 15 17 19 19 19 17 15 13 10 8 6
5 7 10 12 14 16 17 18 17 16 14 12 10 7 5
5 7 9 10 13 14 15 16 15 14 13 10 9 7 5
4 5 7 9 11 12 13 13 13 12 11 9 7 5 4
高斯平滑滤波器-5
直接法:
直接根据高斯函数的离散值计算模板权值
(1)计算离散值
i , j
-3 -2 -1 0 1 2 3 -3 .011 .039 .082 .105 .082 .039 .011 -2 .039 .135 .287 .368 .287 .135 .039 -1 .082 .287 .606 .779 .606 .287 .082 0 1 .105 .082 .368 .287 .779 .606 1.000 .779 .779 .606 .368 .287 .105 .082 2 .039 .135 .287 .368 .287 .135 .039 3 .011 .039 .082 .105 .082 .039 .011
• 拳头判断: 图像的面积大于一定阈值,且其轮廓大致 为多边形的判定为拳头。 • 无手势判断: 当图像面积小于一定值时判断没有手势出 现。
5 接口的设计与实现
• 鼠标控制——调用相应的系统控制函数, 控制其移动、单击、弹起操作 • 接口的设计:根已定义的模型对手势图像 处理的结果进行判别,并根据判别结果在 手势变换时调用不同的鼠标控制函数,控 制其位置移动及单击、弹起操作 • OpenCV窗口的前端显示
11
5. 系统测试
• 对系统进行功能测试,其效果:
右图是系统运行时的鼠标 操作记录
12
下图是系统运行时的手势识别窗口,右图是对 右图二值化处理后的结果
13
总结
• 本系统利用目前比较成熟的OpenCV的相关 函数,进行了基于肤色分割和模板的手势 识别的研究,并利用已有的鼠标控制函数 进行了简单的虚实交互。 但在手势识别精度、更多手势匹配、算法 速度方面还有很大不足,需要进一步改善。
– 如:下面情况中,一个点的邻域定义为以该点 为中心的一个圆内部或边界上点的集合。
• 邻域运算与点运算一起构成最基本、最重 要的图象处理工具。
非线性滤波
中值滤波器
(1)取邻域 (2)按亮度 值大小排列 像素点 (3)选排序 像素的中间 值作为中心 点的新值
中值滤波
• 中值滤波的原理 –用一个N×N的窗口(N=3,5,7…)在图像上 滑动,把窗口中像素的灰度值按升/降次序排列, 取排列在正中间的灰度值作为窗口中心所在像 素的灰度值。 • 性质 –是一种非线性滤波,对消除脉冲噪声十分有效。 –在去除噪音的同时,可以比较好地保留边的锐 度和图像的细节
-1 7 26 55 71 55 26 7
0 10 33 71 91 71 33 10
1 2 3 7 4 1 26 12 4 55 26 7 71 33 10 55 26 7 26 12 4 7 4 1
(3)规范化,使权值之和为1
1 1 2 2 2 1 1
2 2 3 4 5 5 6 6 6 5 5 4 3 2 2 2 3 4 5 7 7 8 8 8 7 7 5 4 3 2
• 灰度级变换的应用之一
– 亮度调整——加亮、减暗图像
255 218
255
32
128 255 128 255
求反
对比度增强
亮度增强
直接灰度变换图例
一个指纹图像增强的实例
直方图修正
直方图的作用
直方图修正
灰度均衡
有时也称直方 图均衡
直方图修正 直方图均衡化
图像中的脉冲噪声模型 • 在图像传输过程中,经常会受到各种噪声的干扰,
• 中值滤波
– 主要用途:钝化图像、去除噪音 – 计算公式:R = mid {zk | k = 1,2,…,9}
• 最大值滤波
– 主要用途:寻找最亮点 – 计算公式:R = max {zk | k = 1,2,…,9}
• 最小值滤波
– 主要用途:寻找最暗点 – 计算公式:R = min {zk | k = 1,2,…,9}
HSV(hue, saturation and value)的缩写 – A. R. Smith根据颜色的直观特性于1978年创建的, 也称 六角锥体模型(hexcone model),如下图所示 – HSV的表示方法 • 色调:用角度度量,0°~360°。红色为0°,按 逆时针方向计算,绿色为120°,蓝色为240° • 饱和度:取值范围为0.0~1.0 • 亮度值:取值范围为0.0(黑色)~1.0(白色)
通过实验可知第一种及第五种方法较优。选 二者进行分别实验,可满足要求。考虑过 将二者结合起来,但是效果不理想。本系 统中选取第一种方法。
4. 手势模板匹配
模板库中包含三种手势定义:
• 手掌 • 拳头 • 无
10
匹配算法实现
• 手掌判断: 提取出手势图像后转化为灰度图像,在其 轮廓外侧用矩阵框圈起,计算出矩阵框圆 心,在其上半部分划几条线,如果测出是 黑(其值为0)白(非0)相间,则判断为 手掌