- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图像DCT变换编码与压缩
图像DCT变换编码与压缩
一、实验目的:
(1)掌握离散余弦变换DCT的实现方法,了解DCT的幅度分布特性,从而加深对DCT变换的认识。
(2)掌握图像DCT变换编码的实现方法,从而加深对变换编码压缩图像原理的理解。
二、实验内容:
编程实现图像DCT变换编码。
三、实验原理:
变换编码是在变换域进行图像压缩的一种技术。图1显示了一个典型的变换编码系统。
图1 变换编码系统
在变换编码系统中,如果正变换采用DCT变换就称为DCT变换编码系统。
DCT用于把一幅图像映射为一组变换系数,然后对系数进行量化和编码。对于大多数的正常图像来说,多数系数具有较小的数值且可以被粗略地量化(或者完全抛弃),而产生的图像失真较小。
DCT是仅次于K-L变换的次最佳正交变换,且以获得广泛应用,并成为许多图像编码国际标准的核心。离散余弦变换的变换核为余弦函数,计算速度快,有利于图像压缩和其他处理。
对于N×N的数字图像,二维DCT变换的正反变换可表示为:
(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显示了采用JPEG标准化矩阵进行DCT变换编码的结果。
图2 DCT变换编码
四、实验步骤:
DCT变换编码流程如下:
步骤1:设置JPEG标准化数组;
步骤2:求8×8快的DCT变换矩阵;
步骤3: 计算8×8快的DCT变换;
步骤4:对DCT系数量化和反量化;
步骤5:求反量化系数的逆DCT变换;
步骤6:重新显示重建图像、误差图像和误差图像的直方图。
量化时可采用JPEG标准推荐的归一化数组,如表1所示。
表1 JPEG标准化数组
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
程序如下:
x=imread(lena,bmp);
[M,N]=size(x);%得到原始举矩阵大小
m=[ 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 8
您可能关注的文档
- 国外气象频道发展经验与中国气象频道发展道路.doc
- 国家公园基本条件.doc
- 国家地理摄影图集三.ppt
- 国家地理摄影图集二.ppt
- 国家大学应届生就业政策及实践案例.ppt
- 国家工科基础课程教学基地.doc
- 国家地理摄影图集一.ppt
- 国家智能交通网企业形象识别系统CIS.ppt
- 国家级教学成果奖推荐.doc
- 国家科技项目农业信息化申报书.doc
- 中国自有品牌发展研究报告(2022-2023).docx
- 5.3 实际问题与一元一次方程(一) 说课稿 -2024-—2025学年人教版数学七年级上册.docx
- 2025年腹腔镜外科手术器械项目可行性研究报告.docx
- 2025年膨胀珍珠岩散料项目可行性研究报告.docx
- 2025年自动手摇钥匙复制机项目可行性研究报告.docx
- 2025年自动橡胶注压硫化机项目可行性研究报告.docx
- 2025年自动送料盘项目可行性研究报告.docx
- 2025至2030年中国二线制数显表头数据监测研究报告.docx
- 2025至2030年中国云锦提包数据监测研究报告.docx
- 2025年节能灯电子支架项目可行性研究报告.docx
文档评论(0)