首页 > 代码库 > AVS-P2中的8x8二维整数余弦变换(Integer Cosine Transform, ICT)

AVS-P2中的8x8二维整数余弦变换(Integer Cosine Transform, ICT)

为何采用ICT?

基于块的DCT能很大程度上去除图像元素在变换域中的相关性,在图像和视频编码领域得到广泛的应用。但由于DCT存在计算量大以及存在反变换失配,因此AVS Part 2采用的是ICT,其性能接近8x8 DCT,但精确定义到每一位的运算避免了不同反变换之间的失配。ICT具有复杂度低、完全匹配等优点。ICT可用加法和移位直接实现。

何为ICT?

整数余弦变换(Integer Cosine Transform, ICT)源自离散余弦变换,是定点余弦变换的扩展。设一个二维数据块X大小为nxm,如果要对X进行二维整数余弦变换,那么垂直正向整数余弦变换矩阵A大小为nxn,水平正向整数余弦变换矩阵B大小为mxm。

变换过程:

Y=A×X×B

变换矩阵A和B如何确定呢?

一个nxn变换矩阵ICTn包含了n个相同或不同的整数系数,设第k行第0列的系数tk0表示为nk0kn?1,则第i行j列系数tij

tij=nkcos(2j+12niπ)=cos(k2nπ)0in?11jn?1
tij=?nkcos(2j+12niπ)=?cos(k2nπ)0in?11jn?1

并且要求矩阵中所有的行向量都是正交的。

为何采用8x8块大小?

基于块的视频编码中,有变换块大小、帧间和帧内图像补偿块大小。在H.264/AVC中,最小的变换以及帧内和帧间补偿块大小都是4x4.块越小,帧间和帧内补偿的精度越高,而且残差越小。但另一方面,块越小,运动矢量和帧内预测模式需要越多的比特数。

实验表明,在高清序列上8x8块大小比4x4要好,而高清视频是AVS Part 2的目标。8x8整数变换的计算量比4x4要大一点,但是从运动补偿、运动估计和去块效应滤波上看,8x8块的复杂度要低很多。综合性能和复杂度,AVS Part 2采用8x8块作为帧内预测、最小的帧间运动搜索块大小、变换和最小的运动补偿单元。

总结

AVS Part 2中的8x8整数变换矩阵,变换性能好,且实现简单。8x8整数变换矩阵是由AVS工作组相关人员经过多次试验测试,综合考虑变换性能和实现复杂度而得到的。在复杂度方面,其变换核中的系数不大,通过对整个变换编码过程进行合理设计后,在解码端的反变换过程中,所有的中间变量以及最终结果都可以保证在16bit内。也就是说整个变换过程能够在16bit的寄存器内完成。


参考书籍:《AVS技术创新报告(2002-2010)》

AVS-P2中的8x8二维整数余弦变换(Integer Cosine Transform, ICT)