数字图像处理 实验八 图像变换压缩编码

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

实验八图像变换压缩编码

一,实验目的:

1,掌握变换压缩编码的原理与方法

2,了解有损压缩图像质量评价的指标

二,实验条件

1,MATLAB软件

2,典型的灰度,彩色图像。

三,实验原理

1,去除数据冗余度可以有效地压缩数据

2,图像编码压缩的主要技术指标:压缩比,客观评价SNR,主观评价四,实验内容

1,以DCT变换为例,采用标准亮度量化表,得有损压缩的变换值,计算并显示其直方图

2,采用标准量化表将上述变换值反量化回去后用IDCT变换回图像,比较并计算压缩前后图像的差异(MSE,PSNR等)

3,根据由1计算得到的直方图试判断采用Huffman编码的平均码长。五,实验步骤

1,以DCT变换为例,采用标准亮度量化表,得有损压缩的变换值,计算并显示其直方图

(1)代码如下所示

I=imread('a.jpg');

J=rgb2gray(I);

J=imresize(J,[512 512]);

%imshow(J);

A=zeros(8,8);

B=zeros(512,512);

lighttable=... %标准亮度量化表

[16 11 10 16 24 40 51 61,

12 12 14 19 26 58 60 55,

14 13 16 24 40 57 69 56,

14 17 22 29 51 87 80 62,

18 22 37 56 68 109 103 77,

24 35 55 64 81 104 113 92,

49 64 78 87 103 121 120 101,

72 92 95 98 112 100 103 99];

for i=1:64 %用i,j来控制子块

for j=1:64

for m=(8*(i-1)+1):8*i

for n=(8*(j-1)+1):8*j

A(m-(8*(i-1)+1)+1,n-(8*(j-1)+1)+1)=J(m,n);%提取

8*8子块

end

end

C1=dct2(A); %对子块进行dct2变换

C2=round(C1./lighttable); %将C1进行量化,并取整

for p=1:8 %将子块按序存进512*512的矩

阵中

for q=1:8

B(p+8*(i-1),q+8*(j-1))=C2(p,q);

end

end

end

end

H=zeros(1,256*2-1);

for i=1:m

for j=1:n

H(B(i,j)+255)=H(B(i,j)+255)+1; %统计各值概率

end

end

X=[-255:255];

plot(X,H); %绘制坐标为-255—255的直方图

(2)直方图如下所示

-300-200-1000100200300

00.5

1

1.5

2

2.5

5

2,采用标准量化表将上述变换值反量化回去后用IDCT 变换回图像,比

较并计算压缩前后图像的差异(MSE ,PSNR 等)

(1)代码如下所示

for i=1:64 %用i ,j 来控制子块

for j=1:64

for m=(8*(i-1)+1):8*i

for n=(8*(j-1)+1):8*j

A(m-(8*(i-1)+1)+1,n-(8*(j-1)+1)+1)=B(m,n);

end

end

C3=A.*lighttable; %将子块反量化回去

C4=idct2(C3); %对C3进行IDCT 变换

for p=1:8

for q=1:8

D(p+8*(i-1),q+8*(j-1))=C4(p,q);

end

end

end

end

D=uint8(D);

subplot(1,2,1),imshow(J);

subplot(1,2,2),imshow(D);

%计算J 和D 均方根误差

e = double(J) - double(D);

[m, n] = size(e);

MSE = sqrt(sum(sum(e.^2))/(m*n));

k = 8;

%k为图像是表示地个像素点所用的二进制位数,即位深。

fmax = 2.^k - 1;

a = fmax.^2;

b = sum(sum(e.^2));

PSNR = 10*log(m*n*a/b);

(2)显示压缩前后图像

(3)显示MSE和PSNR的值

MSE=4.4339

PSNR=81.04

3,根据由1计算得到的直方图试判断采用Huffman编码的平均码长。

答:由1的直方图可以确定一个大的分布值为-3—3。即编码需要的比特数位3位。其中有一位来表示正负。

六,讨论与分析

1,有可能增强压缩效率的部分在哪里?

在取直方图的时候,综合整幅图像的数据。使得值分布得更集中,可以更有效地去除数据冗余度从而压缩数据。

相关文档
最新文档