📄 gaussian_average_yuv.m
字号:
function gaussian_average_yuv()
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% 以逐个像素点为单位,用单高斯模型来训练背景,然后判断
%%%%%%%%%% 前景点与背景点,颜色空间取YUV
%%%%%%%%%%优点:效果较好。能比较完整的定位目标.K,dx_compensate参数的调节很重要
%%%%%%%%%%缺点:抗阴影能力不强,抗光照突变能力不强。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all;
string = input('Please enter image your emulate:','s');
ROW = input('Please enter the row of your image :');
CLOUMN = input('Please enter the column of your image: ');
FRAME = input('Please enter the frame your want to process:');
TRAINFRAME = 15;
k = 4;
ex(ROW,CLOUMN,3) = 0;
ex2(ROW,CLOUMN,3) = 0;
dx(ROW,CLOUMN,3) = 0;
gs_ex(ROW,CLOUMN,3) = 0;
ex = double(ex);
ex2 = double(ex2);
dx = double(dx);
dx_compensate = 8;
se = eye(6);
figure('Name','单高斯算法_YUV空间')
for i=1:FRAME
ss = [string '\' 'image' num2str(i+120) '.bmp'];
movv = imread(ss);
mov = rgb2Ycbcr(movv);%RGB->YUV
subplot(2,2,1)
imshow(mov);
ss = [int2str(i) '.YUV'];
title(ss);
pause(0.01);
if(i<=TRAINFRAME) %前TRAINFRAME帧用于训练背景
disp('背景训练中。。。');
ex(:,:,:) = ex(:,:,:) + double(mov(:,:,:));%E(X)
ex2(:,:,:) = ex2(:,:,:) + (double(mov(:,:,:))).^2;%E(X^2)
if(i == TRAINFRAME)
ex(:,:,:) = ex(:,:,:)/TRAINFRAME;
ex2(:,:,:) = ex2(:,:,:)/TRAINFRAME;
dx(:,:,:) = max(sqrt(ex2(:,:,:) - (ex(:,:,:)).^2),dx_compensate);%DX = E(X^2)-E(X)^2
disp('背景训练完毕!!!');
subplot(2,2,2)
exx = uint8(ex);
imshow(exx);
ss = [int2str(i) '.Background'];
title(ss);
pause(0.01);
end
else
I(:,:,:) = abs(ex(:,:,:) - double(mov(:,:,:)));
subplot(2,2,4),plot(sum(ex(:,:,1)))
for l=1:ROW
for m=1:CLOUMN
if((I(l,m,1) > k*dx(l,m,1))|| (I(l,m,2) > k*dx(l,m,2)) || (I(l,m,3) > k*dx(l,m,3)))%YUV
gs_ex(l,m,1) = 255;
gs_ex(l,m,2) = 255;
gs_ex(l,m,3) = 255;
else
gs_ex(l,m,1) = 0;
gs_ex(l,m,2) = 0;
gs_ex(l,m,3) = 0;
end
end
end
imopen(gs_ex,se);
end
subplot(2,2,3)
imshow(gs_ex);
ss = [int2str(i) '.Moving object testing..'];
title(ss);
pause(0.01);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -