图像二维整数离散余弦变换(DCT)变换算法.docVIP

图像二维整数离散余弦变换(DCT)变换算法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
光电图像处理综合课程设计 图像二维整数离散余弦变换(DCT)变换算法 和DSP实现 20 13年 10 月 23 日 PAGE PAGE I 目录 摘要、关键词1 一. 背景1 二.课程设计的目的和任务1 三. 离散余弦变换原理1 四.整数离散余弦变换原理2 五.采用蝶形快速算法实现整数DCT3 程序设计流程图4 七. C语言程序设计4 八.结论8 九.心得8 参考文献8 PAGE PAGE 1 摘 要 为了更有效地计算二维离散余弦变换——DCT,提出了一种直接作用于二维数据集的快速算法,分析了该算法的运算特点。并用C语音程序实现了一个4×4和8×8点的整数DCT变换。 关键词 离散余弦变换 二维 快速算法 一. 背景 离散余弦变换(简称DCT)自从1974年提出后,在图像和视频编码领域得到了广泛的应用,其变换性能在所有次优变换中非常显著,能极大地去除图像元素在变换域中的相关性,为高效率的图像压缩奠定了基础。因此不断有新的DCT的快速算法提出。二维DCT的常规算法是行、列法,对于计算N×N DCT,需要计算2N个一维DCT。为了更有效地计算二维DCT,在这里提出了一种直接作用于二维数据集的快速算法 该算法对于计算N×N DCT(N=)只需计算N个一维DCT(N=)因此,本算法的目的是减少运算次数,即所需乘法次数只是常规算法的一半。本算法的计算结构具有高度的规则性,并只要求用实数进行运算。 二. 课程设计的目的和任务 目的: 1.理解离散余弦变换和逆变换的原理; 2.理解整数离散余弦变换原理; 3.掌握4*4点的整数DCT变换,8*8点的整数DCT变换。 任务: 1.阐述离散余弦变换和逆变换的原理、整数离散余弦变换原理; 2.画出程序设计流程图; 3.C语言程序设计:4*4点的整数DCT变换; 4.DSP程序调试(基于实验现有图像处理程序); 5.完成课程设计报告撰写。 三.离散余弦变换原理 离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT f),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数)。 二维离散余弦变换 正变换(公式1): PAGE PAGE 8 逆变换(公式2): 其中: 4×4变换系数矩阵如下: 更为简洁的定义方法是采用矩阵式定义。根据以上公式定义可知,离散余弦变换的系数矩阵可以写成如下: 四.整数离散余弦变换原理 由于DCT的变换矩阵式是用浮点数表示,浮点运算量较大,占用较多的系统资源。为了提高变换效率,DCT有发展出用定点计算或者较大的整型变换逼近浮点运算,由于存在精度误差,即使没有经过量化,反变换后也不能完全恢复图像数据,也就是编码的可逆性不强。整数变换的产生,同时解决了计算精度误差大和编码效率低的问题,其特点是用整数变换矩阵代替DCT的浮点数变换矩阵,这样变换过程完全是整数运算,不存在精度误差,保证了编码的可逆性;同时整数乘法可用加减法和位移代替,因此变换过程可以完全通过加减法和位移实现,运算量大幅度减少。 以4×4的图像块为例进行变换操作,则相应的4×4变换矩阵为: 相应的矩阵显示的二维DCT定义为 等效: 其中, d =c/b(≈01414). 为了简化计算, 取d =1/2,再经过加减和左移就可实现。整数DCT的变换与通常DCT运算结果近似,但因为b和c的值有所变化,所以结果有差别 五.采用蝶形快速算法实现整数DCT 观察公式(1),会发现F(u,v)可以通过两次一维整数DCT变换来实现,先对矩阵的每行进行一维整数DCT变换,在对所得矩阵的每列应用一维整数DCT进行变换,这样每次一维整数DCT就可以采用蝶形快速算法进行运算,可以节省运算时间,如下图所示: 蝶形快速算法利用了矩阵乘法中的重复单元,将这些冗余计算储存起来,很大程度上减少了运算次数,易于在DSP处理器上实现。 六.程序设计流程图 由于N×N二维离散函数f(x,y)的DCT变换为F(u,v),从公式(1)可看出其存在可分离性质: 根据可分离性原理,一次二维DCT变换,可以通过二次一维DCT正变换完成,其算法流程如下所示: F(u,v)=x*y N×N二维离散序列f(x,y)F(x,v)F(u,v) N×N二维离散序列f(x,y) F(x,v) F(u,v) 按行进行一维DCT变换按列进行一维DCT变换 按行进行一维DCT变换 按列进行一维DCT变换 七.C语言程序设计 4*4与8*8点的整数DCT变换只是数组的不同,两者算法的本质是一样的,这里以8*8为例,用C语言

文档评论(0)

153****9595 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档