基于Matlab的图像统计特性(帧内、帧间差值统计特性)
DIP实验4:图像的统计特性
实验目的
观察序列图像帧内、帧间差值信号的分布曲线,理解图像在空间域和频率域上的统计特性及其在压缩中的重要性。
实验内容
1)编写帧内统计函数,计算差值图像(同一行差值、同一列差值),观察统计分布曲线;
2)编写帧间统计函数,计算差值图像(相邻帧的差值),观察统计分布曲线(cla0/1或girl0/1)。
输出图像排列格式如下:
原图像 | 水平差值统计特性 | 垂直差值统计特性 |
---|---|---|
原图像1 | 原图像2 | 帧差统计特性 |
参考代码
figure('NumberTitle', 'off', 'Name', '实验4:图像的统计特性');
OI = imread('rice.bmp'); % 原始图像读取
OI1 = imread('CLA1.bmp'); % 原始图像读取
OI2 = imread('CLA2.bmp'); % 原始图像读取
H = Intra(OI, 1); % 帧内水平差值统计特性 Intra Frame_Horizontal
V = Intra(OI, 0); %帧内垂直差值统计特性 Intra Frame_Vertical
D = Inter(OI1, OI2); %帧间统计特性 Inter Frame
subplot(2,3,1); imshow(OI); title('rice');
subplot(2,3,2); stat(H); title('水平差值统计特性');
subplot(2,3,3); stat(V); title('垂直差值统计特性');
subplot(2,3,4); imshow(OI1); title('CLA1');
subplot(2,3,5); imshow(OI2); title('CLA2');
subplot(2,3,6); stat(D); title('帧差统计特性');
% 帧内统计函数
function Img =Intra(OI, type)
% type = 1 水平
% tpye = 0 垂直
OI = double(OI);
[M, N] = size(OI);
Img = zeros(1,511);
if type == 1
for i = 1 : M
for j = 1 : N-1
% 帧内水平灰度差值
delta = OI(i,j) - OI(i,j+1);
% delta [-255, 255]
Img(delta+256) = Img(delta+256) + 1;
end
end
else
for i = 1 : M-1
for j = 1:N
dV = OI(i,j) - OI(i+1,j);
Img(dV+256) = Img(dV+256) + 1;
end
end
end
end
% 帧间统计函数
function Img = Inter(OI1, OI2)
OI1 = double(OI1);
OI2 = double(OI2);
[M,N] = size(OI1);
Img = zeros(1, 511);
for i = 1 : M
for j = 1 : N
% 计算帧间差值
dt = OI1(i,j) - OI2(i,j);
Img(dt+256) = Img(dt+256) + 1;
% dt [-255, 255]
end
end
end
function stat(D)
D = D / sum(D);
x = -255: 255;
plot(x, D);
end