gpt4 book ai didi

image - Matlab 中的运动历史图像 (MHI)

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:15 25 4
gpt4 key购买 nike

我的项目是通过存储的视频剪辑来检测人类事件。我能够成功地做到以下几点:

  1. 使用 OpenCV 从视频中获取运动历史图像 (MHI)
  2. 使用 Matlab 对图像集进行训练和分类

但是,我想使用 Matlab 来获取运动历史图像 (MHI)。有可能吗,如果可以,有人可以指导我吗?谢谢。

我附上了一个示例运动历史图像 (MHI)

MHI sample

我为 MHI 使用了以下代码: http://www.ece.iastate.edu/~alexs/classes/2007_Fall_401/code/09_MotionHistory/motempl.c

最佳答案

MHI 只是一种实现运动检测的方法(并使用轮廓作为它的基础)。

假设已创建最新对象的剪影。它还使用时间戳来识别当前剪影是否是最近的。为了实现运动检测,必须将较旧的轮廓与当前轮廓进行比较。因此,较早的剪影也保存在图像中,具有较早的时间戳。

MHI 描述了一些运动物体在图像序列上的变化。基本上,您应该只维护一个图像,其中每个像素都编码一个时间信息 - 剪影是否是最近的,或者在给定时间发生运动的位置。

因此MHI的实现非常简单例如:

function MHI = MHI(fg)

% Initialize the output, MHI a.k.a. H(x,y,t,T)
MHI = fg;

% Define MHI parameter T
T = 15; % # of frames being considered; maximal value of MHI.

% Load the first frame
frame1 = fg{1};

% Get dimensions of the frames
[y_max x_max] = size(frame1);

% Compute H(x,y,1,T) (the first MHI)
MHI{1} = fg{1} .* T;

% Start global loop for each frame
for frameIndex = 2:length(fg)

%Load current frame from image cell
frame = fg{frameIndex};

% Begin looping through each point
for y = 1:y_max
for x = 1:x_max
if (frame(y,x) == 255)
MHI{frameIndex}(y,x) = T;
else
if (MHI{frameIndex-1}(y,x) > 1)
MHI{frameIndex}(y,x) = MHI{frameIndex-1}(y,x) - 1;
else
MHI{frameIndex}(y,x) = 0;
end
end
end
end
end

代码来自:https://searchcode.com/codesearch/view/8509149/


更新 #1:

试画如下:

% showMHI.m
% Input frame number and motion history vector to display normalized MHI
% at the specified frame.

function showMHI(n, motion_history)

frameDisp = motion_history{n};
frameDisp = double(frameDisp);
frameDisp = frameDisp ./ 15;
figure, imshow(frameDisp)
title('MHI Image');

关于image - Matlab 中的运动历史图像 (MHI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29935425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com