📄 framedif5.m
字号:
%求解视频的帧差分布 (方法五,像素差统计法)
%读取视频
clear all;
clc;
tic;%start time
shot=mpgread('..\videos\cut.mpg',[1:200],'truecolor');%读取视频
%shot=aviread('video\skiing.avi');
frames=size(shot,2);
w=size(shot(1,1).cdata,1);
h=size(shot(1,1).cdata,2);
gray1=double(rgb2gray(shot(1,1).cdata));
r1=double(shot(1,1).cdata(:,:,1));
g1=double(shot(1,1).cdata(:,:,2));
b1=double(shot(1,1).cdata(:,:,3));
framedif=zeros(frames,1);
framedifr=zeros(frames,1);
framedifg=zeros(frames,1);
framedifb=zeros(frames,1);
framedifrgb=zeros(frames,1);
for i=2:frames
gray2=double(rgb2gray(shot(1,i).cdata));
r2=double(shot(1,i).cdata(:,:,1));
g2=double(shot(1,i).cdata(:,:,2));
b2=double(shot(1,i).cdata(:,:,3));
for j=1:w
for k=1:h
framedif(i,1)=framedif(i,1)+abs(gray2(j,k)-gray1(j,k));
framedifr(i,1)=framedifr(i,1)+abs(r2(j,k)-r1(j,k));
framedifg(i,1)=framedifg(i,1)+abs(g2(j,k)-g1(j,k));
framedifb(i,1)=framedifb(i,1)+abs(b2(j,k)-b1(j,k));
end
end
framedif(i,1)=framedif(i,1)/(w*h);
framedifr(i,1)=framedifr(i,1)/(w*h);
framedifg(i,1)=framedifg(i,1)/(w*h);
framedifb(i,1)=framedifb(i,1)/(w*h);
gray1=gray2;
r1=r2;
g1=g2;
b1=b2;
end
framedifrgb=(framedifr+framedifg+framedifb)/3;
%%%%%%%%%%绘制图形%%%%%%%%%%%
figure(2),
%plot(framedif,'y');
plot(framedif);
hold;
%figure,
%plot(framedifr,'r');
%figure,
%plot(framedifg,'g');
%figure,
%plot(framedifb,'b');
%figure,
%plot(framedifrgb,'k');
xlabel('帧数');% x label
ylabel('像素灰度帧差');%y label
title('视频像素灰度帧差统计');%title setting
%l=legend('灰度值','R分量','G分量','B分量','彩色量',2);
l=legend('灰度值',2);
box on;
%set(gca,'Color','none');
%set(l,'color','none');
%text(90,0.5,'突变边界');
%line([0,150],[0.46,0.46],'color','k','linestyle','-.');
toc;%统计时间
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -