%%基于背景差分的运动目标捕捉
close all;
clear
clc
%%%%%%%%%%%%%%%%%%根据一幅目标全可见的图像圈定跟踪目标%%%%%%%%%%%%%%%%%%%%%%%
ZMIN=0;
ZMAX=0;
nStar =1 ;%起始帧数
sm=VideoReader('vipmen.mp4');
nNUM = 280;
imu=zeros(120,160);%建立一个与图片尺寸相当的空矩阵保存均值
imxigema=zeros(120,160);%建立一个与图片尺寸相当的空矩阵保存方差
qiuhe=zeros(120,160);%建立一个与图片尺寸相当的空矩阵保存和
for k1=nStar:13 %13的含义是选取的背景帧数到13帧为止
qiuhe=qiuhe+double(rgb2gray(read(sm,k1)));
end
imu=qiuhe/(13-nStar+1);%求出均值
for k2=nStar:13
qiuhe=qiuhe+(double(rgb2gray(read(sm,k2)))-imu).^2;
end
imxigema=sqrt(qiuhe/(13-nStar+1));%求出方差
Background = imu;%第一帧当做初始背景
% 背景更新过程,其中int2str将整型常量转为字符串
for k = nStar+1 : nNUM
CurrentImage =double(rgb2gray(read(sm,k))); % 当前帧
FormerImage =double(rgb2gray(read(sm,k-1))); % 前一帧
ID =uint8(abs( CurrentImage - FormerImage )); % 帧间差分
%%%%%%%%%%%%%%%以下为迭代法求阈值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f=ID;
[sx,sy]=size(f);
%灰度直方图
h=imhist(f);
%累积直方图
vmax = 256 ; H(1:vmax)=0; H(1)=h(1);
for i=2:vmax
H(i) = H(i-1) + h(i);
end
% 归一化直方图
h1 = h / (sx * sy);
%归一累积直方图
H1 = H/(sx*sy);
%求初始值
% 初始值设定
% 初始值设定
ZMAX=max(max(f));
ZMIN=min(min(f));
T0=(ZMAX+ZMIN)/2;%取中值作为初始阈值分割
%迭代法
while 1
FZ1=0;FZ2=0; %分子
for i=1:256
if i<T0
FZ1=FZ1+(i-1)*h1(i);
else
FZ2=FZ2+(i-1)*h1(i);
end
end
u1=FZ1/H1(T0);
u2=FZ2/(1-H1(T0));
T1=(u1 + u2)/2;
if abs(T0-T1)<1
%求出灰度值比例
level = double(T0);
level = level / 255;
break;
else
T0=abs(uint8(T1));
end
end
%%%%%%%%%%%%%%%%%%%以上代码均可独立为一个函数进行调用%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BW = im2bw(ID,level);
%%%%%%%%%%%%%%%%%%%更新背景,利用高斯背景模型进行%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha = 0.05; %背景更新的速度
%高斯背景建模
id =abs(abs(Background-imu).*BW-(2.*imxigema+0.02).*BW);
id(id<0)=0;
CurrentBack=id+( alpha.* CurrentImage + ( 1-alpha ).* Background ).*( 1 -BW );
Background = CurrentBack;%背景更新完毕
%计算新的均值与方差,重新建立当前背景的模型
imu=(qiuhe+CurrentImage)/(13+k-1);
imxigema=sqrt(qiuhe+(CurrentImage-imu).^2)/(13+k-1);
%%%%%%%%%%%%%%%%%%背景处理完毕%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Cut=abs(CurrentImage-Background);%前景与背景差分
Cut=uint8(Cut);
%%%%%%%%%%%%%%%以下为迭代法求阈值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f=Cut;
[sx,sy]=size(f);
%灰度直方图
h=imhist(f);
%累积直方图
vmax = 256 ; H(1:vmax)=0; H(1)=h(1);
for i=2:vmax
H(i) = H(i-1) + h(i);
end
% 归一化直方图
h1 = h / (sx * sy);
%归一累积直方图
H1 = H/(sx*sy);
%求初始值
% 初始值设定
% 初始值设定
ZMAX=max(max(f));
ZMIN=min(min(f));
T0=(ZMAX+ZMIN)/2;%取中值为初始阈值
%迭代法
while 1
FZ1=0;FZ2=0; %分子
for i=1:256
if i<T0
FZ1=FZ1+(i-1)*h1(i);
else
FZ2=FZ2+(i-1)*h1(i);
end
end
u1=FZ1/H1(T0);
u2=FZ2/(1-H1(T0));
T1=(u1 + u2)/2;
if abs(T0-T1)<1
%求出灰度值比例
level = double(T0);
level = level / 255;
break;
else
T0=abs(uint8(T1));
end
end
%%%%%%%%%%%%%%%%%%%以上代码均可独立为一个函数进行调用%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
BWCut=im2bw(Cut,level);%差分后的图像进行二值化
SE=[1 1 1;1 1 1;1 1 1];%结构元素
BWCutero=imerode(BWCut,SE);%对二值图像进行腐蚀,以消除微小变动的区域
BWCuterodil = bwmorph(BWCutero,'dilate',7);%膨胀
figure(1)
imshow(read(sm,k));title('目标捕捉')
%%%%%%%%%%%%%%%%%%框选目标%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[L,nm] = bwlabel(BWCuterodil,8);%找出图像中的八连通区域,视为车辆所在的区域
da=0;
shu=[0,0,0,0];
for i = 1:nm
[r,c] = find(L == i);
left= min(c);
right= max(c);
top= min(r);
buttom= max(r);
width=right - left + 1;
height = buttom - top + 1;
rectangle('Position',[left,top,width,height],'EdgeColor','y');%对车辆用矩形标记
S=width*height;
if da<S
da=S;
shu=[left,top,width,height];
end
pause (0.01)
end
end


海神之光
- 粉丝: 5w+
- 资源: 7136
最新资源
- java项目,毕业设计(包含源代码)-基于vue的地方美食分享网站
- DeepSeek+15天指导手册-从入门到精通-热乎版.pdf DeepSeek+15天指导手册-从入门到精通-热乎版.pdf DeepSeek+15天指导手册-从入门到精通-热乎版.pdf
- dify-main文件
- Nginx源码分析与导读 ppt
- java项目,毕业设计(包含源代码)-基于web的智慧养老平台
- 清华大学第二弹:DeepSeek赋能职场.pdf 从提示语技巧到多场景应用的人工智能解决方案
- DeepSeek+15天指导手册-AI应用从入门到精通涵盖基础知识及多场景实战
- TSP问题求解:蚁群算法与遗传算法优化 + 2-opt局部搜索(含MATLAB代码及节点数据)
- java项目,毕业设计(包含源代码)-一起来约苗系统
- 淮北市乡镇边界,shp格式
- 邻家小厨网上订餐系统asp.net源码
- lua程序设计 入门到精通 资料
- 铜陵市乡镇边界,shp格式
- “健康早知道”微信小程序.zip
- 基于微信小程序的新生报到系统.zip
- “最多跑一次”微信小程序.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


