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. C#中三种定时器对象的比较

    ·关于C#中timer类 在C#里关于定时器类就有3个1.定义在System.Windows.Forms里2.定义在System.Threading.Timer类里3.定义在System.Timers ...

  2. 搞懂offsetY、offsetTop、scrollTop、offsetHeight、scrollHeight

    先搞offsetTop,最难懂的就是它了 官方解释:返回当前元素的上边界到它的包含元素的上边界的偏移量,以像素为单位.这真TM坑爹啊!有木有!经过仔细研究查找得出结论:offsetTop是相对于离它最 ...

  3. 用Navicat for MYsql创建表,插入中文显乱码

    段都有编码设置.出现乱码肯定是你现在用的编码混乱造成的 解决办法: 第一步 先改数据库编码 先修改你的数据库,如果你页面用的是UTF-8编码那么你数据库内的编码也需要设置为UTF-8,每个字段都需要设 ...

  4. iOS https(SSL/TLS)数据捕获

    要捕获iPhone上的appstore的数据还真的没那么容易,以前介绍的那些使用代理手工导入证书的方法已经完全失效了,结果就是安装证书之后再打开appstore也无法正常的建立连接.按照我的分析其实是 ...

  5. bzoj 2326: [HNOI2011]数学作业

    #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...

  6. HDU 1203-Program D

    Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了.要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的 ...

  7. Android 系统基础

    当系统启动一个组件,它其实就启动了这个程序的进程(如果这个进程还未被启动的话)并实例化这个组件所需要的类. 例如,如果你的程序启动了相机程序里的activity去拍照,这个activity实际上是运行 ...

  8. iphone获取当前运行进程列表

    通过调用 sys/sysctl.h 读取系统内核获取进程列表 . 代码悦德财富:https://yuedecaifu.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 ...

  9. Windows Azure上搭建SSTP VPN

    一.服务器设置 首先,从0开始,你需要创建一个新的VM.我选择Windows Server 2012 R2,所有步骤和创建普通VM都一样,但最后在防火墙设置里一定要打开TCP 443端口: 创建完成后 ...

  10. BCP 导入导出数据库数据

    使用 bcp 将数据库迁移到 Azure SQL Database --所有 都是在本机sql上运行--先开启cmdshellEXEC sp_configure 'show advanced opti ...