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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

实验六图像压缩(同预习)

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 ];

相关文档
最新文档