start_fouriertransformation.docVIP

  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文档。上传文档
查看更多
start_fouriertransformation

为什么要进行变换空间图像数据通常是很难压缩的:相邻的采样点具有很强的相关性(相互关联的),而且能量一般平均分布在一幅图像中,从而要想丢掉某些数据和降低数据精度而不明显影响图像质量,就要选择合适的变换,方法,使图像易于被压缩。适合压缩的变换方法要有这样几个性质: 1、可以聚集图像的能量(将能量集中到少数有意义的数值上);如下图: 举个例子说明,下图是变换前的数据: 以下是变换后的数据: 可以看出,经变换后,数据的能量基本上集中到左上方(低频信号)了,而变换后的数据完全可以通过反变换还原成原来的数据。为了达到压缩文件的目的,我们就可以丢弃掉一些能量低的数据(高频信号),而对图像质量影响很小。 2、可以除去数据之间的相关性(以使丢掉不重要的数据对图像的质量影响很少)。 3、变换方法应该适合用软硬件实现。 以下将描述4x4整数DCT推导过程 将上面的DCT公式转变为矩阵形式,为了说明标准中整数变换和反变换,先设d=c/b, 我们可以把DCT变换写成下式: 其中,为了保证正交,a ,b, c, d的值可分别如下设置: 根据假设,上式可化为: 把两边的对称矩阵移到左边可得:(下一步运算没搞清楚是怎么回事。)(对角阵移项) 这一步也有点问题:(等价的乘数移项) 此时,d的值为0.4142。这样的话,还是实数运算。如我们令d=1/2,则b=sqrt(2/5). c=sqrt(1/10),同样,可以保证矩阵的正交,同时,可以把运算变为整数运算。 1/2可以提到矩阵外面,并与右边的点乘合并,得 其中, 在JM编码器中,变换过程只包括了 后面的点乘实际上是在量化过程中进行,因为后面的点乘还有实数运算,实数运算将不可避免地产生精度误差,而且运算量巨大。而量化本身就会丢失一些信号,因些,这些实数运算放在量化过程中将大大的降低变换的运算率同时又不明显影响精度? ? 然而,4X4的矩阵运算如果按常规算法的话仍要进行64次乘法运算和48次加法,这将耗费较多的时间,于是在H.264中,有一种改进的算法(蝶形算法)可以减少运算的次数。这种矩阵运算算法构造非常巧妙,利用构造的矩阵的整数性质和对称性,可完全将乘法运算转化为加法运算。 变换过程在JM中代码实现如下: ? //? Horizontal transform水平变换,其实就是左乘Cf, ? for (j=0; j BLOCK_SIZE !lossless_qpprime; j++) ? { ??????????? for (i=0; i 2; i++) ??? { ????? i1=3-i; ????? m5[i]=img-m7[i][j]+img-m7[i1][j]; ??? ??m5[i1]=img-m7[i][j]-img-m7[i1][j]; ??? } ??? img-m7[0][j]=(m5[0]+m5[1]); ??? img-m7[2][j]=(m5[0]-m5[1]); ??? img-m7[1][j]=m5[3]*2+m5[2]; ??? img-m7[3][j]=m5[3]-m5[2]*2; ? } ? //? Vertical transform垂直变换,其实就是右乘CfT ? for (i=0; i BLOCK_SIZE !lossless_qpprime; i++) ? { ??????????? for (j=0; j 2; j++) ??? { ????? j1=3-j; ????? m5[j]=img-m7[i][j]+img-m7[i][j1]; ????? m5[j1]=img-m7[i][j]-img-m7[i][j1]; ??? } ??? img-m7[i][0]=(m5[0]+m5[1]); ??? img-m7[i][2]=(m5[0]-m5[1]); ??? img-m7[i][1]=m5[3]*2+m5[2]; ??? img-m7[i][3]=m5[3]-m5[2]*2; ? } ? ? ? 上面的内容载抄自网络,我做了少量更改。多数内容来自毕厚杰的书。 这里来分析一下蝶形算法,这个蝶形算法和一般FFT的蝶形算法不同,由于我没有找到相关论文,能找到的书和网络资料又语焉不详,只好自己推导。上面的JM代码就是计算下面三个4x4矩阵的过程。 分析一下前两个矩阵的乘法,只分析他们结果矩阵的第一行。有什么办法可以减少运算量呢?首先采用传统方法计算,得到结果: X[0] = x[00]+x[10]+x[20]+x[30] X[1] = 2*x[00]+x[10]-x[20]-2*x[30] X[2]= x[00]-x[10]-x[20]+x[30] X[3] = x[00]-2x[10]+2x[20]

文档评论(0)

sd44055 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档