我是靠谱客的博主 坦率冰淇淋,最近开发中收集的这篇文章主要介绍基于视频的人体异常行为检测研究,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目 录
1 绪论 1
1.1 背景及意义 1
1.1.1选题背景 1
1.1.2目的意义 1
1.2 研究现状 2
1.3 研究内容 3
2 算法介绍 4
2.1 基于视频的人体异常行为检测基础 4
2.2 视频图像预处理 4
2.3 运动目标检测 5
2.3.1 两帧差分法 5
2.3.2 光流法 5
2.3.3 帧差法 5
2.4 图像标识 6
2.5 图像分割 6
2.6 运动轨迹预测 7
2.7 目标跟踪 7
3 基于视频的人体异常行为检测实现 9
3.1 框架 9
3.2 目标跟踪实现流程 9
3.2.1目标跟踪流程 9
3.2.2 运动目标跟踪过程 9
3.2.3 运动目标跟踪过程分析 9
3.2.4基于最小外接矩形框跟踪原理 10
3.2.5特征提取 10
3.2.6 最小外接矩形提取 10
3.2.7最小矩形框跟踪实现 11
3.3 摔倒检测实现流程 12
3.3.1摔倒检测 12
3.3.2 跳,走,跑,坐,躺 15
3.3.3 灰度化 15
3.3.4 两帧差分法算法 16
3.3.5 三帧差分法 18
3.3.6 通过长宽判断人体行为 18
3.4实现效果展示 20
3.4.1异常状态是否全面 20
3.4.2 是否准确 20
3.4.3是否正确 21
3.5 分析 22
3.5.1 按行分析 22
3.5.2 按列分析 23
3.6结论 23
5 总结与展望 24
致 谢 25
参考文献 26
(1)了解视频相关技术和目标检测相关算法,学习MATLAB软件基本编程方法,查阅相关文献资料。
(2)学习并使用MATLAB软件,基于图像(帧差法)实现异常情况检测,如运动目标检测、行为识别。
(3)采集某场景若干时间段人体视频数据,对摔倒、过线、区域入侵行为进行识别;
(4)运用软件编写GUI,对视频数据进行处理,对时间段内人体行为目标检测、行为识别,给出统计数据,并对准确性和速度进行论证分析。
运动目标跟踪技术通常有两种思想:通过目标识别来进行跟踪和通过运动目标检测来进行跟踪。使用目标识别的方法进行跟踪通过在每一帧的图像中识别研究的目标来确定目标的位置来实现目标的跟踪。这种方法包含了目标识别和目标匹配两部分。而使用运动目标检测的方法来发现并确定运动目标的位置进行跟踪,这种方法不考虑目标的形状、尺寸,可以检测任何目标。
本文结合了运动目标检测结果来进行目标跟踪。因此,在运动目标跟踪的流程当中运动目标检测的部分尤为重要。它关系到运动目标的得到,也就关系到能否实现跟踪。
基于特征的跟踪方法是一种比较常见的目标跟踪算法,它是根据运动目标的一些有用特征值,并利用运动目标检测结果来实现目标跟踪。
2.4 图像标识
图像标识的作用是确定物体是否独立,图像中有几个运动目标。
1)领域:常取周围的4或8个像素作为领域。
2)连通域:二值图像中互相连通的0像素集或1像素集称之为连通域。被1像素包围的0像素叫做孔。1像素连通域不含孔时,叫做单连通成分,含有一个或多个孔的连通成为叫做多重连通成分。
3)标记:差值后的一帧图像可能存在多个连通域,每个非连通域对应一个目标图像区,给各目标区分配相应标号的工作成为标记。
标识过程大致为:按一定顺序逐个扫描像素,扫描到1的像素,检测其领域的像素值,若一样则为连通域,并标记为第一个目标,然后依次寻找下一个目标。
在所有可能的目标都找到了之后,可以为每个目标划出一个波门,将目标框起来。并建立一个多目标位置链表,找到的每一个目标区域的中心位置都作为一个结点加入该链表储存起来。波门的划分有可能将同一个目标分为两个部分,或者一个波门里包括了两个目标,使得目标数据错误增加或减少,所以还要判断当前的目标是属于同一个目标还是不同的目标,这将在后面的图像分割中完成。
2.5 图像分割
图像分割用于分离目标和背景的组合或者分离不同目标的组合。图像分割不仅可以大量压缩数据,减少储存容量,而且能大大简化其后的分析和处理步骤。
1)直方图阈值分割法
灰度直方图即为灰度级的像素数与灰度的二维关系,反映了一副图像灰度分布的统计特性。如果前景物体内部灰度值分布比较均匀,背景灰度值的分布也比较均匀,这个图像的直方图将有明显的双峰,这时可以选择两峰之间的谷底作为阈值。由于直方图不含目标的位置信息,还要结合图像的内容来确定。
2)最大类间方差阈值分割法
利用图像目标与背景这两类的总体灰度之间存在的差距确定阈值从而进行分割。
3)区域生长法
指将周围特性相似的像素再次合并到目标区域中。
4)边缘检测和轮廓提取分割法
5)形态学分割法
主要作用是使运动目标的区域更加完整。
腐蚀的作用是消除物体边界点,把小于结构元素的物体去除。如果两物体之间有细小的连通,那么当结构元素足够大时,通过腐蚀运算可以将两个物体分开。
膨胀运算的作用是把图像周围的背景点合并到物体中。如果两个物体比较接近,那么膨胀运算可能会使这两个物体连通在一起。本文转载自http://www.biyezuopin.vip/onews.asp?id=14248膨胀对填补图像的空洞很有用,膨胀最简单的应用之一就是将裂缝接起来。
形态学也可用于图像滤波、增强等方面。
2.6 运动轨迹预测
在分割出运动目标后,应提取出目标的特征,然后在下一帧图像中匹配特征从而跟踪目标。但为了减少搜索特征匹配的区域,提高实时性,在此加入对目标运动轨迹预测这一步骤。运动轨迹预测也有利于增强遮挡情况下跟踪的鲁棒性。
1)线性预测算法
2)Kalman滤波算法及其扩展算法
3)粒子滤波算法
2.7 目标跟踪
1)特征选取
灰度特征,对于灰度图像,像素灰度值是最基本的目标图像特征;
几何特征,它反映的是目标的几何性质,它仅与目标像素点的位置有关,而与其灰度无关。常用的几何特征有目标周长、面积、扁率和高度等;
统计特征,如目标灰度均值与方差、直方图、熵、矩以及目标相对于背景的对比度等;
变换域特征,包括Forier、Gabor、Wavelet等变换域特征;
颜色特征。
2)跟踪算法
a.模板匹配跟踪
模板在图像上滑动,对应于图像的各个位置的灰度值,与模板上像素的灰度值比较,每个位置计算出一个累积误差,挑选出最合适的位置,完成匹配。
b.camshift跟踪
颜色直方图匹配。
c.主动轮廓线跟踪
又称snake算法,最小化图像的能量函数。
d.多模跟踪
使用多个跟踪算法(模型)同时跟踪。

function phi = invmoments(F)
%INVMOMENTS Compute invariant moments of image.
%   PHI = INVMOMENTS(F) computes the moment invariants of the image
%   F. PHI is a seven-element row vector containing the moment
%   invariants as defined in equations (11.3-17) through (11.3-23) of
%   Gonzalez and Woods, Digital Image Processing, 2nd Ed.
%
%   F must be a 2-D, real, nonsparse, numeric or logical matrix.

 
if (ndims(F) ~= 2) | issparse(F) | ~isreal(F) | ~(isnumeric(F) | ...
                                                    islogical(F))
   error(['F must be a 2-D, real, nonsparse, numeric or logical ' ...
          'matrix.']); 
end

F = double(F);

phi = compute_phi(compute_eta(compute_m(F)));
  
%-------------------------------------------------------------------%
function m = compute_m(F)

[M, N] = size(F);
[x, y] = meshgrid(1:N, 1:M);
  
% Turn x, y, and F into column vectors to make the summations a bit
% easier to compute in the following.
x = x(:);
y = y(:);
F = F(:);
  
% DIP equation (11.3-12)
m.m00 = sum(F);
% Protect against divide-by-zero warnings.
if (m.m00 == 0)
   m.m00 = eps;
end
% The other central moments:  
m.m10 = sum(x .* F);
m.m01 = sum(y .* F);
m.m11 = sum(x .* y .* F);
m.m20 = sum(x.^2 .* F);
m.m02 = sum(y.^2 .* F);
m.m30 = sum(x.^3 .* F);
m.m03 = sum(y.^3 .* F);
m.m12 = sum(x .* y.^2 .* F);
m.m21 = sum(x.^2 .* y .* F);

%-------------------------------------------------------------------%
function e = compute_eta(m)

% DIP equations (11.3-14) through (11.3-16).

xbar = m.m10 / m.m00;
ybar = m.m01 / m.m00;

e.eta11 = (m.m11 - ybar*m.m10) / m.m00^2;
e.eta20 = (m.m20 - xbar*m.m10) / m.m00^2;
e.eta02 = (m.m02 - ybar*m.m01) / m.m00^2;
e.eta30 = (m.m30 - 3 * xbar * m.m20 + 2 * xbar^2 * m.m10) / m.m00^2.5;
e.eta03 = (m.m03 - 3 * ybar * m.m02 + 2 * ybar^2 * m.m01) / m.m00^2.5;
e.eta21 = (m.m21 - 2 * xbar * m.m11 - ybar * m.m20 + ...
           2 * xbar^2 * m.m01) / m.m00^2.5;
e.eta12 = (m.m12 - 2 * ybar * m.m11 - xbar * m.m02 + ...
           2 * ybar^2 * m.m10) / m.m00^2.5;

%-------------------------------------------------------------------% 
function phi = compute_phi(e)

% DIP equations (11.3-17) through (11.3-23).

phi(1) = e.eta20 + e.eta02;
phi(2) = (e.eta20 - e.eta02)^2 + 4*e.eta11^2;
phi(3) = (e.eta30 - 3*e.eta12)^2 + (3*e.eta21 - e.eta03)^2;
phi(4) = (e.eta30 + e.eta12)^2 + (e.eta21 + e.eta03)^2;
phi(5) = (e.eta30 - 3*e.eta12) * (e.eta30 + e.eta12) * ...
         ( (e.eta30 + e.eta12)^2 - 3*(e.eta21 + e.eta03)^2 ) + ...
         (3*e.eta21 - e.eta03) * (e.eta21 + e.eta03) * ...
         ( 3*(e.eta30 + e.eta12)^2 - (e.eta21 + e.eta03)^2 );
phi(6) = (e.eta20 - e.eta02) * ( (e.eta30 + e.eta12)^2 - ...
                                 (e.eta21 + e.eta03)^2 ) + ...
         4 * e.eta11 * (e.eta30 + e.eta12) * (e.eta21 + e.eta03);
phi(7) = (3*e.eta21 - e.eta03) * (e.eta30 + e.eta12) * ...
         ( (e.eta30 + e.eta12)^2 - 3*(e.eta21 + e.eta03)^2 ) + ...
         (3*e.eta12 - e.eta30) * (e.eta21 + e.eta03) * ...
         ( 3*(e.eta30 + e.eta12)^2 - (e.eta21 + e.eta03)^2 );

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后

以上就是坦率冰淇淋为你收集整理的基于视频的人体异常行为检测研究的全部内容,希望文章能够帮你解决基于视频的人体异常行为检测研究所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部