HEVC英文缩写及部分概念整理(1)--博主整理

来源:互联网 发布:网络英语热词如low 编辑:程序博客网 时间:2024/06/14 06:13

有这个想法一方面是确实很多时候会记不得一些缩写是什么意思。另外也是受
http://blog.csdn.net/lin453701006/article/details/52797415这篇博客的启发,本文主要用于自己记忆
内容主要整理自http://blog.sina.com.cn/s/blog_520811730101hmj9.html
http://blog.csdn.net/feixiaku/article/details/17886779
想看详细的可以跳转
ISO/IEC Moving Picture Experts Group(MPEG)
树形编码单元(coding tree units,CTUs)其又可以分为亮度和色度的
树形编码块(coding tree blocks,CTBs)
预测单元(prediction units,PUs)
变换单元(transform units,TUs)
并行处理工具:
波前编码(Wavefront parallel processing ,WPP)
熵编码
上下文自适应的二进制算数编码(CABAC)
帧内预测
HEVC指定了33种帧内预测方向模式,而H.264仅有8种。同时,HEVC也指定了DC和平面模式
环路滤波器
HEVC指定了两种环路滤波器,即去块滤波器(deblocking filter,DBF)和采样自适应偏移滤波器(sample adaptive offset,SAO),均在帧间预测环路中进行。去块滤波器:HEVC中的去块滤波器与H.264中的DBF类似,但是设计更简单,对并行设计支持更好。HEVC只采用8*8结构,而H.264采用4*4结构。HEVC的DBF滤波强度范围为0~2三级,要求先对垂直边缘进行水平滤波,然后再对水平边缘进行垂直滤波。
采样自适应偏移滤波器:SAO用于DBF之后,使用传输的查阅表进行更好地原始信号重建。对于每个CTB,SAO可以使用/禁用一种或者两种模式:边缘偏移模式或带偏移模式。边缘偏移模式将采样像素值利用四种方向梯度模式与8个边缘像素中的两个比较,并对像素进行分类:minimum,两种edges, maximum,或者neither。对于前四种模式,滤波器进行偏移操作。带偏移模式采用的偏移量基于某个单一采样值的幅度,依据该幅度分为32个不同的band。四个连续的band指定一个偏移量。SAO旨在提高图像的质量,减少带状干扰和边缘震荡效应。
HEVC的档次
2013年1月的HEVC草案定义了三种档次:Main,Main 10和main静态图像档次。
随机接入和比特流条带特征
H.264采用可包含独立解码图像的IDR接入单元实现随机接入。
HEVC中的新结构:clean random access (CRA)。支持开放GOP操作。基本概念:random access skipped leading (RASL) pictures,因为包含帧间信息而不能解码的图像;broken link access (BLA) pictures:位于不同比特流连接点的图像;random access decodable leading (RADL) picture:在随机接入点后,可以按顺序解码的图像。随机接入点的图像可能是IDR/CRA/BLA的图像。leading pictures (LPs):RASL和RADL的总称。trailing pictures:随机接入点后按解码和输出顺序的图像。
关于IDR。这个词儿的全称是Instantaneous Decoding Refresh,是在H.264中定义的结构。在H.264中,IDR帧一定是I帧,而且一定是GOP的开始,也是H.264 GOP的关键帧。但是反过来却不成立,在H.264的编码器中,如果判定场景发生变化,那么即使不到原定GOP的末尾,也会在这个位置加入一个IDR,作为新一个GOP的开始。此时这个GOP的长度就被缩小了。
闭合GOP和开放GOP(closed GOP/open GOP),CRA。闭合GOP是H.264中GOP的格式。在H.264的GOP中,所有的GOP都是独立解码的,与其他GOP无关,即它们都是“封闭”的。但是在HEVC中,GOP的结构发生了变化,采用了“开放”的结构,在解码过程过可能会参考其他GOP的数据。这时,一个GOP的起始帧命名为CRA,clean random access,同样采用帧内编码,但是这个GOP内的帧间编码帧可以越过CRA参考前一个GOP的数据,这便是GOP的open。
关于BLA。个人感觉BLA只是CRA在视频流切换情况下的一种特例。视频流在某个RAP上要求切换到另一个视频流继续解码,则直接将该CRA同另一个视频流中的接入CRA连接,后者便是BLA。由于BLA之前解码到缓存的视频流与当前视频流无关,因此其特性类似于直接从该点进行随机存取后的CRA。
(5)RASL和RADL。这是两种GOP间的图像类型。如果解码器从某个CRA随机接入,则按照显示顺序的后面几帧数据由于缺少参考帧而不能解码,这些图像将被解码器抛弃,即skip leading。而对于没有从当前CRA接入的数据,这些图像可以被正常解码显示,因此称为decodable leading。由于这些数据是有可能舍弃的,因此其他图像(trailing pictures)不能参考这些数据,否则万一这些图像被舍弃,将会有更多的图像受其影响而不能正常解码。
时间域分层
在NAL单元头中指定时间识别,表示在分层时间预测中的层次。可以在除了NAL头之外不解析比特流的情况下做到时间可分级。
时间子层接入点temporal sublayer access (TSA);步进式时间子层接入点stepwise TSA (STSA)——比特流中可以由此开始解码更高时域层的位置。
编码后的视频码流分割为NAL单元在有损网络环境中进行传输,每个单元的长度应小于指定最大长度MTU。每一个NAL单元由NAL头和NAL有效载荷组成。不同的NAL单元分为VCL NAL和非VCL NAL单元,前者携带编码过的图像数据,后者包含多帧共享的元数据。NAL的头采用固定的结构。
H.264的NAL头为1个字节长度,在其可分级和多视点扩展(SVC和MVC)中扩展为3个字节长度。在HEVC中,NAL头数据指定为2个字节长度,并支持可分级和3D等等多种扩展。HEVC的NAL头包含一个必须为0的forbidden−zero位,6位的NALType位,6个保留位为0, 还有3bit的temporal−id−plus1(用于支持时间可分级)。

参考图像集合和参考图像表
图序计数(picture order count,POC)用以标识解码完成作为参考的图像。这些图像组成参考图像集(reference picture set,RPS)。解码图像缓存中保存两个参考图像表list 0和list 1,,单向预测时,选取二者之一作为参考,双向预测时,两个list中各选择一个作为参考。
在H.264/AVC中,当前帧解码完成后,进行参考帧标记和DPB操作(从缓存中输出和移出图像);在HEVC中,首先从当前帧的slice头中解码出RPS,并在解码当前帧之前进行参考帧标记和DPB操作。每一个slice均需标明DPB状态(”短期参考/长期参考/非参考”)。其目的在于增强容错鲁棒性。
B14这一帧包含了上述5个不同的RPS子集的元素:
P8:属于RefPicSetStCurrBefore——该帧在B14之前,且用作B14的参考帧;
P12:属于RefPicSetStCurrAfter——该帧在B14解码顺序之后,且用作B14的参考帧;(不是很懂)
P13:属于RefPicSetStFoll——短线参考帧,不用于当前帧的参考,可用于后续图像(B15)的参考;
P4:属于RefPicSetLtCurr——长线参考帧,用于B14的参考;
I0:属于RefPicSetLtFoll——长线参考帧,不能用于B14的参考,可用于后续图像(B15)的参考;
G. 图像标记
在解析slice头时,图像标记过程在解码slice数据之前进行,DPB中被标记为“used for reference”但未被包含在RPS中的图像被标记为“unused for reference”。如果图像的used−by−curr−pic−X−flag为0,且被包含在RPS中但是DPB中不存在,则该帧被忽略,但是若used−by−curr−pic−X−flag为1,则意味着该帧本应该用于参考但是发生了丢失,这种情况由解码器处理。
当前帧解码完成后,该帧被标记为“用于短线参考”。
HEVC采用了参考帧集(RPS)的技术来管理已解码的帧,用作后续图像的参考。与之前的视频编码标准中参考侦管理策略不同的是,HEVC中的RPS技术,通过直接在每一帧开始的片头码流中传输DPB中各个帧的状态变化,而H.264/AVC中的滑动窗和MMCO (Memory ManagementControl Operation)这两种参考帧管理技术,是通过传输每一个片的DPB的相对变化来实现,一但发生数据丢失,将会有持续的影响。
H. POC, FrameNum和不存在的帧
HEVC不传输FrameNum或者产生和处理不存在的帧。由于RPS中包含了DPB中各个参考帧的状态因此不再需要产生和处理不存在的帧。在RPS中参考帧以POC识别,这样即使图像从码流中移除或者出现丢帧的情况下也能确定输出顺序。
I. RPS的差错恢复
只要used−by−curr−pic−X−flag设置为1但DPB中不存在,解码器便可以检测到参考帧意外丢失发生。这时解码器可以创建一个隐藏帧,或者通过反馈渠道向编码端发送消息。
Slices和Tiles
Slice是帧中按光栅扫顺序排列的CTU序列。一帧可以由多个slice组成,每个slice可以独立解码,因为slice内像素的预测编码不能跨越slice的边界。每个slice可按照编码类型的不同分为I/P/B slice。该结构的主要目的是在传输中遭遇数据丢失后的重新同步。每个slice可携带的最大比特数通常受限,因此根据视频场景的运动程度,slice所包含的的CTU数量可能有很大不同。
Tile是帧内可以独立进行解码的矩形区域,包含多个按矩形排列的CTU(数目不要求一定相同),定义这一结构的初衷是增强编解码的并行处理性能。同一个slice内的多个tiles可共享相同的头信息,一个tile也可以包含多个slice。另外还可以定义依赖性条带的概念。
由于引入了波前并行编码模式(wavefront parallel processing),一个slice可以按行分割成多个CTU,每一行的解码可以在上一行的几个CTU解码完成后开始,采用这种方式支持CTU的并行处理。
档次、级别和层的概念
档次、层和级别为多种不同应用提供了兼容性。一组可以生成符合标准的码流的编码工具或算法组成档次;级别根据解码过程负载和存储空间情况对关键参数加以限制(如最大采样频率、最大图像尺寸、最大比特率等等等);定义了主层和高层来区分最大码率和编码图像缓存不同的应用。
满足某一层级的解码器应当可以解码当前及比当前更低的层级所有码流,满足某一档次的解码器应支持该档次中的所有特性。编码器不要求利用该档次的所有特性,但是必须可以生成符合规定的码流,可以被解码器解码。
2、HEVC档次和级别的定义
HEVC包含Main, Main10和静态图像三个档次。这三个档次的限制条件如下:
(1)只支持4:2:0色度采样信号;(2)使用了tiles便不能使用WPP,每一个tile的亮度分辨率至少要为256×64;(3)Main和静态图像档次仅支持8位像素,Main10档次支持10位像素;(4)静态图像档次不支持帧间预测。
目前,HEVC定义了13个不同的级别,分别支持从QCIF到8k多种分辨率的图像。图像宽高受到该级别定义参数MaxLumaPS参数的限制。对第四级及更高级,可支持两个层。
前面洋洋洒洒扶住了很多,发现远离自己初衷了呵呵,下面放上一些简单的:转自最上方的博客地址
这里是指图像边缘处不一定还有一个64*64的CTU,因此在宽或高不是CTU整数倍的情况下,边界处的CTU自动进行分割直到子块的边界达到图像的边界为止。对于此类强制分割的情况,码流中不会编码split_cu_flag标志位(用于确定CU是否继续分割),而最后强制分割产生的子块依然可以进行进一步分割。在图像边界之外的CU不会被编码。
IDR(Instantaneous Decoding Refresh)——即时解码刷新
non-IDR(non-Instantaneous Decoding Refresh)——非即时解码刷新
SS(Slice Segment)——片段
SEI(Supplement Enhancement Information)——补充增强信息
CVS(Coded Video Sequence)——编码视频序列
SPS(Sequence Parameter Set)——序列参数集:一个CU的最小尺寸在SPS中标记,其取值范围可以从8×8一直到CTU的大小。当一个子块的大小达到SPS所规定的最小CU大小时,则该子块自动不再进行下一次分割。因此,如果一个低复杂度编码器规定只采用某个大小以上的CU尺寸,那么可以在SPS中指定,这样可以避免编码多余的split_cu_flag的标识。在常用的编码器设置中,CU的大小通常设置为从8×8到64×64。
PPS(Picture Parameter Set)——图像参数集
VPS(Video Parameter Set)——视频参数集
QP(Quantization Parameter)——量化参数
NAL(Network Abstract Layer)——网络抽象层
NALU(Network Abstract Layer Unit)——网络适配单元
VCLU(VCL NALU)——承载视频片压缩数据的NALU
VCL (Video Coding Layer)——视频编码层
HRD(Hypothetical Reference Decoder)——虚拟参考解码器
BLA(Broken Link Access)——断链访问
CRA(Clean Random Access)——完全随机获取
VUI(Video Usability Information)——视频可视化可用信息
POC(Picture order count)——图像序列计数
SAO(Sample Adaptive Offset)——样点自适应补偿
IRAP(Intra Random Access Point)——随机接入点
AU(Access Unit)——接入单元
SAP(Sample Adaptive intra-Prediction)——自适应预测
RQT(residual quardtree)——四叉树结构
SAD和SATD的区别与几个名词解释

Q:如果不用率失真最优化,为什么选择SATD+delta×r(mv,mode)作为模式选择的依据?为什么运动估计中,整象素搜索用SAD,而亚象素用SATD?为什么帧内模式选择要用SATD?
A:
SAD即绝对误差和,仅反映残差时域差异,影响PSNR值,不能有效反映码流的大小。SATD即将残差经哈德曼变换的4×4块的预测残差绝对值总和,可以将其看作简单的时频变换,其值在一定程度上可以反映生成码流的大小。因此,不用率失真最优化时,可将其作为模式选择的依据。
一般帧内要对所有的模式进行检测,帧内预测选用SATD的原因同上。
在做运动估计时,一般而言,离最优匹配点越远,匹配误差值SAD越大,这就是有名的单一平面假设,现有的运动估计快速算法大都利用该特性。但是,转换后SATD值并不满足该条件,如果在整象素中运用SATD搜索,容易陷入局部最优点。而在亚象素中,待搜索点不多,各点处的SAD差异相对不大,可以用SATD选择码流较少的匹配位置。
·几种常见的算术名词缩写。
SAD(Sum of Absolute Difference)=SAE(Sum of Absolute Error)即绝对误差和
SATD(Sum of Absolute Transformed Difference)即hadamard变换后再绝对值求和
SSD(Sum of Squared Difference)=SSE(Sum of Squared Error)即差值的平方和
MAD(Mean Absolute Difference)=MAE(Mean Absolute Error)即平均绝对差值
MSD(Mean Squared Difference)=MSE(Mean Squared Error)即平均平方误差

众所周知,评价编码效率的有两大指标:码率和PSNR。码流越小,则压缩率越大;PSNR越大,重建图像越好。在模式选择的时候,判别公式实质上也就是对二者的综合评价。

首先以RDO为例,模式对应的代价:J(mode)=SSD+λ*R(ref,mode,mv,residual)

这里,SSD是指重建块与源图像的差值均方和;λ是拉格朗日乘子,就当是权值吧^_^;R就是该模式下宏块编码的实际码流,包括对参考帧、模式、运动矢量、残差等的比特总和。当然如果是帧内模式,就只有R(mode,residual)。

很多人迷惑的是,改宏块还没编码啊,怎么知道它的码流和重建图像?实际上,RDO就是对每个模式都实际编码一次,得到J(mode),然后选择J(mode)最小的模式为实际编码模式。就像编码器引入了一个大反馈,这也正是JM选用RDO编码起来龟速的原因,当然,编码效率最佳。

后来,“随意”注意到,不论熵编码选用cavlc还是cabac,各个模式下的residual编码都使用cavlc,这就是说选用cabac,模式选择时得到的R不是实际的R,为什么此时不用cabac呢?难道cabac复杂么?我的看法是因为cabac会对模型表更新数据。解码端是没有模式选择模块的,如果编码端此时使用cabac,会造成编解码端模型表不匹配,不能正常解码。

λ的取值是根据实验得到的。使用B帧与使用B帧的λ值是不一样的。具体值忘了,^_^,看相关文章。

前已所述,RDO包含各模式的实际编码过程,也就是变换量化、熵编码、反变换反量化、重建等,计算量是相当大的,实时编码领域不可能直接使用。因此,就有了下面的替代公式:

J(mode)=SAD+λ*R(ref,mode,mv)

J(mode)=SATD+λ*R(ref,mode,mv)

这里SAD就是该模式下预测块与源图像的绝对误差和。比特R中少了对residual的编码,也就是运动估计后就可以直接得到该模式的J(mode)值,极大的减少了运算复杂度。SATD就是对残差进行哈德曼变换后的系数绝对和,在大多数情形下,SATD比SAD评价效果更好些,我对foreman CIF图像的测试,psnr增加了约0.2db,码流差不多。当然,SATD比SAD多了个变换,计算量大些。

注意,此时的λ与RDO的λ取值是不一样的。

容易困惑的还有,运动估计的匹配准则,很多运动估计的论文中都直接是SAD或SSE。编码器中对残差、MV、ref都要编码,所以匹配准则也就是SAD和码流R的综合评价!!!在同一个模式下,参考块与编码块的不同信息有ref、MV,故匹配准则为:

Jmotion=SAD+λ*R(ref,mv)

Q:如果不用率失真最优化,为什么选择SATD+delta×r(mode,ref,mv)作为模式选择的依据?为什么运动估计中,整象素搜索用SAD,而亚象素用SATD?为什么帧内模式选择要用SATD?

A:
SAD即绝对误差和,仅反映残差时域差异,影响PSNR值,不能有效反映码流的大小。SATD即将残差经哈德曼变换的4×4块的预测残差绝对值总和,可以将其看作简单的时频变换,其值在一定程度上可以反映生成码流的大小。因此,不用率失真最优化时,可将其作为模式选择的依据。
一般帧内要对所有的模式进行检测,帧内预测选用SATD的原因同上。
在做运动估计时,一般而言,离最优匹配点越远,匹配误差值SAD越大,这就是有名的单一平面假设,现有的运动估计快速算法大都利用该特性。但是,转换后SATD值并不满足该条件,如果在整象素中运用SATD搜索,容易陷入局部最优点。而在亚象素中,待搜索点不多,各点处的SAD差异相对不大,可以用SATD选择码流较少的匹配位置。

SAD部分转自: http://blog.csdn.net/wuzhong325/article/details/7449184
这里继续补充一下VPS ,SPS以及PPS,他们三个都是指定编码过程中共用的大部分语法元素游离出来,就是为了不用给每一GOP,每一Slice指定指定参数,减少参数重传而引起延迟等问题,HEVC压缩码流结构及SPS,PPS,VPS之间的引用关系如下图:
这里写图片描述
VPS主要用于传输视频分级信息,有利于兼容标准在可分级视频编码或多视点视频的扩展,对于一个视频序列,无论它每一层的SPS是否相同,都参考相同的VPS。SPS为包含一个CVS(GOP)中所有编码图像的共享编码参数。包含一幅图像所用的公共参数,即一幅图像中所有片段SS(Slice Segment)引用同一个PPS。

原创粉丝点击