HEVC算法和体系结构:预测编码之帧内预测

预测编码之帧内预测(Intra-Picture Prediction)

        预测编码(Prediction Coding)是视频编码的核心技术之一,指利用已编码的一个或几个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码。视频编码器对预测后的残差而不是原始像素值进行变换、量化、熵编码,由此大幅度提高编码效率。

        对于视频信号来说,一帧图像内临近像素之间有着较强的空间相关性,即空域冗余;相邻图像之间也有很强的相关性,即时域冗余。去除空域冗余和时域冗余的技术分别是帧内预测技术和帧间预测技术。

        本博文首先介绍预测编码的原理,其次重点分析帧内预测技术相关知识点。

一、预测编码的原理

        我们可以简单地将视频当做是一种有记忆信源,预测编码通过预测模型消除像素间的相关性,得到的差值信号可以认为是没有相关性的,因此可以作为无记忆信源进行编码。

        在预测编码时,不直接传送图像样值本身,而是对实际样值与它的预测值间的差值进行编码、传送,如果这一差值(预测误差)被量化后再编码,这种预测编码方式叫做差分脉冲编码调制(DPCM)。从统计上看,需要传输的预测误差主要集中在0附近的一个小范围内,由于人眼的“掩蔽效应”,对出现在纹理或运动较复杂区域的较大误差不易察觉,因此,预测误差量化所需要的量化层数要比直接传送图像样值本身减少很多。DPCM就是通过去除临近像素间的相关性和减少差值信号量化层数来实现码率压缩的。

预测差分编码的原理框架如下图所示,在预测编码系统中,预测器和量化器是非常关键的两部分。

        预测编码的基本过程:对于输入像素值x(n),首先利用已编码像素的重建值得到当前像素的预测值p(n),然后对二者的差值e(n)进行量化、熵编码,同时利用量化后的残差e’(n)与预测值p(n)得到当前像素的重建值x’(n),用于预测之后待编码的像素。对应的解码过程为:经熵解码可以得到当前像素预测误差的重建值e’(n),将其与预测值p(n)相加即可得到当前像素的重建值x’(n)。

        为了保证编码器和解码器中预测有完全相同的参考基准,在利用空时域相关性进行预测时,需要用含失真的解码像素x’(n)作为参考像素,从而避免编码器和解码器中因不同预测参考产生误差累积,也就是说,在编码器内部需要内嵌一个解码器。

二、帧内预测技术

        视频序列的时域相关性往往大于空域相关性,所以帧间预测技术的贡献往往大于帧内预测技术,但是这并不意味着可以对所有视频帧都采用帧间预测技术进行预测编码,其原因主要包括:

(1)、几乎所有的视频编码标准都支持I帧,这一帧可以不依赖临近参考帧进行独立解码,这一特点使得视频应用可以支持快进或快退播放,同时还避免了因编码失真累积而导致的图像逐渐恶化以及后续图像运动预测的效果逐渐恶化。

(2)、基于刚体平动的模型并不适用于所有场景,因为实际中的视频序列的运动是非常复杂的,尽管可变大小块分像素运动预测在一定程度上改善这一不足,但是还是有部分宏块或块不能获得很好地运动预测效果,而这些区域空间相关性也许比时域相关性强,采用帧内预测的预测效果往往好于帧间预测效果。研究表明,P帧和B帧中也有少数比例(1%~3%)的宏块实际上采用了帧内预测模式。

1、HEVC与H.264在帧内预测编码时尺寸、预测模式种类的区别

        HEVC帧内预测与H.264类似,都是利用相邻块的重建值进行预测,因此,编码模式的选择与编码是帧内编码需要重点解决的问题。HEVC与H.264在帧内预测上最大的不同在于:HEVC采用了更大更多的尺寸以适应高清视频的内容特征,支持更多种的帧内预测模式以适应更加丰富的纹理。

        H.264一共规定了3种大小的亮度帧内预测块:4*4、8*8和16*16,色度分量的帧内预测块都是基于8*8大小的块进行的。其中,4*4和8*8大小的亮度块包含9种预测模式(垂直、水平、DC、左下对角线模式、右下对角线模式、垂直向右模式、水平向下模式、垂直向左模式和水平向上模式),而16*16大小的亮度块和8*8大小的色度块只有4种预测模式(DC、水平、垂直和Plane)。需要注意的是“4*4和8*8大小的亮度块支持的9种预测模式”与“16*16大小的亮度块和8*8大小的色度块只支持的4种预测模式”二者模式编号顺序是不同的。

        HEVC亮度分量帧内预测支持5种大小的PU(Prediction Unit):4*4、8*8、16*16、32*32、64*64,其中每一种大小的PU都对应35种预测模式,包括Planar模式、DC模式以及33种角度模式,如下图所示。对于色度分量,支持PU的大小为4*4/8*8/16*16/32*32,一共有5种模式,即Planar模式、垂直模式、水平模式、DC模式以及对应亮度分量的预测模式,若对应亮度预测模式为前4种中的一种,则将其替换为角度预测中的模式34。

        总而言之,当预测模式选择为帧内时,对于所有的块尺寸,PB尺寸与CB尺寸相同。对于最小的CB尺寸,存在一个标志,用于表明CB是否被分成4个PB,每个PB均有自己的帧内预测模式,采用这种分割方式的原因是能为4*4大小的块选择帧内预测模式,当亮度的帧内预测模式以4*4大小块进行处理时,色度的帧内预测也采用4*4块。

        所有的预测模式都使用相同的模板,如下图所示。从图中我们可以看出,与H.264相比,HEVC增加使用了左下方块的边界像素作为当前块的参考。这是由于H.264以固定大小的宏块为单元进行编码,在对当前块进行帧内预测时,其左下边方块很有可能尚未进行编码,无法用于参考,而HEVC的四叉树编码结构使得这一区域成为可用像素。

2、帧内预测过程

        在HEVC中,35种预测模式是在PU的基础上定义的,而具体帧内预测过程的实现则是以TU为单位的。HEVC规定PU可以以四叉树的形式划分TU,且一个PU内的所有TU共享同一种预测模式。

        HEVC的帧内预测过程可分为以下三个步骤:

(1)、相邻参考像素的获取

        如下图所示,当前TU的大小为N*N,其参考像素按区域可分成5部分,左下、左侧、左上、上方和右上,一共4*N+1个点,若当前TU位于图像边界或Slice、Tile边界,则相邻参考像素可能会不存在或不可用,并且在某些情况下,左下或右上所在的块可能尚未编码,此时这些参考像素也是不可用的。当像素不存在或不可用时,HEVC规定了可以使用最邻近的像素进行填补,例如左下的参考像素不存在,则左下区域的所有参考像素可使用左侧区域最下方的像素进行填补,若右上区域的参考像素不存在,则可以使用上方区域最右侧的像素进行填补(如下图中右侧示例)。需要说明的是,若所有参考像素都不可用,则参考像素都用固定值填充,对于8比特像素,该预测值为128,对于10比特像素,则该预测值为512。

(2)、参考像素的滤波

        H.264在帧内预测时对某些模式下的参考像素进行了滤波,以便更好地利用临近像素之间的相关性,提高预测精度。HEVC沿用这一方法并进行了拓展:一是针对不同大小的TU选择了不同数量的模式进行滤波;二是增加使用了一种强滤波方法。

(3)、预测像素的计算

        预测像素的计算就是针对不同的预测模式采用不同的计算方式得到预测像素值。

时间: 2024-10-02 13:41:11

HEVC算法和体系结构:预测编码之帧内预测的相关文章

HEVC算法和体系结构:预测编码之帧间预测

预测编码之帧间预测(Inter-Picture Prediction)           帧间预测是指利用视频时间域相关性,使用临近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的.由于视频序列通常包括较强的时域相关性,因此预测残差值接近于0,将残差信号作为后续模块的输入进行变换.量化.扫描及熵编码,可实现对视频信号的高效压缩.   一.帧间预测编码原理           目前主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术,如下图所示,其基本原理为:当前图像的每

HEVC算法和体系结构:编码框架

编码框架 2013年4月13日HEVC/H.265被ITU-T正式接受为国际标准.类似以往的国际标准,HEVC仍旧采用"预测+变换"的混合编码框架,如下图所示,包括变换.量化.熵编码.帧内预测.帧间预测以及环路滤波等模块.在HEVC中,几乎每个模块都引入了新的编码技术. 本博文主要介绍HEVC编码框架,从整体结构出发介绍HEVC各个模块的大致功能以及相应的特色编码技术. HEVC的编码框架主要包括变换.量化.熵编码.帧内预测.帧间预测以及环路滤波等模块.下面依次对各个模块做简单介绍.

HEVC算法和体系结构:编码结构之编码时的分层处理架构

编码结构之编码时的分层处理架构         本博文主要介绍HEVC编码结构中的"编码时的分层处理架构".HEVC编码结构的主要目的就是为了各种应用下操作的灵活性以及数据损失的鲁棒性(所谓"鲁棒性",是指控制系统在一定的参数摄动下,维持其它某些性能的特性).从GOP(Group of Pictures)至Slice,从Slice至SS(Slice Segment),从SS至CTU(Coding Tree Unit),从CTU至CU(Coding Unit)的过程就

HEVC算法和体系结构:环路滤波技术

环路滤波(In-Loop Filtering)技术 类似于以往的视频编码标准,HEVC仍采用基于块的混合编码框架,一些失真效应仍然存在,如方块效应.振铃效应.颜色偏差以及图像模糊等等.为了解决这些问题,HEVC中采用了环路滤波技术,它其实是一种用于解码端的后处理滤波技术,主要包括去块滤波(Deblocking Filter,DBF)和样点自适应补偿(Sample Adaptive Offset,SAO).其中,DBF的作用与H.264类似,主要是去除块效应,但是相比于H.264,其决策与滤波过程

hevc帧内预测模式-如何对HEVC帧内预测中的4x4pu预测模式进行修改?

问题描述 如何对HEVC帧内预测中的4x4pu预测模式进行修改? 5C 各位好:请教一个问题,在HEVC的帧内预测过程中,我想要只修改4x4pu的预测模式,其它的CU尺寸(32x32...8x8)不改动,比如其uiBestMode=25,将其改成26,但是后来发现,这样做的话直接会影响原本的LCU的分割和其他尺寸的预测模式,这应该是因为在帧内预测过程中对于一个LCU是递归地经过预测和熵编码来通过其率失真代价确定分割和其预测模式的,不知道我这样理解对不对,应该对于4x4块怎么做?

HEVC算法和体系结构:HEVC概括性介绍

1.HEVC高级语法:提供了一个稳健.灵活和可扩展的框架,用于携带编码的视频及其相关信息,确保在不同的应用环境中,视频内容都能够以最有效的方式传输. 2.HEVC块结构和并行特性:确保了HEVC编码设计的基本结构. 3.HEVC帧内预测:在之前的编码标准中已经取得实质性的技术进步,即使是静态场景. 4.HEVC帧间预测:视频编码的核心问题,高效的帧间预测对HEVC的强大性和灵活性起着决定性的作用. 5.HEVC变换和量化:HEVC拥有更加灵活和自适应地变换和量化设计. 6.HEVC环内滤波器:包

【HEVC学习与研究】36、对帧内预测参考数据进行滤波处理

在帧内预测的过程中,获取临近的Prediction Unit的边缘数据作为当前PU的参考数据.数据获取完成后,并不一定会直接使用这些数据进行预测,而可能会先将这些预测数据进行一次滤波操作.帧内参考像素的滤波在标准文档的8.4.4.2.3节详述. 帧内参考像素的滤波使能标记由一个标志位filterFlag标识.该标志位的判定方法为: 1.如果当前预测模式为DC模式,或者帧内预测的PU为4×4大小时,filterFlag一律为0: 2.计算当前的Intra预测模式同"水平"和"垂

【HEVC学习与研究】35、帧内预测参考数据的获取和滤波处理

帧内预测的参考像素值的获取在标准文档的8.4.4.2.2中指明. 举例说明,当前demo中,我们用来单步调试的第一个CU为64×64像素大小,那么参考像素由两部分组成,一部分包含2×64+1=129个,另一部分包含2×64=128个像素.这两部分分别作为垂直和水平方向上的预测数据.在编码的过程中,根据预测数据是否可得,共分为两种情况: 第一种:所有的预测数据都不可得.最直观的情况就是一帧数据中的第一个CU,该CU左侧和上方的数据都不存在,如下图所示.此时所有的预测数据都会制定一个默认值,计算方法

HEVC算法和体系结构:资源获取和章节安排

从今天开始,将陆续更新自己学习总结的最新版HEVC著作<High Efficiency Video Coding (Hevc): Algorithms and Architectures>中的相关知识点,原书英文电子版需要的可在下面评论留言. 本书封面如下: 章节安排如下:1~9章主要讲述HEVC的算法和工具,10和11两章主要主要讲述构建HEVC硬件的体系结构.