MHI最初是由Bobick 和 Davis提出的,在此之前,Bobick 和 Davis 首先提出了二值的运动能量图(Motion Energy Image,MEI),通过描述物体如何移动和运动在空间中发生的位置,来进行基于运动的物体识别。运动能量图显示了运动的轮廓和能量的空间分布。在运动能量图的基础上产生了运动历史图(Motion History Image,MHI)。运动历史图是一种基于视觉的模板方法,通过计算时间段内同一位置的像素变化,将目标运动情况以图像亮度的形式表现出来。它是这样的一种图像:其每个像素的灰度值表示了在一组视频序列中该位置像素的最近的运动情况。最后运动的时刻越接近当前帧,该像素的灰度值越高。因此,MHI图像可以表征人体在一个动作过程中最近的动作情况,这使得MHI被广泛应用于动作识别领域。

设H为运动历史图像素的强度值,H (x, y, t) 可以由更新函数计算得出:

式中,(x, y)和t为像素点的位置及时间;tao为持续时间,从帧数的角度决定了运动的时间范围;delta为衰退参数。psai(x, y, t)为更新函数,可由帧间差、图像差分或光流等多种方法定义,其中帧间差法最为常用:

其中:

式中,I (x, y, t)为视频图像序列第t帧坐标(x, y)像素点的强度值,delta为帧间距离,ksai 为人为给定的差异阈值,随着视频场景的变化而调整。

生成运动历史图时,若持续时间tao 小于动作持续的帧数,就有可能丢失运动的部分信息。如下图所示,对向左弯曲挥手(时间长度26 帧)的动作视频,分别取tao= 10、15、20、 50、100、 250,取delta 均为 1 做运动历史图。对于第一行持续时间小于帧长的情况,当视频当前帧大于tao 时,运动历史图丢失了动作刚开始时的运动信息。另一方面,若持续时间tao 相比视频帧长设置得过大,则运动历史图中像素强度值的变化将变得不太明显。例如下图第二行最右,约为视频总长的 10 倍,图中非零的各像素强度值十分接近,只凭这张运动历史图难以判断人物运动的方向,即往左上挥手还是把手放下。在生成运动历史图时,必须考虑这点对于成图的影响。

同时,衰退参数delta的选取对生成运动历史图影响也十分显著。在读取先前帧时,对于已发生运动区域的一个特定像素点,若该点转为静止状态或运动状态没有改变,则运动历史图中该像素的强度值减少delta 。在基本的运动历史图成图方法中delta 的值通常取1,但实际操作时取不同的delta 值会使运动历史图提供的信息发生变化,因此delta 可根据研究需要取对应的经验值。如下图所示,对向左弯曲挥手这一运动,分别取delta = 1、3、 5、10,做出运动结束时同一帧的运动历史图。可以观察到随着delta 值的增大,图中运动轮廓的“尾部”,即较早发生运动的部分,被消除得更多。

从以上讨论可知,运动历史图中持续时间tao 与衰退参数delta 的组合决定了运动区域像素强度衰减至0 的时间。一个较大的tao 与一个较小的delta 组合会产生连续的、变化缓慢的梯度分布,而一个较大的delta 与一个较大的tao 组合则会造成离散的阶梯状分层。

除此之外,差异阈值ksai也为运动历史图的重要参数之一。下图所示的四张运动历史图,差异阈值从左到右依次增大,分别为ksai =  30、 50、 75和150。可以观察到当阈值过小时无法很好地区分运动前景与背景,导致运动历史图的背景中充满了噪声。背景噪声随着差异阈值的不断增大逐渐消失,取而代之的是在运动区域中心出现了“空洞”。空洞随着阈值的增大而增大,直至运动历史图中只剩下运动的边缘轮廓部分。在以运动历史图为模板的一些应用研究中,需要特别注意差异阈值对运动轮廓模板的影响。

运动历史图(MHI)——Motion History Image的更多相关文章

  1. OpenCV3.1.0中调用MHI(Motion History Images, 运动历史图像)

    写在前边: OpenCV3.0+要想使用MHI,就要现安装扩展模块opencv_contrib.安装方法见:ubuntu 14.04 64位 安装Opencv3.1.0 (包含opencv_contr ...

  2. MHI ,运动历史图像的的获取[下载自CSDN]

    #include "cv.h" #include "highgui.h" #include "stdlib.h" #include &quo ...

  3. 每日linux命令学习-历史指令查询(history、fc、alias)

    linux历史机制对命令行中输入的命令进行编号并依此保存,以维护命令历史.登录会话期间输入的命令保存在shell内存中,若终止命令则添加至历史文件. 1. 箭头符号方向键 使用键盘上的箭头方向键可以从 ...

  4. [No000037]操作系统Operating Systems操作系统历史与硬件概况History of OS & Summaries!

    培根:读史使人明智 操作系统的简史 (1955-1965) 计算机非常昂贵,上古神机IBM7094 ,造价在250万美元以上 计算机使用原则:只专注于计算 批处理操作系统(Batch system) ...

  5. Cv运动分析与对象跟踪(转)

    Cv运动分析与对象跟踪   目录 [隐藏] 1 背景统计量的累积 1.1 Acc 1.2 SquareAcc 1.3 MultiplyAcc 1.4 RunningAvg 2 运动模板 2.1 Upd ...

  6. 目标检测之人头检测(HaarLike Adaboost)---高密度环境下行人检测和统计

    实验程序视频 下载 1 问题描述 高密度环境下的行人统计一直没有得到很好的解决,主要原因是对高密度人群中的行人检测和跟踪是一个很难的问题,如下图所示环境,存在的困难包括: 检测方面: 由于人群整体处于 ...

  7. [转]第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV

    仅供参考,还未运行程序,理解部分有误,请参考英文原版. 绿色部分非文章内容,是个人理解. 转载请注明:http://blog.csdn.net/raby_gyl/article/details/174 ...

  8. history 清空历史记录 或 history不记录历史命令

    # vi ~/.bash_history 清空里面的记录,并退出当前shell # exit(一定要退出当前shell) # history 1 vi ~/.bash_history 2 histor ...

  9. 【转】Linux中history历史命令使用方法详解

    原文网址:http://os.51cto.com/art/201205/335040.htm 当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效 ...

随机推荐

  1. 5个最顶级jQuery图表类库插件-Charting plugin

    转载: http://www.cnblogs.com/chu888chu888/archive/2012/12/22/2828962.html 作者:Leonel Hilario翻译:Terry li ...

  2. POJ 2480 求每一个数对于n的最大公约数的和

    这里是枚举每一个最大公约数p,那么最后求的是f(n) = sigma(p*phi(n/p))    phi()为欧拉函数 这里可以试着算一下,然后会发现这个是积性函数的 那么只要考虑每一类质数分开算, ...

  3. 增加JVM虚拟机内存,防止内存溢出

    JAVA_OPTS=-Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=512M -XX:MaxNewSize=256m

  4. vs2013的使用和单元测试

    我的vs2013是之前就安装好的,安装过程就不介绍了,我平常编写代码就是用的vs2013,用起来还是很方便的,现在我们就开始使用vs2013进行单元测试 首先我们建立一个项目,项目中选择virtual ...

  5. httplib、urllib、urllib2的区别

     Python3.4互联网通讯协议支持 1,webbrowser方便的浏览器容器 2,cgi公共网关接口支持 3,cgitb管理cgi脚本 4,wsgiref  WSGI实体和引用实现 5,urlli ...

  6. Android MotionEvent getX() getY() getRawX() getRawY() and View getTop() getLeft()

    getRowX:触摸点相对于屏幕的坐标getX: 触摸点相对于按钮的坐标getTop: 按钮左上角相对于父view(LinerLayout)的y坐标getLeft: 按钮左上角相对于父view(Lin ...

  7. mongo db 分享 ppt

    在公司内部的mongo db的ppt.初步进阶 http://files.cnblogs.com/files/yuhan-TB/mongoDB.pptx

  8. C++中的数组与指针

    数组与指针看起来很像 int a[] = {1, 2 ,3}; int *p = a; 如此,我们可以p[0], p[1], p[2] 看起来,与直接使用数组名没什么两样,但是看这段代码 sizeof ...

  9. BZOJ 3997 组合数学

    好厉害. 注意到到了(i,j)就一定到不了(i-1,j+1),那么可以dp啦.dp[i][j]表示(i,j)右上角都清了的方案数. #include<iostream> #include& ...

  10. 【LeetCode OJ】Max Points on a Line

    Problem: Given n points on a 2D plane, find the maximum number of points that lie on the same straig ...