课题题目:MATLAB人体异常行为检测
- 课题介绍
本文设计了一款人体行为异常监控系统,主要适用人群是老年人,在摄像头固定的情况下,自动检测人体运动轨迹,并与提前设定好的行为库进行匹配,分析判断是否具有异常行为。
在数字图像预处理部分采用了图像二值化,腐蚀与膨胀等几种方法为人体目标的跟踪和检测做准备。为了克服在实际操作中遇到的问题,采用了帧差法和ViBe算法,帧差法即利用帧间变化与当前帧、背景算法来判断它是否大于阈值,并分析视频中序列的运动特性,ViBe算法则是一种背景建模的方法,背景模型是由邻域像素来创建,并对比背景模型、当前输入像素值检测出前景,确定视频中的目标跟踪。在人体行为识别中,运动目标最小长宽比以及连续帧间的加速度来判断人体行为是否异常,如果检测到异常的行为比如说摔倒、快跑等行为,在识别的过程这种实时监测。
- GUI界面
- 篇幅安排
四、源码:
- 快跑检测代码
[filename, pathname] = uigetfile({ '*.*'},'打开视频');
videoName = [pathname filename];
Objs=VideoReader(videoName);
Nums=Objs.NumberOfFrames;%读取视频的帧数
FrameRate=Objs.FrameRate;%每秒多少帧
%% <________________________ViBe算法____________________________>%%
%% 设定参数
sample_num = 10; % 样本库
match_thres = 20; % 匹配阈值
frame_count = 0; % 处理帧数
neighbor = [1, 0, -1, -1, 1, 0, 0, -1, 1]; % 邻域选择
%% 判断是否为第一帧
first_flag = true;
for num=1:1:Nums
frame = read(Objs,num);
frame_gray = double(rgb2gray(frame));
if first_flag
first_flag = false;
%% 开始初始化
samples = cell(1, sample_num);
% 前两个样本设置初始像素
samples{1} = frame_gray;
samples{2} = frame_gray;
% 剩下的样本初始化
for i = 3:sample_num