当前位置:文档之家› 数字图像处理实验6冈萨雷斯.

数字图像处理实验6冈萨雷斯.

一、实验目的
实验六图像压缩(同预习)
1、理解有损压缩和无损压缩的概念;
2、理解图像压缩的主要原则和目的;
3、利用MATLAB 程序进行图像压缩。

二、实验内容
1、Huffman 编码
使用 mat2huff,huff2mat 实现Huffman 编解码,并应用imratio 计算编码后信
号的压缩率。

2、编写无损预测编解码(lossless predictive coding)程序,使p313 Figure
8.7 (c 图具有更低的熵(5.4436)。

显示预测误差(prediction error图。

用解
码程序解码,并验证解码是否正确(compare)。

3、参考p319-323,实现16×16分块离散余弦(DCT编码,用zigzag方式保留每一块的前10个和前21个系数,再进行进行DCT解码。

编写程序并分别显示解码后的两个图。

实验程序:
实验1:
i=imread('Fig0804(a(Tracy.tif';
i1=mat2huff(i;
cr1=imratio(i,i1;%cr1,压缩率
i2=huff2mat(i1;
rmse1=compare(i,i2;
figure,imshow(i;
figure,imshow(i2;
实验2:
子程序1:
function y = mat2lpc2(x, f
%本程序改自课本上那个程序,可实现更高压缩率!
error(nargchk(1, 2, nargin; % Check input arguments
if nargin < 2 % Set default filter if omitted
f = 1;
end
x = double(x; % Ensure double for computations
[m, n] = size(x; % Get dimensions of input matrix
p = zeros(m, n; % Init linear prediction to 0
xs = x; zc = zeros(1,n; % Prepare for input shift and pad for j = 1:length(f % For each filter coefficient ...
xs = [zc; xs(1:end - 1,:]; % Shift and zero pad xga改加一行p = p + f(j * xs; % Form partial prediction sums
end
y = x - round(p; % Compute the prediction error
子程序2:
function x = lpc2mat2(y, f
% 本程序改自课本上那个程序,可以解压
error(nargchk(1, 2, nargin; % Check input arguments
if nargin < 2 % Set default filter if omitted
f = 1;
end
y=y';
f = f(end:-1:1; % Reverse the filter coefficients
[m, n] = size(y; % Get dimensions of output matrix
order = length(f; % Get order of linear predictor
f = repmat(f, m, 1; % Duplicate filter for vectorizing
x = zeros(m, n + order; % Pad for 1st 'order' column decodes
% Decode the output one column at a time. Compute a prediction based % on the 'order' previous elements and add it to the prediction
% error. The result is appended to the output matrix being built.
for j = 1:n
jj = j + order;
x(:, jj = y(:, j + round(sum(f(:, order:-1:1 .* ...
x(:, (jj - 1:-1:(jj - order, 2;
end
x = x(:, order + 1:end; % Remove left padding
x=x';
总程序:
f=imread('Fig0807(c(Aligned.tif';
e=mat2lpc2(f;
figure,imshow(mat2gray(e;
h=entropy(e;
c=lpc2mat2(e;
figure,imshow(c,[];
rmse=compare(f,c;
实验三:
i=imread('Fig0804(a(Tracy.tif';
i=im2double(i;
mask1=[1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];
mask2=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ];
T=dctmtx(16;
B=blkproc(i,[16 16],'P1*x*P2',T,T'; i1=blkproc(B,[16 16],'P1.*x',mask1; i2=blkproc(B,[16 16],'P1.*x',mask2; ii1=blkproc(i1,[16 16],'P1*x*P2',T',T;
ii2=blkproc(i2,[16 16],'P1*x*P2',T',T; figure,imshow(ii1;
figure,imshow(ii2;。

相关主题