数据压缩实验报告4.docVIP

  • 146
  • 0
  • 约3.12千字
  • 约 3页
  • 2016-05-25 发布于重庆
  • 举报
数据压缩实验报告4

桂 林 理 工 大 学 实 验 报 告 (2013~ 2014 学年度 第 一 学期) 班级: 学号 : 姓名: 实验名称:实验四 图像DCT变换编码与压缩 日期: 2013年12月12日 一、实验题目: 图像DCT变换编码与压缩 二、实验目的: (1)掌握离散余弦变换DCT的实现方法,了解DCT的幅度分布特性,从而加深对DCT变换的认识。 (2)掌握图像DCT变换编码的实现方法,从而加深对变换编码压缩图像原理的理解。 三、实验内容: 编程实现图像DCT变换编码。 四、预备知识: (1)熟悉DCT原理。 (2)熟悉变换编码原理。 (3)熟悉在MATLAB环境下对图像文件的I/O操作。 五、实验原理: 变换编码是在变换域进行图像压缩的一种技术。图2.2.1显示了一个典型的变换编码系统。 图2.2.1 变换编码系统 在变换编码系统中,如果正变换采用DCT变换就称为DCT变换编码系统。 DCT用于把一幅图像映射为一组变换系数,然后对系数进行量化和编码。对于大多数的正常图像来说,多数系数具有较小的数值且可以被粗略地量化(或者完全抛弃),而产生的图像失真较小。 DCT是仅次于K-L变换的次最佳正交变换,且以获得广泛应用,并成为许多图像编码国际标准的核心。离散余弦变换的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。 对于N×N的数字图像,二维DCT变换的正反变换可表示为: (2.2.1) 其中, MATLAB图像处理工具箱实现离散余弦变换有两种方法: (1)使用函数dct2,该函数用一个基于FFT的算法来提高当输入较大的方阵时的计算速度。 (2)使用由dctmtx函数返回的DCT变换矩阵,这种方法较适合于较小的输入方阵(例如8×8或16×16)。 ①函数:dct2 实现图像的二维离散余弦变换。调用格式为: B = dct2(A) B = dct2(A,[M N]) 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,[M N]) 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,并重新将结果组合到输出图像B。 blkproc函数实现n×n矩阵的DCT变换和反变换。编程中可写成: Y=blkproc(F,[8 8],’P1*x*P2’,H,H’) 同样的道理,blkproc函数还用于量化和反量化。 显示误差直方图可能用到的MATLAB函数有: Max %找图像差最大值 [ ]=hist %用于生成直方图数据 Bar %显示图像差值直方图 以上函数用MATLAB的help查看具体使用方法。 图2.2.2显示了采用JPEG标准化矩阵进行DCT变换编码的结果。 图2.2.2 DCT变换编码 六、实验步骤: DCT变换编码流程如下: 步骤1:设置JPEG标准化数组; 步骤

文档评论(0)

1亿VIP精品文档

相关文档