背景差分法MATLAB实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序1
背景差分法MA TLAB实现
function temp3
d=60;
b='d\6\capfile3.avi';
e='.bmp';
for i=0:13
u=d+1;
m=int2str(d);
n=int2str(u);
s=strcat(b,m,e); %连接字符
m=imread(s);
m=rgb2gry(m); %灰度值
% imshow(m);
if(d>=61)
s=strcat(b,n,e);
n=imread(s);
n=rgb2gry(n);
q=im2double(m);
figure(18);imshow(q);
w=in2double(n);
figure(19);imshow(w)
c=q-w; %进行差分处理
figure(20);imshow(c)
figure(99);imshow(c);%绘制直方图
t=100;%此値可以调节(阈值调整)
t=t/255;
k=find(abs(c)>=t);
c(k)=1;
k=find(abs(c) c(k)=0; figure;imshow(c); sc=strel('square',5);%用平坦的5*5结构元素进行了膨胀c=imdilate(c,sc); end d=d+1; end 程序2 图像处理: f0=imread('capfile3.avi61.bmp'); g=rgb2gray(f0);%图像灰度化 imshow(g); g2=imnoise(g,'salt & pepper',0.05);%加淑盐噪声 figure(3);imshow(g2); g3=medfilt2(g2,[3,3],'symmtric');%以3*3窗口中值滤波 figure(4);imshow(g3); g1=im2bw(g);%图像二值化 figure(2);imshow(g1); 程序3 % “高速公路汽车阴影”视屏的阴影去除的方法 clc; clear all; close all; % 打开视频文件对话框 h1=figure('toolbar','name','Shadow Removal'); [FileName.PathName]=uigetfile({'*.avi','avi(*.avi)','*.*', 'All Files(*.*)'},'Open video sequence'); if isequal([FileName,PathName],[0,0]) return else pic_path=fullfile(PathName,FileName); mov=aviread(pic_path); end n=100; % 读取视频帧数 s=1; % 起始为1 e=n; % 结束为n for i=s:e mov_gray(i).image=mov(i).cdate; % mov_gray(i).image 为第i帧图像 end [ih,iw,id]=size(mov_gray(1).image); % 取得视频帧的大小 % 计算1到第n帧的各个像素的均值 for i=s:e u=mov_gray(i).image; h=u(:)'; t(i,:)=h(:); end tmp=median(t); % 对t数组各列取均值 mean=reshape(tmp,ih,iw,id); % 将n帧均值图像恢复成h*w*d的图像矩阵,得到背景 figure,imshow(uint8(mean));title('背景图像'); fn=18; ok=mean; tmp(1:3)=0; di=20; th=ones(1,1,3)*di; % 预设阈值 diff=double(ok)-double(mov_gray(fn).image); % 计算第fn帧图像与背景的差值diff1=abs(diff); for ai=1:ih for bi=1:iw if abs(diff(ai,bi,1:3))>=th(1,1,:) ok(ai,bi,1:3)=mov_gray(fn).image(ai,bi,1:3); else ok(ai,bi,1:3)=0; diff1(ai,bi,1:3)=0; end end end figure,imshow(uint8(ok));title('前景图像'); impixelinfo; g=rgb2hsv(mean); % 将背景图像由RGB格式转为HSV格式 figure,imshow(g);title('背景图像的hsv格式'); impixelinfo; figure,imtooi(g); g1=rgb2hsv(ok); % 将前景图像由RGB格式转为HSV格式 figure,imshow(g1);title('前景图像的hsv格式'); impixelinfo; figure,imtooi(g1); % 阈值分割 % 这个地方的阈值选取是手动的,根据经验得到的! for ci=1:ih if(g1(ci,di,3)/g(ci,di,3)>=0.4) &&(g1(ci,di,3)/g(ci,di,3)<=0.5) && abs(g1(ci,di,2)-g(ci,di,2))<=0.5 && abs(g1(ci,di,1)-g(ci,di,1))<=0.1; h1(ci,di,1:3)=1; else h1(ci,di,1:3)=0; end end end h=hsv2rgb(h1); figure,imshow(h);title('阴影去除结果');