clear all;
close all;
clc;
%----------------- 迭代法求取背景图像 -----------------%
tic % 计时
nb =24; % 算法迭代次数
thresh = 70; % 阀值
bmov = imread('1.bmp'); % bmov存第一帧数据,为灰度图像
[height,width] = size(bmov);% 求每帧图像大小
fg = zeros(height, width);
% 对图像的前nb帧进行迭代
for n = 2:1:nb
frame=strcat(num2str(n),'.bmp');
mov1=imread(frame); % 依次读入各帧图像
tempmov = abs(mov1 - bmov);
lmov = tempmov > 10;
lmov = imfill(lmov, 'holes');
lmov = medfilt2(lmov); % 中值滤波
index = find(lmov ==0);
bmov(index) = 0.1*mov1(index) + 0.9*bmov(index);
end
% 显示帧差法得到的背景图像
imshow(bmov);title('背景图像');
%----------------- 背景减除法获取运动目标图像 -----------------%
frame_num=65; %读入图片的帧数,可以调整
for n = 60:frame_num
frame=strcat(num2str(n),'.bmp');
mov1=imread(frame);
mov_diff = abs(double(mov1) - double(bmov)); % 背景减除法得出图像间的差值
for j=1:width
for k=1:height
if ((mov_diff(k,j) > thresh)) % 阀值判断,图像二值化
fg(k,j) = 255;
else
fg(k,j) = 0;
end
end
end
%----------------- 图像二次中值滤波 -----------------%
figure();
imshow(fg);title('中值滤波前效果图');
YY=medfilt2(fg);
figure();
imshow(YY);title('中值滤波后效果图');
BW2=bwperim(YY);
figure();imshow(BW2);title('边缘检测效果图');
se = strel('disk',4); % 创建一个半径为3个像素的盘状的结构元素
YY_opened = imopen(YY,se); % 通过盘状结构元素进行开运算,进行一次腐蚀操作,然后进行一次膨胀操作,两次操作中使用同一个结构元素
se = strel('disk',8); % 创建一个半径为10个像素的盘状的结构元素
YY_closed = imclose(YY_opened,se); % 通过盘状结构元素进行闭运算,进行一次膨胀操作,然后进行一次腐蚀操作,两次操作中使用同一个结构元素
figure();imshow(YY_opened);title('开运算效果图');
figure();imshow(YY_closed);title('闭运算效果图');
YY_clear = bwmorph(YY_closed,'clean'); % 除去孤立的像素点效果图
figure();imshow(YY_clear);title('除去孤立的像素点效果图');
end
toc
Moving-target-identification.rar_视频 目标识别_视频目标识别_视频识别MATLAB_运动背景_
版权申诉
176 浏览量
2022-07-15
04:20:17
上传
评论
收藏 1KB RAR 举报
朱moyimi
- 粉丝: 0
- 资源: 1万+
评论0