角度帧内预测

2024-10-19

角度帧内预测(共3篇)

角度帧内预测 篇1

当前最广泛使用的视频编码技术是块基混合运动补偿DCT变换视频编码技术[1]。在这种视频编码框架中,输入图像首先被分割成16×16的块(宏块),然后宏块被按顺序依次编码。当前编码块可以参考当前帧已编码块和从前已编码帧中的块作为当前块的预测,进而减小残差,提高编码效率。仅使用当前帧已编码块作为参考的帧叫帧内编码帧;不仅使用当前帧的已编码块,而且使用从前已编码帧作为当前块预测的帧叫帧间编码帧。在混合视频编码中,当前最流行的帧内编码算法是帧内方向预测技术。在这种方法中,当前编码块的预测从其左边相邻一列像素及其上边相邻一行像素依据一定方向求出。方向信息被编入码流以至于解码器能根据这个方向信息执行和编码端中相同的帧内方向预测。本文提出一种新的根据任意一个方向,从当前块的左相邻列和上相邻行产生当前编码块的预测块的算法。

1 技术背景

帧内方向预测是一种高效的帧内编码方法。与各种基于小波变换[2]的算法相比,帧内方向预测能提供相同或更好的性能。然而,帧内编码的性能仍然不令人满意。在有些情况下,一个GOP甚至一半的码率由帧内编码帧占用。为了继续增进其性能,学者们提出了许多种算法。文献[3]中引入了帧内块运动补偿,对于当前编码块,在当前帧的已重构图像中搜索一个最匹配当前块的块,然后把相应的运动向量编入码流。这个方法能提供不错的编码性能,但是其编码端复杂度非常高。文献[4]中引入了模板基的帧内预测,这个算法也使用了帧内运动补偿,但其运动向量由当前块左上相邻块运动估计得到,这样节省了运动向量的码率,但编解码端都需要进行运动估计,复杂度极高,且模版的模式并不能准确反映当前块的模式,其补偿效率比文献[1]提及的预测方法低。文献[5]中引入了加权帧内预测,通过将两个不同方向的帧内预测型号的加权和作为一个新的预测,而残差则使用方向变换来编码,此算法很大地提高了帧内预测的性能,但方向变换比较复杂。文献[6]中引入了行基帧内预测,通过对当前编码块的每一行引入一个预测方向,这种算法能极大提高预测的效率,但是损失了大变换的效率。

在当前正在制定的国际标准HEVC中,为了提高帧内预测的效率,帧内预测的方向最多被扩展到34种,并以一种名叫角度帧内预测(ADI)的方法[7]来产生任意方向的帧内预测信号。ADI有行基和列基的两种模式,其预测方向由当前块的最后一行或最右一列相对于当前块的上面一行或左边一列的偏移来定义。对于当前编码块中的每一行(列),首先根据当前方向计算出其相对于当前块上面一行(左边一列)的位移,其值由双线性插值求出。

本文提出一种新的任意方向的帧内预测信号计算方法,它能提供与ADI相当或略优的性能。

2 任意方向帧内预测算法描述

如图1所示,最左一列的灰色像素为列重构像素L[x](x为大于等于-1的整数),最上一行的灰色像素为行重构像素T[x](x为大于等于-1的整数)。8×8白色像素块是当前编码块,当前编码块的预测信号将由重构像素依据预定的方向计算得到。预测方向A和预测方向B的预测角分别为γβ。对于当前编码块中的任意一个像素(x,y),x,y∈[0,7],可以根据预测角求得其同一个方向上的列重构像素或行重构像素的坐标。以预测方向A为例,与像素(x,y)在同一个预测方向上的列重构像素的坐标yonxeq0=y-(x+1)×tan(γ),行重构像素的坐标xonyeq0=x-(y+1)tan(γ)。由于坐标可以是小数,其值由双线性插值得出。在实际实现中,对于任意一个预测角γ,求得整数xscl=|256×tan(γ)+0.5|yscl=|256tan(γ)+0.5|,作为常量预先存储在内存中。当根据预测角γ计算当前编码块的预测块P[x,y]时,坐标的小数中取4位精度作为双线性插值的系数(下式中w0)。

当前像素的列重构像素预测PL[x,y]计算如下

yoff=(x+1)×xscl>>4 (1)

w0=yoff&15 (2)

w1=16-w0 (3)

ycrd=y-(yoff>>4)-1 (4)

PL[x,y]=(wL[ycrd]+wL[ycrd+1]+

8)>>4 (5)

式中:对于PL[x,y]中的任意一列,其w0和w1是相同的,而ycrd则依次相差1,这使得该算法非常适合并行计算。

行重构像素预测PT[x,y]计算如下

xoff=(y+1)×yscl>>4 (6)

w0=xoff&15 (7)

w1=16-w0 (8)

xcrd=x-(xoff>>4)-1 (9)

PT[x,y]=(wT[xcrd]+wT[xcrd+1]+

8)>>4 (10)

式中:对于PT[x,y]中的任意一行,其w0和w1是相同的,而xcrd则依次相差1,这使得该算法非常适合并行计算。

由于xcrdycrd不能小于-1或大于等于当前块尺寸的2倍,所以当预测角γ∈(0,90)时,由于0<min{yscl,xscl}≤256,所以必有-1≤max{xcrd,ycrd}≤blksize-1,其中blksize是当前块尺寸。所以约定当预测角γ∈(0,90)时,如果ycrdxcrd时,取P[x,y]=PL[x,y],否则P[x,y]=PT[x,y]。当预测角γ∈(90,135)时,ysclxscl为负数且|xscl|>256,|yscl|<256。此时ycrdxcrd都大于0,但ycrd可能会大于当前块尺寸的2倍,而xcrd总在合法范围内。当ycrd大于当前块尺寸的2倍时,PL[x,y]会变得不精确,故此时约定P[x,y]=PT[x,y]。同理,当预测角γ∈(135,180)时,约定P[x,y]=PL[x,y]。

3 任意方向帧内预测算法性能分析

该算法选用AVS参考软件MM 1.0作为编码实验平台。由于AVS已有5个方向预测模式,其中1个是DC模式,其余都是方向预测模式,其预测角分别为0°,45°,90°和135°。分别采用ADI算法和该算法,在(0,45)之间、(45,90)之间、(90,135)之间和(135,180)之间各插入7个新的预测方向,所以共有33个预测模式。所有符号全部采用算术编码器进行编码。为了公平比较,所有预测模式的编码全部采用类似于H.264的形式,即以左相邻块和上相邻块的帧内预测模式之间的最小值作为预测,编码一个符号来判断当前模式是否为此预测模式,若否,则用一个定长码来编码当前模式。在AVS中,由于只有5个模式,除去1个预测模式仅剩4个,所以将其二进制化为2位定长码进行算术编码。而ADI模式和该算法共有33个模式,除去一个预测模式外还有32个,所以二进制化为5位定长码进行算术编码。编码实验选用的5个1 080 p测试序列是basketballDrive,BQTerrace,Cactus,Kimono1和ParkScene,仅前10帧被编码,4个QP分别选为30,35,40和45。编码结果如图2所示,其中ACUANG为该算法,ADI33是ADI算法,AVS是AVS算法。由图2可见该算法和ADI具有非常类似的编码性能,两者都优于AVS的帧内预测算法。该算法和ADI算法相比于AVS的BD码率结果[8]如表1所示,其中ACUANG是该算法,ADI33是ADI算法。由表1可以看出,该算法和ADI算法相比于AVS的帧内预测算法都有显著的码率节省,其中该算法相比ADI33算法可以平均节省码率0.24%。

4 结束语

本文提出一种新的任意方向帧内预测算法,该算法与ADI算法相比,能提供相同或稍好的性能。

摘要:提出一种新的任意方向帧内预测算法。对于任意一个预测角度,首先求出其余切与正切值。然后对于当前编码块内任意一个像素,求出与其在同一个方向上的当前块左边一列和上边一行上像素的坐标,从而求出当前像素的左边一列预测值和上面一行的预测值。两者中与当前像素距离较近的预测值就是当前像素的最终预测值。实验结果表明该算法与角度帧内预测(ADI)相比具有相同或略优的性能。

关键词:帧内预测,任意方向,角度帧内预测

参考文献

[1]梁夫彧,李娟,门爱东.现代视频编码关键技术及其发展[J].电力系统通信,2006,161(3):1-4.

[2]林福宗.小波与小波变换[EB/OL].[2011-07-20].http://wenku.baidu.com/view/f65e562acfc789eb172dc85a.html.

[3]YU S L,CHRYSAFIS C.JVT-C151,New intra prediction using intra-macroblock motion compensation[R].[S.l.]:JCT,2002.

[4]TAN T K,BOON C S,SUZUKI Y.Intra prediction by template matching[C]//Proc.ICIP 2006.[S.l.]:IEEE Press,2006:1693-1696.

[5]YE Y,KARCZEWICZ M.Improved H.264 intra coding based on bidi-rectional intra prediction,directional transform,and adaptive coefficientscanning[C]//Proc.ICIP 2008.[S.l.]:IEEE Press,2008:2116-2119.

[6]PENG X L,XU J Z,WU F.Line-based Image Coding using AdaptivePrediction Filters[C]//Proc.ISCAS 2010.[S.l.]:IEEE Press,2010:4221-4224.

[7]UGUR K,ANDERSSON K,FULDSETH A.JCTVC-A119 description ofvideo coding technology proposal by Tandberg,Nokia,Ericsson[R].[S.l.]:JCT-VC,2010.

[8]BJONTEGAARD G.VCEG-M3 calculation of average PSNR differencesbetween RD curves[R].[S.l.]:ITU-T,2001.

角度帧内预测 篇2

听完后,我有很大的感触。仆人算不上聪明,不过换了一个角度思考问题。正是因为这位仆人换了一个角度思考,才省去了那么多的牛皮。不然,恐怕杀光那个王国里所有的牛也找不到那么多的牛皮啊。

换一个角度,多一份快乐。凡事都是有两面性的,如果只想坏的那一面,这一生岂不被悲惨笼罩?换一个角度,想一想它的好处,就会多一份安慰,多一份好心情,多一份快乐。

换一个角度,多一份理解。人与人在相处时,不免要发生许多摩擦,生出许多口角,而这,常常会使两个人发生僵持,破坏人与人之间的感情。在发生冲突时,不要一味的只想着他的不好,换一个角度,站在他的立场上思考问题,或许会发现他的难处,从而理解对方,化解矛盾。

换一个角度,多一份警惕。当我们遇到倒霉的事情时,我们要换一个角度想它的好处;当我们遇到好事情的时侯,也要换一个角度思考。诚然只想着好的一面,对事物的认识是片面的。遇到一件好事要想一想它为我们带来怎样的负面影响,事先做好准备,解决它或绕过它,以免被它误伤。

快速AVS帧内预测算法 篇3

AVS作为我国第一个具有自主知识产权并达到国际先进水平的数字音视频编解码标准, 全称为《信息技术先进音视频编码》[1,2]。AVS采用包括ICT变换、量化、帧间预测编码、帧内预测编码、熵编码、环路滤波等核心模块的混合编码。相比于MPEG-2标准, AVS编码效率提高了2~3倍, 在编码高清视频信号时, 获得与先进视频编码标准AVC/H.264主要档次 (MP, Main Profile) 相当的编码效率, 但算法复杂度只有60%~70%, 实现了算法复杂度和编码效率的折衷。

AVS采用基于时间和空间的预测编码、变换编码和熵编码的混合编码结构。统计AVS各部分的编码时间, 约35%的编码时间消耗在帧内预测上。在帧内预测编码方面, AVS比H.264的预测流程更加简洁, 采用更少的预测模式, 实现复杂度也大幅度降低。但参考软件在PC平台广播档次下, 编码I帧平均要用1.5秒, P帧要3.5秒, B帧更多, 编码效率相对较低。通过分析AVS的编码原理及流程, 提出一种快速帧内预测算法, 该算法先判定全零系数块, 并联合时域SAD与频域SATD, 过滤掉不可能的预测模式, 进而提高AVS编码效率。

1 零系数块

1.1 零系数块的统计

视频编码中实际数据与预测数据之差称为残差数据, AVS编码以宏块为基本单元, 大小为16×16, 一个亮度子块由4个8×8块组成, 8×8块以下简称子块。由文献[3]定义零系数块ZB (Zero Block, 简称零块) 即子块的残差数据都为零, 在AVS参考软件GDM2.0中, 选取最优预测模式BPM (Best Prediction Mode) 是在帧内预测编码的最后阶段才进行元素cbp编码, 前面进行了一系列复杂操作, 这部分很消耗时间, 如果当前子块是零系数块, 把当前宏块cbp元素的编码放在帧内编码的最后会大大影响编码效率。

为统计零系数块的比例, 分别对football, bus, highway, mobile的CIF序列测试统计, 统计结果如表1所示, 测试条件如下:Pentium4200, 2G内存, Enable Hadamard, Enable RD optimization, Off Rate Control, Enable FME, 30 Frames, Frame Style IPPP, GOP=8。

从表1中可以看出, 零系数块在宏块中所占的比例很高, 且随着QP的增加而增加。若是能提前判定当前子块为零系数块, 进而直接编码宏块的cbp元素而避免后续复杂的编码操作, 这样能很大幅度提高编码效率。

1.2 零系数块的推导

为减少相邻像素间空间相关性, AVS采用8×8预缩放整数变换ICT (Pre-scaled Integer Cosine Transform) , 源于离散余弦变换DCT (Discrete Cosine Transform) , 是定点余弦变换的扩展, 旨在保持相当的压缩性能的同时降低计算复杂度以及避免DCT变换导致的编解码失配问题。AVS中ICT变换过程:

其中矩阵X为残差数据 (具体见第三部分) , A为AVS的ICT变换矩阵, AT为变换矩阵A转置矩阵。AVS参考软件中, 残差数据Xij经过ICT变换及尺度缩放如式 (2) :

残差变换系数量化过程如下:

其中Fq为残差X变换量化后的值, Scale M是一个以位置参数i, j为索引的二维表, Q_TAB=f (QP) , 是以量化步长QP为索引的一维常数表, 与QP值成递减关系, qp_cost为预测编码常数, 对于帧内编码qp_cost为 (1<<15) ×10/31, 对于帧间编码qp_cost为 (1<<15) ×10/62。将式 (2) 代入式 (3) , 得到如式 (4) :

式中由绝对值不等式的性质可对式 (4) 中的表达式作进一步推导:

式中, 将其代入式 (5) , 进而得到式 (6) :

由函数极限可知, 如果F (u, v) 小于1, 量化值为0, 此时得到的阈值可作为零系数块判定的充分条件, 即当表达式 (6) 和Scale M[i][j]取最大值时, 并将其代入式 (2) , 得到判定当前子块为零系数块的阈值。其中SAD值已经求出, 判定零系数块并没有增加复杂运算, 在算法的代码实现时, 做成以QP为索引的一维常量阈值数据表, 判定零系数块时只需查表即可查到阈值, 降低系统开销, 例如当QP为24时,

2 快速帧内预测

2.1 AVS帧内预测

AVS沿袭H.264帧内预测编码思路, 用相邻块的像素预测当前块的像素, 有n种代表空间纹理方向的预测模式, 但在相当的编码质量的情况下, AVS的帧内预测模式更少, 预测以子块为最小单位, 亮度有5种预测模式, 色度有3种, 以下预测皆以亮度预测分析。由文献[4-7]知, AVS的帧内预测过程有两种方案:一是使用SAD进行预测, 选取各模式下最小SAD值对应的预测模式为最佳预测模式;二是使用率失真代价函数RDO (Rate Distortion Optimization) 值[7], 选取值最小者相应的预测模式为最佳预测模式。

采用全搜索遍历各种预测模式计算比较率失真代价函数值J (m) , 计算过程如式 (7) 所示:

其中i, j为子块中像素所在的行、列号, D (m) 为源数据与重建数据之差的平方和, 计算如式 (8) , 微观上反映帧内预测的准确度。λ是拉格朗日系数, 与量化步长QP有关, 计算如式 (9) ;R (m) 为编码比特流数, 包括编码最佳预测模式、当前子块的位置参数、类型以及亮度系数所用的比特数, 计算如式 (10) :

式 (8) 中的Cij为重建数据, 计算如式 (11) 。残差数据经过ICT变换、尺度变换、量化, 得到量化后的变换系数, 量化后的变换系数经过反量化、ICT逆变换, 得到重建数据, 即由残差数据到重建数据要历经“T变换->Q量化->Q-1反量化->T-1反变换”过程。

最佳预测模式是遍历5种预测模式计算其J (m) , 选出最小者相应的预测模式为最佳预测模式。可以看出全搜索算法过程复杂, 计算量大。其中NQ (m) 是编码DCT变换系数的比特, NI (m) 是编码当前块帧内预测模式的比特数。

2.2 快速帧内预测FMD算法

由帕塞伐尔 (Parseval) 定理可知, 时域中对序列求能量与频域中求能量是一致的。由文献[7]可知SAD反映残差时域差异, SATD反映残差频域差异, 它们的计算仅用加减法及移位操作, 单独采用SAD或SATD进行预测方法相对简单, 但预测准确度不高。好的帧内预测模式应该SAD和SATD同时小, 据此可以联合时域与频域残差数据选取最优预测模式。

SAD为当前子块实际像素值与预测像素值之差的绝对值, 反映的是时域下的预测精度, 求取公式如下:

其中bk代表当前宏块的第k (1≤k≤4) 个子块, P (x, y) 代表预测像素值。

SATD为将残差经Hadamard变换的8×8子块的预测残差绝对值总和, 简单的时频变换, 求取公式如下:

其中D (x, y) 是第bk个子块的残差数据, 残差数据可由式获得, Hadamard变换只需加减与移位运算, SATD运算简单便于实现。

分别按式 (12) 和式 (13) 求取当前子块在各种预测模式下的SAD和SATD, 按大小排序, 将5种预测模式的结果存放在5×5的窗口内, 每列与每列仅有一种预测模式, 图中SATD与SAD值随着箭头方向递增。图1中的 (a) 、 (b) 和 (c) 所列出是各种情况下的排序, 从中可以看出必有一种预测模式落在3×3种框中, (a) 中有1种预测模式落入3×3框内, (b) 和 (c) 中分别为2种和3种。SAD与SATD联合判定, 排除不可能的预测模式, 至少排除2~4种预测模式, 即排除40%~80%的预测模式, 剩余的预测模式用率失真代价函数选取最优预测模式。

2.3 快速帧内预测流程

结合第一部分零系数块以及第二部分快速FMD算法, 以亮度的预测模式的为例, 得到如下快速帧内预测算法的流程:

1) 计算当前宏块中的8×8子块的SAD值, 并根据第二部分的零块的阈值判断阈值ThSAD相关, 低于阈值的则为零系数块, 直接编码元素cbp, 无需进行下面的预测判定流程。

2) 求取当前宏块中的子块在种预测模式下的SAD及其SATD值, 并分别将其从小到大排序, 将所得结果放入图1所示的矩形方块内。

3) 选取左上角3×3矩形内的预测模式, 得到1到3种预测模式, 若为1种则直接作为最佳预测模式, 否则求取所得到的预测模式的RDO值J (m) , 如式 (7) 所示, 取得J (m) 最小值对应的预测模式为最佳预测模式。

3 实验结果

为验证本文提出的算法, 结合快帧内预测和零系数块部分改进算法对AVS编码时间进行测试, 测试条件:GDM2.1参考软件, 测试机Pentium4200, 2 G内存, Enable Hadamard, Enable RD optimization, Off Rate Control, Enable FME, 30 Frames, Frame Style IPPP, GOP=8。分别选取量化步长QP=25, 30, 35, 40, Bitrate 768000bps, 相应算法改进前后测试序列的PSNR、Time、Bitrate如表2所示。

从表2中可以看出, 采用快速帧内预测选择算法后, 在PSNR降低0.25 db和码率增加2%之内, AVS编码效率明显提高了, 时间减少了40%以上。

4 结语

提出一种快速AVS帧内预测编码算法, 首先对当前块进行零系数块判定, 再根据结果, 进行结合SAD与SATD的FMD算法, 排除了40%~80%不可能的预测模式, 提高了编码效率。

摘要:针对AVS (Audio Video code Standard) 帧内预测中选择最优编码模式流程复杂的问题, 提出一种快速帧内预测编码的算法。通过分析AVS帧内预测编码的原理及其在参考软件GDM2.1中的代码实现, 推导出判定零系数块的阈值。该快速算法根据零系数块的判定阈值条件判定当前块, 对于零系数块, 直接编码cbp元素, 提前中止帧内预测编码, 避免了后续的复杂流程;对于非零系数块, 采用时域SAD (Sum of Absolute Difference) 与频域SATD (Sum of Absolute Transformed Difference) 相联合的快速选择算法, 排除了40%80%的不可能预测模式, 对余下的模式采用率失真代价函数的方法选取最佳预测模式。经实验验证, 在PSNR (Peak Signal to Noise Ratio) 降低0.25 db和码率增加2%之内, AVS编码时间减少了40%以上, 大幅度提高了编码效率。

关键词:AVS,帧内预测,零系数块,SAD,SATD

参考文献

[1]数字音视频编解码技术标准工作.AVS技术创新报告 (2002-2010) [M].北京:北京人民邮电出版社, 2011.

[2]GB/T 20090.2—201X信息技术先进音视频编码第2部分:视频[S].2011.

[3]Lee Y, Lin Y.Zero-block mode decision algorithm for H.264/AVC[J].IEEE Trans.Image Process, 2009, 18 (3) :524-533.

[4]Dae Yeon Kim, Yung Lyul Lee.A fast intra prediction mode decision using DCT and quantization for H.264/AVC[J].Signal Processing:Image Communication, 2011 (26) :455-465.

[5]Changsung Kima, Hsuan Huei Shihb, C C Jay Kuo.Fast H.264 Intraprediction mode selection using joint spatial and transform domain features[J].J Vis Commun.Image R, 2006 (7) :291-310.

[6]汪育春, 曾毓敏, 朱力.H.264帧内预测模式选择快速算法的研究[J].计算机应用与软件, 2011.28 (12) :115-118.

上一篇:产业技术工人下一篇:创造扁平的世界论文