Title: ABT Coding Elements
Source: Institut und Lehrstuhl für Nachrichtentechnik RWTH Aachen 52074 Aachen, Germany
Author: Mathias Wien and Claudia Mayer
Time: 9-12 January, 2001
1.这个提案是针对于自适应块变换(ABT)方法提出的.
2.自适应块变换(ABT)
在TML中有7种类型的切分宏块的方法与它们对应的运动向量,它们用来进行运动补偿. 这些块都需要用尽可能大的大小进行变换. 因为我们要对16x16,16x8,8x16,8x8,8x4,4x8,4x4的块进行变换,那么大小为4x4,8x8,16x16的水平和垂直变换的矩阵就成为一个需要了.
块变换的过程可以用如下式子进行表示:
Cnxm = Tm * Bnxm * Tn(T)
Cnxm表示变换之后的系数矩阵,而Tm表示垂直变换矩阵,Tn表示水平变换矩阵.分别大小为mxm和nxn.Bnxm表示一个n*m大小的原始块.
3. 运动预测
在ABT中的可变的变换必须在运动估计的过程中进行考虑.这里,SATD是用由块的模式使指出的块的大小而进行计算的.大小为4x4,8x8,16x16的Hadamard变换在这里使用.除了SATD之外,运动估计的方法都跟TML没有区别.
4.整变换矩阵
变换的矩阵是对4x4,8x8,16x16的DCT变换的整数逼近.下面,我们把整变换写为ICT(整数余弦变换).4x4的ICT在TML中已有实现,8x8的ICT在vceg的q15k24中有描述.16x16的ICT在VCEG-L12中有描述,8x8和16x16的变换矩阵在下面给出:
T8 = [
17 17 17 17 17 17 17 17
24 20 12 6 -6 -12 –20 -24
23 7 -7 -23 -23 -7 7 23
20 -6 -24 –12 12 24 6 -20
17 -17 –17 17 17 -17 –17 17
12 -24 6 20 -20 -6 24 -12
7 –23 23 -7 -7 23 -23 7
6 -12 20 –24 24 -20 12 -6 ];
T16 = [
17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17
21 21 21 21 15 7 15 7 -7 -15 -7 -15 -21 -21 -21 -21
24 20 12 6 -6 -12 -20 -24 -24 -20 -12 -6 6 12 20 24
15 7 15 7 -21 -21 -21 -21 21 21 21 21 -7 -15 -7 -15
23 7 -7 -23 -23 -7 7 23 23 7 -7 -23 -23 -7 7 23
21 21 -21 -21 -15 -7 15 7 -7 -15 7 15 21 21 -21 -21
20 -6 -24 -12 12 24 6 -20 -20 6 24 12 -12 -24 -6 20
15 7 -15 -7 21 21 -21 -21 21 21 -21 -21 7 15 -7 -15
17 -17 -17 17 17 -17 -17 17 17 -17 -17 17 17 -17 -17 17
21 -21 -21 21 7 -15 -7 15 -15 7 15 -7 -21 21 21 -21
12 -24 6 20 -20 -6 24 -12 -12 24 -6 -20 20 6 -24 12
7 -15 -7 15 -21 21 21 -21 21 -21 -21 21 -15 7 15 -7
7 -23 23 -7 -7 23 -23 7 7 -23 23 -7 -7 23 -23 7
21 -21 21 -21 -7 15 -7 15 -15 7 -15 7 21 -21 21 -21
6 -12 20 -24 24 -20 12 -6 -6 12 -20 24 -24 20 -12 6
7 -15 7 -15 21 -21 21 -21 21 -21 21 -21 15 -7 15 -7];
T16是用8x8的ICT来建立的偶基向量.奇数基向量可以使用16x16的Hadamard矩阵和16x16的由子矩阵构成的变换矩阵生成.
子矩阵如下:
C8 = [
16 0 0 -2 5 0 0 2
0 16 2 0 0 5 -2 0
0 -2 16 0 0 2 5 0
2 0 0 16 -2 0 0 5
-5 0 0 2 16 0 0 2
0 -5 -2 0 0 16 -2 0
0 2 -5 0 0 2 16 0
-2 0 0 -5 -2 0 0 16];
这个子矩阵的左下角还有其他区域有不少0,这个性质可以使用我们使用T16矩阵进行高性能运算的实现.
5.量化矩阵
量化跟TML里面的方法是相同的.这里,对于7种宏块模式有5种不同的量化表.量化表在下面列出.对于4x4的块的量化可以从TML里面得到.量化表里面的值是由下面条件生成的:
Anxm * Bnxm * Nnxm^2 = 2^40.
Nnxm^2表示nxm的块的范数值.
量化表:
QP 16x16 16x8 = 8x16 8x8 8x4 = 4x8
A B A B A B A B
0 91 565 128 803 181 1136 335 2100
1 81 635 114 902 162 1270 299 2353
2 72 714 102 1008 144 1428 266 2645
3 64 803 91 1130 128 1607 237 2968
4 57 902 81 1270 114 1804 211 3334
5 51 1008 72 1428 102 2017 188 3742
6 45 1143 64 1607 91 2260 168 4188
7 40 1286 57 1804 81 2539 149 4721
8 36 1428 51 2017 72 2857 133 5289
9 32 1607 45 2286 64 3214 118 5962
10 29 1773 40 2571 57 3609 105 6700
11 25 2057 36 2857 51 4033 94 7484
12 23 2236 32 3214 45 4571 84 8375
13 20 2571 29 3546 40 5142 75 9380
14 18 2857 25 4114 36 5714 67 10500
15 16 3214 23 4472 32 6428 59 11924
16 14 3673 20 5142 29 7093 53 13274
17 13 3956 18 5714 25 8228 47 14968
18 11 4675 16 6428 23 8943 42 16750
19 10 5142 14 7346 20 10285 37 19014
20 9 5714 13 7911 18 11428 34 20691
21 8 6428 11 9350 16 12856 30 23450
22 7 7346 10 10285 14 14693 26 27058
23 6 8571 9 11428 13 15823 24 29313
24 6 8571 8 12856 11 18700 21 33500
25 5 10285 7 14693 10 20570 19 37026
26 5 10285 6 17141 9 22855 17 41382
27 4 12856 6 17141 8 25712 15 46900
28 4 12856 5 20570 7 29385 13 54116
29 3 17141 5 20570 6 34283 12 58625
30 3 17141 4 25712 6 34283 10 70350
31 2 25712 4 25712 5 41139 9 78167
Block Size Norm Nnxm^2
16x16 16 * 17^2
16x8 8 * sqrt(2) * 17^2
8x16 8 * sqrt(2) * 17^2
8x8 8 * 17^2
8x4 4 * sqrt(2) * 13 * 17
4x8 4 * sqrt(2) * 13 * 17
4x4 4 * 13^2
6.扫描方法
对于量化过后的ABT系数来说,扫描过程是对于每个编码宏块的完全扫描.我们使用了zigzag扫描方法.对于像16x8, 8x16, 8x4, 4x8这样的块的扫描来说,从长块边缘的方法开始扫描.在下面,这种扫描方法我们叫做Big Scan.
7.编码块模式CBPY
对于亮度块的编码块模式(CBPY)的取值范围来说,它与选定的宏块类型是相关的.对于1-4模式来说,CBPY的大小与用于运动补偿和变换的块的大小相对应.对于更高的宏块模式来说,在TML中提到的CBPY被使用.因为CBPY的统计特性与每个块模式有所不同,所以模式值应该被映射到最终的CBP表的设计中去.对于每个宏块模式的CBPY值在下面标明:
0 0 0 1 0 1 0 --> 1 0 1 0 -- 1
| | | |
1 2 3 2 --> 3 2 3 2 -- 3
16x16 16x8 8x16 8x8 8x4 4x8 4x4
8. VLC
在目前来说还没有完全的VLC设计(针对于2001年的时候而言),在VCEG-L11和VCEG-L16中表明对每个宏块的分隔的编码表是实现ABT的最佳方式.
ABT的出现对于准确的进行运动估计和运动补偿来说的意义很重大,因为分块的方式更加的细致,所以在处理的过程中也更加灵活,同时得到了更佳的效率.这篇文章是在ABT出现早期进行的一个实践性的研究,对于我们对ABT的理解,以及对ABT的实现,还有对于量化表的设计方式都有了一个提高.同时也有一个问题,ABT里面把块分得太过细了,这样在运算的过程中,无疑复杂度加大了很多,那么我们如果就只用3种到期4种基本的块结构可以达到跟ABT差不多的PSNR结果吗?如果差不多的话,是不是意味着ABT的作法也是有些多余呢?至少一部分有些多余呢?有待于进一步的查证.