HEVC中熵编码部分详细流程图
- 格式:docx
- 大小:112.71 KB
- 文档页数:2
HEVC(H.265)总结HEVC英文全称:High Efficiency Video Coding(高效率视频编码),又称H.265和MPEG-H Part 2,是一种旨在通过更高速度和容量提升视频编码效率的视频压缩标准。
ITU (国际电信联盟)于2013年Q1正式批准这一新标准,该标准被称为Recommendation ITU-T H.265或ISO/IEC 23008-2,其主要发展进程如下图所示:图1 H.265发展进程如图2所示,作为业界普遍看好的编码技术之一, 无论是标准制定,还是专利许可,HEVC 的演进之路获得了国际及国内诸多厂商(比如:apple、思科、华为等)的支持,可以预见这些各国的大型企业对HEVC的产业化工作更具热情。
图2 业内各种编码技术当前最主流的编码技术是H.264,因为苹果公司当初毅然决然抛弃了Adobe的VP6编码,选择了H.264,这个标准也就随着数亿台iPad和iPhone走入了千家万户,成为了目前视频编码领域的绝对霸主,占有超过80%的份额。
H.264也被广泛用于网络流媒体数据、各种高清晰度电视陆地广播以及卫星电视广播等领域。
H.264相较于以前的编码标准有着一些新特性,如多参考帧的运动补偿、变块尺寸运动补偿、帧内预测编码等,通过利用这些新特性,H.264比其他编码标准有着更高的视频质量和更低的码率,也因此受到了人们的认可。
HEVC(H.265)的技术亮点:H.265/HEVC的编码架构大致上和H.264/AVC的架构相似,主要也包含,帧内预测(intra prediction)、帧间预测(inter prediction)、转换(transform)、量化(quantization)、去区块滤波器(deblocking filter)、熵编码(entropy coding)等模块,但在HEVC编码架构中,整体被分为了三个基本单位,分别是:编码单位(coding unit,CU)、预测单位(predict unit,PU) 和转换单位(transform unit,TU )。
1 引言目前,无论是在人们的娱乐生活,如电影、电视剧、游戏画面,还是在工作领域,如视频会议[1]、视频监控,人们对视频质量的要求越来越高,特别是视频传输的实时性。
先进的HEVC 编码器可以满足这样的要求[2]。
HEVC 的重构环如图1所示,包括变换、量化、反变换和反量化以及像素预测。
在现有的硬件实现中,DCT(离散余弦变换)变换通常采用蝶形算法,对残差进行按行处理。
同时,由于DCT 变换矩阵元素具有对称性[5],小矩阵嵌入在大矩阵当中的特点,按行进行变换可以有效地减少变换模块的面积。
采用流水线设计,量化的结果也是每个周期输出一行。
变换会对残差大幅压缩,经过量化环节之后,高频分量的变换块量化值全等于零。
CBF 的作用是用一个标志位表示变换单元的量化值是否全为零。
在熵编码环节中,直接对全零块标志位编码,不需对这些模块的残差值进行逐个读取,从而减少熵编码的计算复杂度,减少了熵编码的时钟周期。
2 CBF 逻辑分析和表示形式如图2所示,HEVC 采用四叉树编码结构,在重构过程中,重构的单元是TU。
当前的CU(编码单元)层到TU 层之间的各层量化值是否全等于零使用CBF 表示。
在图2中,红色方框表示CU 的划分,黑色方框表示该TU 进一步向下划分。
当depth=0时,块大小为64×64,depth 每增加1,块大小变为原来的1/4,限于篇幅,图2只画出了CTU 为64×64左上部分。
为了使CBF 的输出表示比较简单,适合熵编码模块获取,本文将CBF 以4×4为单位进行存放,因为CTU 的大小为64×64,得到的CBF 表格大小为16×16。
CBF 用五位来表示,分别表示不同深度的各个变换块的量化值是否全部等于零。
CBF 可以用二进制表示为:CBF(index)=5’bX 4X 3X 2X 1X 0 (1)其中:index 为每一块的左上角序号,即块位置,取值为[1,256];5’表示五位;b 表示二进制;X 表示变量。
1 引言自2003年视频编码联合组(Joint Collaborative Team on Video Coding,JCT-VC)提出H.264视频标准之后,在2010年又提出新一代视频编码标准H.265/HEVC[1]。
相比前一代视频编码标准,HEVC标准加入了多种先进的编码算法,相比于H.264,HEVC 是通过算法的复杂度提高来获取压缩效率的进一步提高[2][3]。
CABAC作为HEVC的唯一标准,主要包含三个主要部分:二值化、上下文建模、算术编码。
对于熵编码而言,HEVC只保留了复杂度高的CABAC编码方式。
就目前针对熵编码的优化主要集中在如下几个方面:文献[4]通过软件和硬件的结合对常规编码和旁路编码进行优化,旨在面积和吞吐率之间有一个好的权衡;文献[5]对系数编码层中语法元素的上下文模型数量进行优化,从而达到编码时间的减少;文献[6]预先重归一化处理,预处理算数编码的rLPS来减少关键路径的延迟以及混合路径覆盖,就是LPS和MPS分别处理,多路并行方式对熵编码进行优化;文献[7]rLPS的预处理。
在新的State更新出来之后做一个预处理,将下一个LPS和MPS的两个表全都做出来,更新出来State之后使得的查表运算变得简化,只需要根据Range来查找;文献[8]通过软件的实现减少了官方测试代码HM[9]中一些不必要的算法,在不影响视频质量的前提下,达到优化代码的目的。
由于官方提供的参考代码,虽然是现有的HEVC编码器中编码性能最佳的,但由于是基于对象的C++代码和一些不必要的复杂算法导致较差的效率,无法完成实时编码。
x265是一个开源的编码器,x265的开发始于2013年3月。
MulticoreWare于2013年7月23日对外公布了x265的源代码。
最新版本(2.9)发布于2018年10月8日。
它的目的是提供世界上最快和计算效率最高的HEVC编码器。
它主要采用帧并行和波前并行技术的并行编码器,可以显著提高多核处理器的编码。
熵编码熵编码(entropy encoding)是一类利用数据的统计信息进行压缩的无语义数据流之无损编码。
本章先介绍熵的基本概念,然后介绍香农-范诺(Shannon-Fano)编码、哈夫曼(Huffman)编码、算术编码(arithmetic coding)、行程编码(RLE)和LZW 编码等常用的熵编码方法。
1 熵熵(entropy)本来是热力学中用来度量热力学系统无序性的一种物理量(热力学第二定律:孤立系统内的熵恒增):对可逆过程,⎰≥==0 ,TdQdS T dQ S (孤立系统) 其中,S 为熵、Q 为热量、T 为绝对温度。
(信息)熵H 的概念则是美国数学家Claude Elwood Shannon (香农 /仙农 / 向农)于1948年在他所创建的信息论中引进的,用来度量信息中所含的信息量:(为自信息量ii p s I 1log )(2=的均值/数学期望) ∑=iii p p S H 1log )(2其中,H 为信息熵(单位为bit ),S 为信源,p i 为符号s i 在S 中出现的概率。
例如,一幅256级灰度图像,如果每种灰度的像素点出现的概率均为p i =1/256,则82log 256log 1log 8222==≡=ip I )( 82log 2561256256log 25611log 82255022552bit p p H i i i i =⨯===∑∑==即编码每一个像素点都需要8位(I ),平均每一个像素点也需要8位(H )。
2 Shannon-Fano 编码按照Shannon 所提出的信息理论,1948年和1949年分别由Shannon 和MIT 的数学教授Robert Fano 描述和实现了一种被称之为香农-范诺(Shannon-Fano)算法的编码方法,它是一种变码长的符号编码。
算法Shannon-Fano 算法采用从上到下的方法进行编码:首先按照符号出现的概率排序,然后从上到下使用递归方法将符号组分成两个部分,使每一部分具有近似相同的频率,在两边分别标记0和1,最后每个符号从顶至底的0/1序列就是它的二进制编码。
H.265HEVC编码结构为了增强各种应⽤下操作的灵活性以及数据损失的鲁棒性,H.265/HEVC在编解码的设计上添加了多种新的语法结构。
相较于以往的视频编码标准(如H.264/AVC),这种新的语法架构使得H.265/HEVC在压缩效率和⽹络适应性两个⽅⾯都有显著提升。
此外,根据不同业务需求、终端运算能⼒等,H.265/HEVC还相应地规定出不同的档次、层、级,以适应各种应⽤场景。
本章⾸先对H.265/HEVC的编码架构和其所涉及的相关语法参数集进⾏详细介绍,然后给出档次、层、级的基本概念以及在H.265/HEVC中对它们的具体规范。
3.1 编码结构概述关于编码结构,可以从编码时的分层处理架构和编码完后码流的语法架构两⽅⾯进⾏描述。
视频序列由若⼲时间连续的图像构成,在对其进⾏压缩时,先将该视频序列分割为若⼲个⼩的图像组(Group Of Pictures,GOP)。
在视频编码中,存在两种GOP类型:封闭式GOP(Closed GOP)和开放式GOP(Open GOP),如图3.1所⽰。
在封闭式GOP类型中,每⼀个GOP以IDR(Instantaneous Decoding Refresh)图像开始,各个GOP之间独⽴编解码。
在开放式GOP类型中,第⼀个GOP中的第⼀个帧内编码图像为IDR图像,后续GOP中的第⼀个帧内编码图像为non-IDR图像,也就是说,后⾯GOP中的帧间编码图像可以越过non-IDR图像,使⽤前⼀个GOP中的已编码图像做参考图像。
每个GOP⼜被划分为多个⽚(Slice),⽚与⽚之间进⾏独⽴编解码。
其主要⽬的之⼀是在数据丢失情况下进⾏重新同步。
每个⽚由⼀个或多个⽚段(Slice Segment,SS)组成。
此外,为了更灵活、更有效地表⽰视频内容,H.265/HEVC还引⼊了树形结构单元(Coding Tree Unit,CTU)这⼀概念,其类似于传统的宏块。
每个CTU包括⼀个亮度树形编码块(Coding Tree Block,CTB)和两个⾊差树形编码块。
2.3 帧内预测2.3.1 帧内预测模式HEVC 的帧内预测和H.264/AVC 类似,也是根据相邻块的数据按照各种方式进行预测重建。
当编码高清视频时,HEVC 会采用较大的编码单元,如果仍然使用H.264/AVC 的预测模式,则不足以全面描述所有可能的预测匹配模型。
因为,为了使帧内预测更准确,HEVC 对亮度分量的预测模式多达35种(包括DC ,Planar 错误!未找到引用源。
-错误!未找到引用源。
两种非方向性预测,以及另外33种方向性预测),具体如图2-6所示。
色度分量的预测模式有5种,即水平、垂直、DC 、DM(Derivation Mode)和LM(Linear Mode),其中DM 模式是根据亮度预测模式来决定色度预测模式。
LM 模式根据相邻块的亮度和色度线性模型关系来预测当前块的色度,详见2.3.2节。
Angle step, modes 18-34A n g l e s t e p , m o d e s 2-1723456789(a) 35种预测模式 (b) 33种方向预测角度图2-6 帧内预测模式2.3.2 Planar 预测模式Planar 预测模式适用于图像平滑内容的预测重建,JCT-VC 的提案错误!未找到引用源。
首先提出这种预测方案,具体如图2-7所示,首先把待预测块的右下角像素值写入码流,然后根据该值和相邻块重建像素来插值最右侧列和最下面行,然后通过双线性插值的方法得到其他像素的预测值。
图2-7 Planar 预测模式 提案错误!未找到引用源。
对planar 模式做了进一步的改进,首先最右下角的像素不再传送给解码端,而是通过相邻块重建像素插值得到。
另外把双线性插值改为分别作水平和垂直方向的线性插值,然后再求平均值,具体如图2-8所示。
图2-8 改进的planar 预测模式2.3.2 LM 预测LM(linear model)是HEVC 新增的色度预测模式错误!未找到引用源。
hevc熵编码原理解读transform_unit1. 引言1.1 概述在现代社会的多媒体领域,视频压缩技术被广泛应用于各种场景,以减小文件大小、提高传输效率和降低存储成本。
高效视频编码(HEVC)是目前应用最广泛的视频压缩标准之一,其通过熵编码原理对视频数据进行压缩。
1.2 文章结构本文旨在详细解读HEVC熵编码中的transform_unit部分,该部分是HEVC熵编码过程中的重要环节之一。
文章将从HEVC简介开始,介绍熵编码的概念和原理,并深入探讨transform_unit在整个编码流程中扮演的角色。
接着,本文将解读HEVC熵编码过程中的系统架构和流程图,并详细阐述Coefficient Level Coding (CLC)、转换系数生成和量化过程等关键步骤。
随后,文章将探讨HEVC熵编码优化技术,特别关注Context Adaptive Binary Arithmetic Coding (CABAC)、Intra模式下的编码优化策略以及Inter模式下的编码优化策略等方面内容。
最后,在结论与展望部分,我们将总结解读transform_unit在HEVC熵编码原理中的重要性和意义,并对未来视频压缩标准的发展提出展望和建议。
1.3 目的通过详细解读transform_unit在HEVC熵编码过程中的作用和实现原理,本文旨在帮助读者全面了解HEVC熵编码技术,增强对视频压缩领域的理解。
同时,本文也为未来视频压缩标准的发展提供一些思路和借鉴。
通过深入研究HEVC 熵编码原理,可以为相关技术的优化和改进提供有益参考。
2. HEVC熵编码原理:2.1 HEVC简介:HEVC(High Efficiency Video Coding)是一种视频压缩标准,被广泛应用于数字视频传输和存储领域。
它是继H.264/AVC之后的最新一代视频编码标准,旨在提供更高的压缩效率和更好的图像质量。
2.2 熵编码概览:HEVC熵编码是HEVC压缩算法中重要的环节之一。
HEVC中CABAC解码器的硬件设计与实现袁星范;蔡敏【摘要】context based adaptive binary arithmetic encoding(CABAC) is a kind of high efficient entropy encoding used in HEVC, which has a high compression ratio, but it is complex and difficult to be parallel. In this paper, a high performance CABAC decoder is designed, and the hardware structure of the single cycle decoding 1bit is optimized, and the pipeline structure is used to improve the decoding performance. With the 0.18 μm CMOS process, the integrated area is 97K logic gates, the working frequency is 250MHz, the decoding speed reaches 1bit/cycle, which is suitable for the field of HD video.%基于上下文自适应二进制算术编码(CABAC)是HEVC中采用的一种高效熵编码,具有很高的压缩比,但实现结构复杂,且很难并行化。
本文设计了一个高性能的CABAC解码器,并对单周期解码1bit的硬件结构进行了优化,同时采用流水线结构,进一步提高了解码性能。
采用0.18μm CM OS工艺,综合后面积为48K个逻辑门,工作频率为250 MHz,解码速度达到1 bit/cycle,适用于高清视频领域。
CABAC(上下文自适应的二进制算术编码)是一种基于算术编码的方法,在HEVC(高效视频编码)中,除了参数集、SEI(序列参数集扩展信息)和切片头部之外,其余的所有数据都通过CABAC进行熵编码。
CABAC的工作过程主要包括三个步骤:初始化、二进制化和上下文建模。
- 初始化阶段,会构建上下文概率模型。
在这个过程中,会初始化和上下文模型有关的两个变量:MPS(Most Probable Symbol,最大概率符号)和δ(delta)。
MPS表示待编码符号可能出现的符号,对于二进制算术编码来说,MPS是0或者1;相反,LPS(Least Probable Symbol,最不可能出现的符号),对于二进制算术编码来说,LPS也是0或1。
δ表示概率的状态索引,它的值与LPS的概率值是相对应的,δ值随着LPS概率的更新而变化。
- 二进制化阶段,将连续的语法元素转化为二进制符号流。
这一步主要是为后续的算术编码做准备。
- 上下文建模阶段,根据上下文概率模型获取语法元素的概率,对语法元素进行熵编码。
这一阶段是实际进行编码的阶段。
最后,根据编码结果更新上下文概率模型。
在实际应用中,例如在FFmpeg中,CABAC的解码是由H.264和H.265解码器实现的。
具体来说,H.264解码器中的cabac.h和cabac.c文件实现了CABAC解码器,而H.265解码器中的hevc_cabac.h和hevc_cabac.c文件实现了HEVC标准下的CABAC解码器。
此外,还有研究针对高吞吐率HEVC CABAC残差语法元素的分析和对应的硬件结构设计,以及对CABAC编码中二进制算术编码器常规编码模式下的一种硬件流水线结构进行设计和优化。