什么是帧内编码介绍
高效率视频编码(HEVC)中的帧内编码(英语:Intra Coding,又称画面内编码)可以视为高阶视频编码(Advanced Video Coding,H.264/AVC)的扩展,因为他们都是利用空间上的取样预测来编码,而高效率视频编码的帧内编码包含以下基本元素:
基于四元树(Quadtree)编码结构有33种预测方向的角度预测(Angular Prediction)借由平面预测(Planar Prediction)产生平滑的取样面引用取样自适应的平滑性过滤预测区块边界的样本依照预测模式的残量转换(Residual Transform)和系数扫描(Coefficient Scanning)基于前后文信息的帧内模式编码
此外,高效率视频编码中的帧内编码过程与帧间编码共用部分的处理步骤,包含转换(Transformation)、量化(Quantization)、熵编码(Entropy Coding)、降低区块的效应、取样自适应偏移(Sample Adaptive Offset)。
帧内编码架构
高阶视频编码的帧内编码是借由前一个解码视频区块且基于空间上的样本来推断,而高效率视频编码也沿用此准则,但是更进一步扩展至能够有效呈现更大范围的图像材质及结构的信息。高效率视频编码的帧内编码设计基于下列考量:
- 可支持的编码区块大小(Coding block sizes)范围:高阶视频编码只支持到16×16像素,不够有效呈现高阶定义的图像。
方向性结构预测:高阶视频编码支持8种方向的帧内预测模式,当使用更大的区块大小时,此数量不足以精确呈现视频和图像的内容。
同质区域(Homogeneous Regions)预测:高阶视频编码的平面模式用来编码同质的视频区域,但是此种模式不保证区块边界的连续性,因此需要有一种模式可以保证在取样平面的预测为连续性。
跨区块大小的一致性:高阶视频编码根据区块大小使用不同的方法来预测区块。在高效率视频编码支持更大范围的区块大小情况下,需要一个更一致性的设计。
帧内编码的转换:对于每一区块大小,高阶视频编码采用固定的离散余弦转换(Discrete Cosine Transform),这样的设计没有考虑到统计不同水平和垂直方向的预测错误。
帧内模式编码(Intra Mode Coding):高效率视频编码大幅增加编码模式,因此需要更有效率的编码技术。
帧内编码使用的编码结构遵循边高效率视频编码的编解码器架构,图像会由编码树单元分区为数个(或不分区)编码单元、预测单元、转换单元,因为高效率视频编码包含上列提及的数种改善帧内编码的方式,因此可逐渐改变取样值使得不同方向的结构和区域更精准,而且借由引用样本的自适应平滑性和使直流(DC)、垂直、水平模式产生的预测边界样本平滑,可避免分区块编码所造成的边缘效应。
所有预测模式皆使用相同集合的引用样本(Reference Samples),而这些引用样本位于视频区块的左侧及上侧,在此定义引用样本为Rx,y,预测样本(Predicted samples)为Px,y。
位于图片或片(Slice)的边界或是被限制的编码单元边界,附近的引用样本可能无法使用,此时左边界的遗漏引用样本会由最近下面的引用样本产生,若是下边没有引用样本则使用上边的引用样本;相同地,上边界的遗漏引用样本会由最近左边的引用样本产生;若是没有任何引用样本可以使用,则所有样本被指定为比特深度的平均值。高效率视频编支持35种帧内预测模式,包含平面、直流、以及角度,帧内预测模式0为平面帧内预测,模式1为直流预测,模式2至34为角度预测模式。
帧内编码角度帧内预测
角度帧内预测(Angular Intra Prediction)
高效率视频编码的角度帧内预测被设计成可以有效支持多种不同的方向结构,特别是针对视频及图片内容,会选择特定的帧内预测模式数量以及角度是为了在编码复杂度和编码效率中获取平衡,因此样本的预测程序会被设计成匹配低运算量以及维持跨区块大小间及预测方向的一致性,也就是说可以最小化硬件实现上的芯片面积或是软件实践上的代码数量,以及更容易在不同环境下优化成高效率及高处理能力(Throughput)。在高效率视频编码中,共有4种有效的帧内预测区块大小-4×4至32×32,以及33种角度帧内预测模式,因此解码器必须支持132种区块大小和预测方向的组合。
帧内编码角度定义
角度定义(Angle Definitions)
对一般图片而言,垂直和水平的图形发生的频率会比其他方向的图形更高,这33种预测角度是根据观察而定义出最优化精准度的集合,四分圆包含8个预测角度。对于垂直和水平的方向,有着小偏移参数可以提供垂直和水平图形更精确的预测,越靠近对角线,预测方向的偏移系数越大,对于使用频率较小的图形可以有效减少预测模式的密度。
帧内编码引用像素处理
引用像素处理(Reference Pixel Handling)
高效率视频编码的帧内样本预测过程是由重建的引用样本以及固定方向推断,为了简化过程,根据选定的预测模式,在一个预测区块内的所有样本会被投影至单一的引用行或列,预测模式2至17会采用左边的引用行,预测模式18至34则会使用上方引用列。在一些情况下,被投影的像素位于负的座标轴上,此时引用的行或列会借由投影左边引用行至上方引用列或投影上方引用列至左边引用行来扩展,这样的方法只会造成压缩表现一点可被忽略的影响。
帧内编码任意数量方向的样本预测
假设每一预测样本
由引用列投影而来,以及使用差值法得到1/32像素精准度,如下
(1)
为两引用样本
和
的权重,
代表比特向右位移,引用样本索引
和
借由投影位移
、选择的预测方向计算,而投影位移
范围是-32至32,&代表对每比特作按位与(AND)计算。
& 31
(2)
公式
(1)和
(2)定义在预测模式18至34如何获得预测样本值,而在预测模式2至17也是相同的推导方式,只要替换公式中的
和。
帧内编码平面预测
平面预测(Planar Prediction)
当边缘出现时,虽然提供一有效的预测很重要,不是所有的图像内容会匹配边缘模型(Edge Model),因此提供直流预测(DC Prediction)此一替换的模式,此模式致力于保持区块边界的连续性,其值为两线性预测的平均,如下:
帧内编码引用样本平滑滤波
高阶视频编码对于8×8的预测亮度区块采用三阶平滑滤波器(Three-tap Smoothing Filter),而高效率视频编码对于8×8及更大的预测亮度区块也采用相同的滤波器,第一个引用样本R0,2N和R2N,0不被过滤;对于32×32大小的区块,除了垂直和水平的所有角度模式皆使用一个过滤引用;在16×16大小的区块,这些不使用一个过滤引用的模式增加至4个模式(9、11、25、27),包含很接近水平和垂直的模式;此外,平滑滤波也使用在平面模式。根据选择的区块大小及预测方向采用引用样本平滑滤波,可以减少编码造成的边缘轮廓。