运动历史图(MHI)——Motion History Image
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的更多相关文章
- OpenCV3.1.0中调用MHI(Motion History Images, 运动历史图像)
写在前边: OpenCV3.0+要想使用MHI,就要现安装扩展模块opencv_contrib.安装方法见:ubuntu 14.04 64位 安装Opencv3.1.0 (包含opencv_contr ...
- MHI ,运动历史图像的的获取[下载自CSDN]
#include "cv.h" #include "highgui.h" #include "stdlib.h" #include &quo ...
- 每日linux命令学习-历史指令查询(history、fc、alias)
linux历史机制对命令行中输入的命令进行编号并依此保存,以维护命令历史.登录会话期间输入的命令保存在shell内存中,若终止命令则添加至历史文件. 1. 箭头符号方向键 使用键盘上的箭头方向键可以从 ...
- [No000037]操作系统Operating Systems操作系统历史与硬件概况History of OS & Summaries!
培根:读史使人明智 操作系统的简史 (1955-1965) 计算机非常昂贵,上古神机IBM7094 ,造价在250万美元以上 计算机使用原则:只专注于计算 批处理操作系统(Batch system) ...
- Cv运动分析与对象跟踪(转)
Cv运动分析与对象跟踪 目录 [隐藏] 1 背景统计量的累积 1.1 Acc 1.2 SquareAcc 1.3 MultiplyAcc 1.4 RunningAvg 2 运动模板 2.1 Upd ...
- 目标检测之人头检测(HaarLike Adaboost)---高密度环境下行人检测和统计
实验程序视频 下载 1 问题描述 高密度环境下的行人统计一直没有得到很好的解决,主要原因是对高密度人群中的行人检测和跟踪是一个很难的问题,如下图所示环境,存在的困难包括: 检测方面: 由于人群整体处于 ...
- [转]第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV
仅供参考,还未运行程序,理解部分有误,请参考英文原版. 绿色部分非文章内容,是个人理解. 转载请注明:http://blog.csdn.net/raby_gyl/article/details/174 ...
- history 清空历史记录 或 history不记录历史命令
# vi ~/.bash_history 清空里面的记录,并退出当前shell # exit(一定要退出当前shell) # history 1 vi ~/.bash_history 2 histor ...
- 【转】Linux中history历史命令使用方法详解
原文网址:http://os.51cto.com/art/201205/335040.htm 当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效 ...
随机推荐
- c实现的iOS http下载类。支持自己设定http 头(比如cookie等)
也许有人要问为什么要自己用c写? 原因是: 1 我是菜鸟 2 我最最初选择了AsyncSocket,弄了很久,基本上稳定了,但有时候出现了数据不完整,但我又没办法在这个时候识别到并重试:所以不完美,最 ...
- POJ 1573 Robot Motion 模拟 难度:0
#define ONLINE_JUDGE #include<cstdio> #include <cstring> #include <algorithm> usin ...
- Windows7下U盘安装Ubuntu14.04双系统
1.准备工作 (1)下载Ubuntu14.04系统镜像文件,Ultraiso,EasyBcd,分区助手 Ubuntu14.04地址:http://www.ubuntu.com/download/des ...
- NodeJs编写小爬虫
一,爬虫及Robots协议 爬虫,是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上就是针对爬虫而做出的优化. robots.txt是一个文本文件,robots是一个协 ...
- java程序(一)----HashMap同时获取键值
快速会用: HashMap<Integer,String> maps=new HashMap<Integer,String>(); maps.put(1,"xiaom ...
- ios 常用的小框架
在ios开发中,一些请求 kvc 下拉列表 图片请求等等自己手写代码的话非常麻烦,还容易出现一系列的问题,现在整理了一些常用的一些小框架. 其中MJExtension 和 MJRefresh 这两个 ...
- iOS中实现多线程的技术方案
pthread 实现多线程操作 代码实现: void * run(void *param) { for (NSInteger i = 0; i < 1000; i++) { ...
- JS 获取当前浏览器类型
JS代码: function getType() { if(navigator.userAgent.indexOf("MSIE")>0) { return "MSI ...
- PHP ceil() 函数
定义和用法 ceil() 函数向上舍入为最接近的整数. 语法 ceil(x) 参数 描述 x 必需.一个数. 说明 返回不小于 x 的下一个整数,x 如果有小数部分则进一位.ceil() 返回的类型仍 ...
- POJ 1185 炮兵阵地(经典的状态压缩DP)
题意:中文题. 思路,经典的状态压缩题目. 由于列长比较小,我们可以以行为阶段用状态压缩来做. 由于攻击只占两个格,这样从行的角度看,第i行的炮兵只与前i-1和前i-2行有关系.这样如果用j,k,l分 ...