目录
一、理论基础
1.1理论概述
目标跟踪是在视频或图像序列中跟踪目标位置和运动轨迹的过程。混合高斯模型(Gaussian Mixture Model,GMM)和帧差法是常用的目标跟踪技术。GMM用于建模目标的特征,而帧差法用于检测目标的位置和运动。下面介绍基于混合高斯模型和帧差法结合的目标跟踪算法的原理和数学公式。
一、混合高斯模型
混合高斯模型是一种概率模型,用于描述数据的概率密度函数。在目标跟踪中,我们使用混合高斯模型来表示目标的特征分布。混合高斯模型的定义为:
f(x) = Σw_i * N(x; μ_i, Σ_i)
其中,x是数据点的特征向量,w_i是第i个高斯分布的权重,N(x; μ_i, Σ_i)是均值为μ_i,协方差矩阵为Σ_i的高斯分布的概率密度函数。
在目标跟踪中,我们使用GMM对目标的特征进行建模。通常,我们使用两个高斯分布来表示目标的前景和背景,即GMM的权重w_i通常为0.5和0.5。前景高斯分布的中心在目标的位置,而背景高斯分布的中心在背景区域。随着时间的推移,GMM会自适应地更新权重和均值,以适应目标的运动和形状变化。
二、帧差法
帧差法是一种基于图像序列的方法,用于检测视频中的运动目标。在目标跟踪中,我们使用帧差法来检测目标的位置和运动。帧差法的定义为:
D(x, y) = |I_t(x, y) - I_{t-1}(x, y)|
其中,I_t(x, y)和I_{t-1}(x, y)是视频中相邻两帧在(x, y)位置的像素值。D(x, y)是在位置(x, y)的像素值的差异。
在目标跟踪中,我们计算当前帧与前一帧之间的差异,然后将差异值与预设的阈值进行比较。如果差异值大于阈值,则认为该位置是目标的位置。通过这种方式,我们可以检测出目标的轮廓。
三、基于混合高斯模型和帧差法结合的目标跟踪算法
基于混合高斯模型和帧差法结合的目标跟踪算法的步骤如下:
- 初始化:在视频的第一帧中,使用矩形框标出目标的位置。将该矩形框划分为多个小区域,并对每个小区域分别初始化一个GMM参数,包括均值、协方差矩阵和权重。
- 目标检测:在后续帧中,使用GMM对每个小区域进行建模,并计算每个区域的似然度。将似然度高于阈值的区域标记为目标区域。
- 位置更新:根据目标区域的位置信息,更新矩形框的位置。将新的位置信息作为下一帧的输入。
- 运动模型更新:根据目标的运动轨迹,更新GMM的均值和协方差矩阵。同时,根据目标的形状变化,自适应地更新GMM的权重。
- 重复步骤2-4,直到视频结束。
基于混合高斯模型和帧差法结合的目标跟踪算法能够有效地跟踪视频中运动和形状变化的目标。GMM能够适应目标的特征变化,而帧差法则能够检测出目标的位置和运动。这两种方法的结合使得该算法具有较高的准确性和鲁棒性。
1.2 基于混合高斯模型与帧差法结合的目标跟踪算法理论概述
目标检测:混合高斯模型与帧差法结合的算法,与单独的混合高斯模型算法作对比,体现前者的优越性
3、要求和结果:对比改进前后的算法,可以非常明显地看出改进前后更新背景速度的变化,效果要类似文献1中所给出的结果。
目标跟踪:在上面基础上,通过改进传统Mean Shift算法的内核与参数,对比算法改进前后在遮挡问题上的效果
- 针对的对象:解决前景运动目标在“被遮挡后”至“显露出来”这段时间无法跟踪到的问题
- 文献参考:文献1中P53中,目标车辆被遮挡后(第48帧)到显露出来(第65帧)之间,传统meanshift算法无法跟踪。改进后的算法可以跟踪。
- 要求与结果:对比改进前后的算法,可以非常明显地看出改进前后对遮挡问题的效果,效果要类似文献1中所给出的结果。
(二)光照问题:
目标检测:
1、研究对象:主要研究光照突变,不研究渐变
2、文献参考:文献2中介绍了两种目标检测原理:
(1)像素级(P23):混合高斯模型
(2)区域级(P25):
①基于分类分块算法(BSBC):适用于光照渐变,不适用于光照突变
- 在分类分块(BSBC)上加一个计时器,把这种算法叫FRDA算法:可适用于光照突变
- 要求与结果:分别用混合高斯模型、BSBC算法、FRDA算法三种算法处理光照突变下的目标检测,可以非常明显地看出FRDA算法处理光照突变下目标检测的效果好于其他两种算法,效果要类似文献2中P30实验二所给出的结果。
二、核心程序
clc;
clear;
close all;
warning off;
addpath 'func\'
%%
%参数初始化
RR = 96;%处理视频大小
CC = 128;
K = 3; %组件
Alpha = 0.01; %适应权重速度
Rho = 0.01; %适应权重速度协方差
Deviation_sq = 49; %阈值用于查找匹配
Variance = 3; %初始方差为新放置组件
Props = 0.00001; %最初为新放置
Back_Thresh = 0.8; %体重的比例必须占背景模型
Comp_Thresh = 10; %滤掉连接组件的较小的尺寸
SHADOWS =[0.7,0.25,0.85,0.95]; %设置阴影去除门限值
%%
%我们这里设计了一个算法,就是能够读取压缩后的AVI视频,从而使仿真速度更快
disp('正在读取视频...');
FileName_AVI = '背景更新.avi';
[Obj,frameNum_Original] = get_AVI(FileName_AVI);
[pixel_original,pixel_gray] = vedio_op(Obj,frameNum_Original);
clear Obj;
for i = 1:frameNum_Original
pixel_gray2(:,:,i) = imresize(pixel_gray(:,:,i),[RR,CC]);
pixel_original2(:,:,:,i) = imresize(pixel_original(:,:,:,i),[RR,CC]);
end
clear pixel_gray pixel_original;
disp('读取视频完毕...');
disp('正在进行高斯混合模型的仿真...');
[image_sequence,background_Update,Images0,Images2] = func_Mix_Gauss_Model(pixel_original2,frameNum_Original,RR,CC,K,Alpha,Rho,Deviation_sq,Variance,Props,Back_Thresh,Comp_Thresh,SHADOWS);
disp('高斯混合模型的仿真完毕...');
disp('正在显示效果...');
figure;
for tt = 1:frameNum_Original
tt
subplot(221)
imshow(image_sequence(:,:,:,tt));
title('原始图像');
subplot(222)
imshow(uint8(background_Update(:,:,:,tt)));
title('背景图像更新');
subplot(223)
imshow(Images0(:,:,tt));
title('运动目标检测');
subplot(224)
imshow(Images2(:,:,tt));
title('运动目标检测去阴影');
pause(0.001);
end
disp('显示效果完毕...');
save Result.mat image_sequence background_Update Images0 Images2
三、仿真测试结果
一、单独的混合高斯模型算法进行目标的检测main1(对比视频:背景更新.AVI)
二、混合高斯模型与帧差法结合的算法main2(对比视频:背景更新.AVI)
三、在二的基础上,传统Mean Shift算法,遮挡问题main3(对比视频:遮挡问题.AVI)
当出现遮挡的时候,则会跟踪失败,如下所示:
由此可见,传统的MS算法,在遮挡之后重新出现,会无法重新进行跟踪。
四、在二的基础上,改进传统Mean Shift算法,遮挡问题main4(对比视频:遮挡问题.AVI)
A10-13