实验四 图像编码
一、 实验目的
了解图像压缩编码的分类与评价指标;
掌握常用的熵编码方法以及matlab编程;
掌握基于FFT的图像压缩技术以及matlab编程;
掌握基于DCT的图像压缩技术以及matlab编程;
熟悉JPEG图像压缩编码过程;
掌握imwrite函数实现可变quality的JPEG压缩;
二、 实验内容
(1)对给定的图像tu.bmp,进行哈夫曼编码,并解码输出,观察workspace下各个矩阵数据。
h=imread('tu.bmp');
[m,n]=size(h);
subplot(1,2,1);
imshow(h);
title('yuantu');
h=h(:);
s=0:255;
for i=0:255
p(i+1)=length(find(h==i))/(m*n);
end
dict=huffmandict(s,p);
enco=huffmanenco(h,dict);
deco=huffmandeco(enco,dict);
deco=col2im(deco,[m,n],[m,n],'distinct');
subplot(1,2,2);
imshow(uint8(deco));
title('huffman');
(2)阅读jpeg压缩编码的有关资料,使用imwrite函数对lena图像进行jpeg压缩,对比显示原图与不同质量参数下解码后的图像,并显示均方根误差、压缩比、图像大小
x=imread('lena.bmp');
imwrite(x,'c:/lena1.jpg','quality',20);
imwrite(x,'c:/lena2.jpg','quality',60);
imwrite(x,'c:/lena3.jpg','quality',80);
x1=imread('c:/lena1.jpg');
k1=imfinfo('c:/lena1.jpg');
s1=k1.FileSize/1024;
e1=x(:)-x1(:);