图像dct变换编码与压缩

图像dct变换编码与压缩

ID:9388367

大小:3.44 MB

页数:8页

时间:2018-04-29

图像dct变换编码与压缩_第1页
图像dct变换编码与压缩_第2页
图像dct变换编码与压缩_第3页
图像dct变换编码与压缩_第4页
图像dct变换编码与压缩_第5页
资源描述:

《图像dct变换编码与压缩》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、图像DCT变换编码与压缩一、实验目的:(1)掌握离散余弦变换DCT的实现方法,了解DCT的幅度分布特性,从而加深对DCT变换的认识。(2)掌握图像DCT变换编码的实现方法,从而加深对变换编码压缩图像原理的理解。二、实验内容:编程实现图像DCT变换编码。三、实验原理:变换编码是在变换域进行图像压缩的一种技术。图1显示了一个典型的变换编码系统。图1变换编码系统在变换编码系统中,如果正变换采用DCT变换就称为DCT变换编码系统。DCT用于把一幅图像映射为一组变换系数,然后对系数进行量化和编码。对于大多数的正常图像来说,多数系数具有较小的数值且可以被粗略地量化(或

2、者完全抛弃),而产生的图像失真较小。DCT是仅次于K-L变换的次最佳正交变换,且以获得广泛应用,并成为许多图像编码国际标准的核心。离散余弦变换的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。对于N×N的数字图像,二维DCT变换的正反变换可表示为:(1)其中,MATLAB图像处理工具箱实现离散余弦变换有两种方法:(1)使用函数dct2,该函数用一个基于FFT的算法来提高当输入较大的方阵时的计算速度。(2)使用由dctmtx函数返回的DCT变换矩阵,这种方法较适合于较小的输入方阵(例如8×8或16×16)。①函数:dct2实现图像的二维离散余弦变换。

3、调用格式为:B=dct2(A)B=dct2(A,[MN])B=dct2(A,M,N)式中A表示要变换的图像,M和N是可选参数,表示填充后的图像矩阵大小,B表示变换后得到的图像矩阵。②函数:dctmtx除了用dct2函数实现二维离散余弦变换,还可用dctmtx函数来计算变换矩阵,调用格式为:D=dctmtx(N)式中D是返回N×N的DCT变换矩阵,如果矩阵A是N×N方阵,则A的DCT变换可用D×A×D’来计算。这在有时比dct2计算快,特别是对于A很大的情况。③函数:idct2实现图像的二维离散余弦反变换。调用格式为:B=idct2(A)B=idct2(A,

4、[MN])B=idct2(A,M,N)式中参数同dct2。此外,为了实现8×8子块的DCT图像变换还要用到MATLAB中的blkproc函数。将这个函数和函数dctmtx一起用于块处理可以大大简化运算。调用函数blkproc的格式为:B=blkpro(A,[M,N],FUN,P1,P2,…)其中,A表示原图像,[M,N]指定了大小为M×N的滑动邻域,FUN是对M×N的矩阵进行计算的函数,Pi是传递给FUN的附加参数。该函数自动实现图像块处理的整个过程。Blkproc把A分成M×N个块,对每个块调用参数为P1,P2,…的函数FUN,并重新将结果组合到输出图像

5、B。blkproc函数实现n×n矩阵的DCT变换和反变换。编程中可写成:Y=blkproc(F,[88],’P1*x*P2’,H,H’)同样的道理,blkproc函数还用于量化和反量化。显示误差直方图可能用到的MATLAB函数有:Max%找图像差最大值[]=hist%用于生成直方图数据Bar%显示图像差值直方图以上函数用MATLAB的help查看具体使用方法。图2显示了采用JPEG标准化矩阵进行DCT变换编码的结果。图2DCT变换编码四、实验步骤:DCT变换编码流程如下:步骤1:设置JPEG标准化数组;步骤2:求8×8快的DCT变换矩阵;步骤3:计算8×8

6、快的DCT变换;步骤4:对DCT系数量化和反量化;步骤5:求反量化系数的逆DCT变换;步骤6:重新显示重建图像、误差图像和误差图像的直方图。量化时可采用JPEG标准推荐的归一化数组,如表1所示。表1JPEG标准化数组1611101624405161121214192658605514131624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399程序如下:x=imread('lena','bmp');[M,N]=

7、size(x);%得到原始举矩阵大小m=[1611101624405161;1212141926586055;1413162440576956;1417222951878062;182237566810910377;243555648110411392;4964788710312112010;7292959811210010399];I=x;x=double(x);%变成双精度t=dctmtx(8);%得到DCT变换矩阵y1=blkproc(x,[88],'P1*x*P2',t,t');%进行DCT变换得到变换矩阵y2=blkproc(y1,[88],'r

8、ound(x./P1)',m);%量化y3=blkproc(y2,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。