01年VCEG-L15---ABT的编码方式要点 - Jason's home

来源:百度文库 编辑:神马文学网 时间:2024/06/13 03:54:28
01年VCEG-L15---ABT的编码方式要点

回顾原来的working documents总会得到些不了解的东西,就翻到哪儿写哪儿了.
这篇是关于ABT编码的.
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的作法也是有些多余呢?至少一部分有些多余呢?有待于进一步的查证.