背景差分法MATLAB实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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('阴影去除结果');

相关文档
最新文档