DCT变换是一种与FFT变换紧密相连的数学运算,当函数为偶函数是,其傅立叶展开式只有余弦项,因些称为余弦变换,其离散化的过程称为DCT(离散余弦)变换。下面我们就推导下H.264的4x4整数DCT公式。
首先给出DCT变换的定义,其变换公式可以写成:Y = AXAT,这里A为单位正交距阵,满足:I = AAT,距阵A的公式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/a605cf02d3907b57f8b7589add1ab19e.jpeg)
这里N为距阵的阶数,在这里为N=4,因此,A可以写成如下形势:
![](https://i-blog.csdnimg.cn/blog_migrate/059439ef2980a83388cd31c2fea49673.jpeg)
对A做三角变换
![](https://i-blog.csdnimg.cn/blog_migrate/5a925d30bbed196bf0590538e84ca3ad.jpeg)
设
![](https://i-blog.csdnimg.cn/blog_migrate/7807601586a0801406e7be7d652d2aef.jpeg)
则A距阵可以变为:
![](https://i-blog.csdnimg.cn/blog_migrate/aba9e0abd0940f59990ad848e4f1fda8.jpeg)
又因为A可以分解为
这里我们先算下d的值:
在H.264中,定义d=1/2,则可以根据正交距阵概念算出b=sqrt(2/5),可得
![](https://i-blog.csdnimg.cn/blog_migrate/f64ab547b91fb4168330ffcd72bf424b.jpeg)
对上述公式做一此变换
![](https://i-blog.csdnimg.cn/blog_migrate/9953407898ccd9640fab35acea2fd40b.jpeg)
下面估计正变换输出值的范围
矩阵C行元素绝对值之和为6,因为乘了两次值,最大为36,log236=5.1699 = 6位
加上9位视频输入,共15位。因此,用16位的位深足以表示。