dct变换编码研究课设实验报告_多媒体技术基础 实验图像压缩编码程序设计

本次实验旨在理解有损压缩原理,通过MATLAB实现DCT变换对图像进行压缩编码。实验步骤包括读取图像、DCT变换、系数压缩、解压缩及图像对比。通过调整算法参数,分析压缩性能和重建效果。
摘要由CSDN通过智能技术生成

实验四

图像压缩编码程序设计

一、实验目的和要求

本实验为设计性实验,其目的是理解有损压缩的概念,特别是通过K-L变换或DCT变换,掌握压缩编码的基本原理、算法,并通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解压缩性能及其重建效果的影响、作用,给出适当的理论分析。

二、实验内容和原理

本实验是在根据图像压缩基本原理的基础上,独立设计图像的有损压缩编码算法,并在MATLAB编程环境中编程实现。

其要求是:

1)选择一种有损压缩编码算法(K-L变换或DCT变换)对一幅数字图像进行压缩编码,计算出压缩率,并显示编码前图像。

2)对编码后的数据进行解压,并显示解压后图像。

3)改变算法参数对原始图像数据和解压后的图像数据进行失真估计。

4)通过改变算法参数(比如改变图像编码的子图像小块的尺度等)进行算法比较和讨论。

三、实验环境

硬件:计算机

软件:Windows 2000和MATLAB编程环境。

四、算法描述及实验步骤

1、先用imread读入原图像,即I=imread('lena256rgb.png');

2、使用由函数dctmtx返回的DCT变换矩阵,dctmtx的调用格式为

D=dctmtx(N),继而利用blkproc函数完成分块操作。blkproc函数的调用格式为B=blkproc(A,[m

n],fun,P1,P2,...) ,其具体代码实现如下所示:

T=dctmtx(8); %产生二维DCT变换矩阵

L=blkproc(R1,[8

8],'P1*x*P2',T,T'); %计算二维DCT,矩阵T及其转置T’是DCT函数P1*x*P2的参数

Mask=[ 1 1 1 0 0 0 0 0

1 1 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]; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个

L2=blkproc(L,[8 8],'P1.*x',Mask);

%只保留DCT变换的10个系数

3、对原图像进行压缩,具体代码如下所示:

[m

n]=size(L2);

J=[m n];

for i=1:m

value=L2(i,1);

num=1;

for j=2:n

if

L2(i,j)==value

num=num+1;

else

J=[J num value];

num=1;

value=L2(i,j);

end

end

J=[J num value

];

end

4、对其进行解压缩,具体代码如下:

t1=J(1);

t2=J(2);

K(1:t1,1:t2)=0;

i1=1;

j1=1;

for i=3:2:length(J)

c1=J(i);

c2=J(i+1);

for

j=1:c1

K(i1,j1)=c2;

j1=j1+1;

if j1>t2

i1=i1+1;

j1=1;

end

end

end

R2= blkproc(K,[8,8],'P1*x*P2',T',T); %逆DCT,重构图像

G=I(:,:,2);

G1=im2double(G); %将原图像转为双精度数据类型;

5、显示其图像,代码如下:

A(:,:,1)=R2;

A(:,:,2)=G2;

A(:,:,3)=B2;

Subplot(1,2,1);

imshow(I);title('原图像'); %显示原图像

Subplot(1,2,2);

imshow(A);title('压缩图像');%显示压缩后的图像,对比原始图像和压缩后的图像

以上是8*8矩阵的实现步骤,而4*4矩阵步骤与其相同。

五、调试过程

六、实验结果

1、矩阵为8*8所得的结果如下所示

1)原图像和压缩图像

2)R2的原图像大小、压缩图像大小以及图像的压缩比

3)G2的原图像大小、压缩图像大小以及图像的压缩比

4)B2的原图像大小、压缩图像大小以及图像的压缩比

5)压缩图像A的值

6)原图像I的值

7)J的值

8)经过DCT变换后所得的值L2

2、矩阵为4*4所得的结果

1)原图像和压缩图像原图像和压缩图像

2)R2的原图像大小、压缩图像大小以及图像的压缩比

3)G2的原图像大小、压缩图像大小以及图像的压缩比

4)B2的原图像大小、压缩图像大小以及图像的压缩比

5)压缩图像A的值

6)原图像I的值

7)经过二维DCT变换后所得的值L2

8)J的值

七、总结

通过这次的实验,对彩色图像的压缩以及解压缩有了进一步的了解;也对二维DCT变换矩阵有了更深的认识,包括其调用到的函数的一些用法,比如dctmxt、blkproc函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值