什么手势使用电子计算机比较快,手势分割、模型训练,看“手势识别”如何让人与计算机沟通...

手势是无声的语言。人们在生活中借用手势,来表达各种各样的感情。现在,人还可以与计算机之间进行手势互动。lkJednc

与人之间的手势互动很容易理解,与计算机之间是怎么实现的呢?lkJednc

手势分割

想要使计算机识别人的手势,首先得将手势从背景中分割出来。因为计算机采集手势信息的同时,也会采集到手势所处的场景信息。lkJednc

手势分割通常采用以下几种方法:lkJednc用黑色或白色的墙壁做背景,着深颜色服装,尽可能简化背景。要求人手戴上特殊的手套来强调手部也可,总之在环境上要突出显示手部。

采集各种手势在各个时刻、不同位置、不同比例的手型图像,作为手势匹配的模板,建立一个庞大的数据库。

使用边缘检测,将手与背景分离开来。

手势模型训练

计算机同人一样,在识别一个手势前,必须先告诉它这个手势是什么,代表什么意思。lkJednc

205d454a7d6e53f93a2a0a11e66cc9dc.pnglkJednc

这个过程就是手势建模。模型的选取取决于具体应用,如果要实现自然的人机交互,就必须建立一个精细有效的手势模型,使得识别系统能够对用户所做的绝大多数手势做出正确反应。lkJednc

68d6951939266ac81d748e360ddf5bd2.pnglkJednc

目前,手势建模方法可以归结为两大类:基于表观的手势建模和基于 3D 模型的手势建模。lkJednc

基于表观的手势建模是:根据手势的指头数以及指间的夹角不同,对手势进行分类,实现手势在旋转缩放条件下的快速识别。lkJednc

61f9f0ba3949879a92e071b237a07c56.pnglkJednc

基于 3D 模型的手势建模方法是:首先合成人体的 3D 模型,然后改变模型的参数,直到模型和真实人体映射出同样的视觉图像,然后分析身体姿态。lkJednc

基于表观特征的手势建模方式比较直观、适应性强、运算速度快。但实际应用中,需要考虑到光线及身体其他部位颜色的影响,这些因素都将直接影响手势区域的提取。lkJednc

基于 3D 模型的手势建模识别精度比较高,避免了基于表观特征识别时因遮挡造成的错误识别。虽然 3D 建模技术已经相当成熟,但模型还是太复杂,以至于不能快速地渲染响应。lkJednc

2e3e79b6e7baab9d4a2cb07920303ad1.pnglkJednc

因此大多数产品,如 Leap Motion 和 HoloLens 等,都采用了深度图像信息和手势表观特征相结合的方式。这种方式既可以达到基于表观的识别速度,又可以实现基于 3D 的识别精度。lkJednc

手势分析

对手势进行建模后,接下来需要对手势进行分析。手势分析就是估计选定的手势模型参数,这一步一般由特征检测和参数估计组成。在特征检测过程中,必须先确定人手位置。根据所用的线索不同,可以把定位技术分为基于颜色定位、基于运动定位以及多模式定位三种。lkJednc

基于颜色定位技术的主要缺点是:在不同的光照条件下皮肤颜色变化较大,并且手和身体颜色相同,当身体其他部位出现在手势背景中,会导致识别错误。解决这一问题的简单方法,就是佩戴一副特殊的手套。lkJednc

24c9139bb427fced0b25fba70ba3f5a6.pnglkJednc

基于运动的定位技术通常跟某些假设一起使用。例如,假设通常情况下只有一个人在做手势,并且手势者相对于背景的运动量很小,也就是说图像中只有手部是运动的。lkJednc

501d946f1b322904a39ac346b4d0d415.giflkJednc

基于多模式定位技术,就是运动和颜色信息的融合定位人手。这种方式效果更加准确,但是计算量会增大。lkJednc

匹配

分析完手势就等于把手势分好了类,接下来只需要将读取到的手势信息,与这些分析结果相匹配,匹配过程就叫手势识别。lkJednc

手势识别分为静态手势识别和动态手势识别。静态手势相当于我们检测视力时,对医生做的表明方向手势;动态手势相当于篮球场上裁判员做的一些列手势。lkJednc

40326020adf1a162318e685306ec7e37.pnglkJednc

静态手势识别一般采用模板匹配方法来实现。通过一些相似准则,实时地比较手势与模板库中预定义手势的相似度,从而根据最大相似度来提取出手势模板。lkJednc

与静态手势不同,动态手势涉及时间及空间上下文。绝大多数动态手势被建模为手势模型空间里的一条轨迹。不同用户做手势时存在的速率差异、熟练程度等问题,会使运动轨迹与模型轨迹产生较大偏差。lkJednc

为了消除这一问题。现有的动态手势识别技术可以分为三类:基于隐马尔科夫模型(Hidden Markow Models,HMM)的识别,基于动态时间规整(Dynamic Time Warping,DTW)的识别,基于压缩时间轴的识别。lkJednc

HMM 算法因具有自动分割和分类能力,被广泛应用,以下例子能很好地说明这一算法的原理。lkJednc

b7e89cb5e80eba269fe673e6fffd5c59.giflkJednc

假设你有一个住得很远的朋友,他每天跟你打电话告诉你他那天做了什么。朋友仅仅对三种活动感兴趣:公园散步、购物以及清理房间。他选择做什么事情只凭天气。lkJednc

尽管你对于他所住地方的天气情况并不了解,但是你可以根据他今天所做的事情,来猜测天气情况。这整个系统就是一个隐马尔可夫模型 HMM。lkJednc

在这个系统里,你知道的这个地区的天气趋势以及朋友在做的事情,这些就是隐马尔可夫模型里的参数,它们是已知的。而手势可以描述为一系列由方向向量构成的系列,相近向量可以用一个符号来描述。如下图所示:lkJednc

a407494efb45c681128d2c9db03a2d18.pnglkJednc

我们可以识别手指的位置,然后根据 HMM 模型去猜测轨迹,通过轨迹即可分析手势的意思。lkJednc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值