HEVC(H.265)视频压缩编码格式与其原理

这篇具有很好参考价值的文章主要介绍了HEVC(H.265)视频压缩编码格式与其原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

本人最近开始研究视频重编码的检测,因此做个笔记记录一下自己学习的视频编码相关知识。视频编码的目的是为了压缩原始视频,压缩的主要思路是从空间、时间、编码、视觉等几个主要角度去除冗余信息。而H.265(HEVC)则是目前常用的视频压缩编码格式,本文将主要介绍其编码单元的格式及其作用。

AVC编码存在的问题

在介绍HEVC编码之前,首先会有“为什么要引入新的编码标准?”这种问题,这是因为AVC编码仍存在一些问题,而HEVC面对这些问题都有优化,且压缩率优于AVC编码,于是我们先了解一下AVC编码存在的一些问题。

AVC宏块尺寸太小

HEVC(H.265)视频压缩编码格式与其原理
在过去 ,16×16的宏块大小被认为是内存需求和编码效率之间的合理权衡。但最近研究发现使用更大的块大小可以显著提高高分辨率视频的编码效率,因为16×16的大小不足以捕获来自更高分辨率内容的增加的空间相关性,如上表所示,4K视频中16×16的宏块面积已经占比很小了,这也是HEVC的宏块(CTU)设计为64×64的原因。

AVC宏块深度有限

HEVC(H.265)视频压缩编码格式与其原理图1显示了H.264/A VC中用于预测和变换的块划分结构。虽然有几个非方形分区,但H.264/A VC中的块划分架构可以大致等效一个4×4 到16×16节点的三级四叉树结构,该结构深度是有限的。
在H.264/A VC中,mb−type是一个集合语法元素,用于指定大小为16×16的宏块是否应拆分以及如何进行预测。此外,sub−mb−type指定大小为8×8的子宏块是否应拆分更多。然而,由于大量的组合,这种分割和预测组合在HEVC中效率很低,因此在所有大小中都采用统一一致的语法。

帧间和帧内预测方案之间的适应性差

在AVC中,可以指定每个宏块使用帧内或帧间预测方案,但是小于宏块大小(16×16)的分区预测方案则不可进行自适应。

预测与转换之间存在依赖关系

H.264/A VC支持两种大小的TB,4×4和8×8,如图1所示。可以为每个宏块自适应地使用两个变换大小,并附加语法元素transform−size−8x8−flag;然而,这在很大程度上取决于块的分割方式。
当使用帧间预测方案时,如果至少一个块小于8×8,则应该对宏块中的所有块使用4×4变换。即使在另一种情况下,一个宏块内的所有变换大小也应该相同。当使用帧内预测方案时,除了帧内−16×16模式外,变换的大小应等于块大小。而在帧内−16×16模式中,在对16×16区域应用16个4×4变换后,对DC值应用4×4大小的Hadamard变换。预测模式和变换大小之间的这种强依赖性以及对块大小的依赖性使得总体设计更加复杂,尤其是应用于允许更多块大小变化的HEVC编码。

HEVC编码格式

H.265又名为高效率视讯编码(High Efficiency Video Coding, HEVC)编码格式,是现行H.264标准于2003年实现标准化以来时隔10年推出的新标准,将成为支撑未来十年的影像服务和产品的视频压缩技术。其特点是,支持1080p以上的4K×2K和8K×4K分辨率,将视频压缩率提高至H.264的约2倍。也就是说,能以原来一半的编码速度发送相同画质的视频。例如,按照20Mbit/秒发送的H.264格式视频内容,在相同画质的条件下用HEVC格式只需10Mbit/秒的速度。

从编码顺序和结构上讲,H.265首先将一个视频划分成若干个序列(通常为YUV格式的视频序列),一个序列划分成若干个图像组(GOP),每一个GOP代表一组连续的视频帧。H.265 在对图像做预测编码和变换编码时,会先对图像进行划分,划分方式是四叉树。在划分四叉树时,会将整个视频帧划分成若干个正方形的编码树块(CTB),CTB 可以继续划分成编码块(CB),CB 还可以划分为预测块(PB)和变换块(TB),相应的亮度与色度块配合上对应的语法元素组成一个编码单元。

举个例子,一个CTU包括亮度CTB和色度CTB,作用是将图像分割成更小的块,以便进行更高效的编码和传输。对应的语法元素包括其位置和大小,以及与该CTU相关的运动估计和量化参数等信息。这些语法元素在编码和解码过程中都会被使用,以确保正确地对图像进行编码和解码。

H.265对视频的结构划分如下图所示:HEVC(H.265)视频压缩编码格式与其原理相对于H.264/AVC的固定大小16×16 macroblock结构,上述的HEVC块分区结构被认为是相对于以前的视频编码标准来说最重要的变化之一。

从编码流程来说,H.265的编码框架如下图所示:HEVC(H.265)视频压缩编码格式与其原理

之所以展示编码框架图是为了加深编码单元块分区的理解,因为编码过程中不同的步骤操作的对象不同,才会将一个视频序列逐步细分成不同的单元块。下面来详细介绍每类编码单元及其作用。

编码树单元(Coding Tree Unit, CTU)

CTU是HEVC的基本处理单元,其中的区块(CTB)是存储资料的地方,许多区块加上语法元素组成一个单元(CTU)。此处理单元类似H.264/高阶视讯编码(Advanced Video Coding, AVC)中的宏区块(Macroblock)。编码树单元的大小可以从16x16到64x64,使用比H.264更大的处理单元得到更好的压缩效果。
HEVC(H.265)视频压缩编码格式与其原理

上图为CTU的一个典型划分和处理顺序的示例图。右图为CTU采用的四叉树结构,这样可以使CTU内部的块划分更加灵活。从图2中可以看出,CTU的大小为64 × 64,最小CU的大小为8 × 8。

编码单元(Coding Unit, CU)

编码单元CU是编码树的节内部节点,高效率视讯编码 (HEVC) 用编码单元 CU 指示这个单元是属于画面内预测(Intra Prediction)或是画面间预测(Inter Prediction)。 同一层次的CU必须是同一尺寸的4个方块,最多可有4层分解,即64×64(LCU),32×32,16×16和8×8(SCU)。如果不分解,则这个CTU仅包含一个 CU。每个CU包含一块亮度编码块(Coding Blocks, CB)、两个色度CB以及相应的语法元素。CU的大小和图像的特性是自适应的,在图像比较平缓区域,选择比较大的CU,而在图像边缘或纹理复杂的区域,选择比较小的CU,这样有利于提高编码效率:
HEVC(H.265)视频压缩编码格式与其原理
CU可以分为两类:跳过型CU(Skipped CU)和普通CU:
跳过型CU只能采用帧间预测模式,而且产生的运动向量和图像的残差信息不需要传送给解码器;
普通CU则可以采用帧内预测和帧间预测两种方式进行预测,然后对残差数据以及附加的控制信息进行编码。
一个CTU进行编码时,是按照深度优先的顺序进行CU编码,类似于z-scan,因此之前CTU图中左半部分即CU的编码顺序。

HEVC支持任意大小的CTU,这使得编解码器能够快速优化不同的内容、应用和设备。相比使用固定大小的宏块(macroblock),支持各种大小的CTU是HEVC在编码效率和适应性方面的优势之一。特别是对于仍然广泛使用的低分辨率视频服务,这种能力尤其有用。通过选择适当的CTU大小和最大分层深度,可以将分层块分割结构优化为目标应用程序。
HEVC(H.265)视频压缩编码格式与其原理
图4显示了适用于不同分辨率和内容类型的各种CTU大小和CU(Coding Unit,编码单元)大小的示例。例如,对于使用已知只包含简单全局运动活动的1080p内容的应用程序,CTU大小为64,深度为2可能是一个适当的选择。对于更一般的1080p内容,可能还包括小区域的复杂运动活动,CTU大小为64,最大深度为4将是更好的选择。

预测单元(Prediction Unit, PU)

CU确实决定了一个编码树的叶节点块的预测模式,但是这个预测信息并不是直接由CU传输给解码器的。一个编码单元(CU)可以根据预测模式的切割类型(Splitting Type)分割成一个、两个或是四个预测单元,也就是说PU只能是叶子节点。PU是进行共享预测信息的基本单元,CU到PU仅允许一层划分,最小的PU为4×4。划分可以是对称的,也可以是不对称的。一个2N×2N(N可以是4、8、16、32)的CU可划分为8种包含PU方式。PU可以是正方形的,也可以是长方形的,这是为了能够更好地区分背景与物体,例如下图:
HEVC(H.265)视频压缩编码格式与其原理
换句话说,CU提供了预测模式的选项,而PU用于传输预测信息给编码器。CU和PU是一种包含关系,CU可以包含一个或多个PU。CU包含了PU的全部信息,包括运动信息、残差信息和预测模式信息等。

转换单元(Transform Unit, TU)

一旦编码预测做好了,我们就需要编码残差(也就是预测图像和实际图像的插值),用DCT类型的变换。再次,CU可能太大了,因为CU可能包含细节丰富的高频部分,也可能包含平坦的低频部分。因此,CU又可以被分为TU。所以TU是变换及量化的基本单元,是具有用于应用整数变换和量化的残差或变换系数的基本代表块。TU同样采用四叉树的分割结构,所支持的尺寸从4×4至32×32的大小。通过基于PU分割类型的预测过程获得残差块后,根据四叉树结构将其分割为多个TU。对于每个TU,应用整数变换。该树被称为变换树或残差四叉树(RQT),因为残差块由四叉树结构划分:
HEVC(H.265)视频压缩编码格式与其原理
根据预测残差的局部变化特性,TU可以自适应地选择最优的模式。大块的TU模式能够将能量更好地集中,小块的TU模式能够保存更多的图像细节。这种灵活的分割结构,可以使变换后的残差能量得到充分压缩,以进一步提高编码增益。

特别地,在HEVC中,PU大小和TU大小都可以达到相应CU的相同大小。这导致TU的大小可能大于同一CU中PU的大小,即同一CU内不同PU的残差可以一起变换。
例如,当TU大小等于CU大小时,无论PU分割类型如何,都将变换应用于覆盖整个CU的残差块。注意,这种情况仅存在于帧间编码CU,因为预测总是与帧内编码CU的TU分割相耦合。

在帧间预测中,编码器可以使用多种预测模式来预测当前块的像素值,例如来自参考帧的运动矢量预测(motion vector prediction,简称MVP)或者来自其他块的邻域块预测(intra prediction)。这些预测模式的选择不受当前块内部结构的限制,因此,CU、PU和TU可以独立地被设定为相同的大小,所以可能出现上述情况。

而在帧内预测中,由于要对当前块内部的像素值进行预测,因此需要对当前块进行划分,以便更好地进行预测。具体而言,当前块需要划分为一个或多个PU,每个PU再被划分为一个或多个TU。这种划分方式对于不同的块大小、像素内容和纹理复杂度有不同的适用情况,因此不能随意设置大小。因此,在帧内预测中,CU、PU和TU的大小通常是不同的,且CU>=PU>=TU。

这张两张图可以比较好的理解上述的PU与TU结构:
HEVC(H.265)视频压缩编码格式与其原理HEVC(H.265)视频压缩编码格式与其原理

HEVC嵌套四叉树结构的优势

尽管在视频压缩中使用四叉树结构并不是一个新概念,但HEVC中的编码树方法通过将PU和TU四叉树概念用于视频压缩,可以带来额外的编码效率优势。

四叉树结构中,树的叶节点可以合并或组合,这样可以通过合并和组合节点实现L形或矩形形状的运动分割。然而,在HEVC块划分结构中,为了实现这样的形状,应该在进一步划分之后使用较小的块进行合并过程。PU在HEVC中解决了这些情况,而不是为了合并和组合再拆分一层。在HEVC中,PU采用预定义的分割模式(PART-2N×2N,PART-2N×N和PART-N×2N),在树的叶节点上测试最佳分割模式。PUs仍然可以通过合并模式共享运动信息。虽然通过去除对称矩形分割模式(PART-2N×N和PART-N×2N)并替换相应的合并标志,可以将一般的四叉树结构应用于HEVC,但经过证明,其编码效率和复杂性均不如现有的设计。

另一个优势是将四叉树运用到TU中。传统的视频编码标准中变换块的大小和运动补偿块的大小是固定的,而HEVC中变换块和运动补偿块使用的是更为灵活的四叉树结构,两者是可以同步变化的。但是,变换块的大小和运动补偿块的大小仍然是相关联的,因为它们必须保持一致,以确保编码的正确性和一致性。
这种嵌套四叉树结构的变换树是从编码树的叶节点开始建立的,因此在使用HEVC进行编码时,这种嵌套四叉树结构可以充分利用深度信息进行熵编码,从而提高编码效率。

最后一个优势是利用深度信息进行熵编码。其中,深度信息指的是四叉树的深度,这个深度信息可以用于更加精细的熵编码。例如,对于HEVC标准中的一些语法元素,如inter−pred−idc、split−transform−flag、cbf−luma、cbf−cb和cbf−cr,都可以利用深度信息进行熵编码。这种依赖深度信息的上下文推导技术可以提高编码效率,并且可以减少硬件实现中所需的行缓冲器,因为上方CTU的信息不需要被存储。因此,HEVC标准充分利用了深度信息进行熵编码,从而提高了编码效率。

具体来说,利用深度信息进行熵编码指的是,根据节点深度计算出符号的概率分布,并根据概率为每个符号分配一个合适的编码,以便可以用更少的比特数表示。通过利用深度信息进行熵编码,HEVC可以在尽可能少的比特数下有效地表示视频数据,从而提高了编码效率。此外,这种方式可以减少硬件实现中所需的行缓冲器数量,因为不需要存储上面CTU的信息,这样就可以降低编码器的硬件成本。文章来源地址https://www.toymoban.com/news/detail-449059.html

到了这里,关于HEVC(H.265)视频压缩编码格式与其原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最简单的基于 FFmpeg 的视频编码器(YUV 编码为 HEVC(H.265))

    参考雷霄骅博士的文章,链接:最简单的基于FFmpeg的视频编码器-更新版(YUV编码为HEVC(H.265)) 前一阵子做过一个基于 FFmpeg 的视频编码器的例子:最简单的基于 FFmpeg 的视频编码器(YUV 编码为 H.264)。 在该例子中,可以将 YUV 像素数据(YUV420P)编码为 H.264 码流。因为 FFmpeg

    2024年04月27日
    浏览(54)
  • vue使用vue-h265-player播放h265编码格式视频流

    GitHub地址 vue-h265-player 支持h265编码格式视频流播放 vue使用vue-h265-player 1、安装vue-h265-player 2、拷贝libDecoder.wasm文件到public目录下 复制node_modules/h265-player/lib/libDecoder.wasm文件到public目录下 3、示例代码 url: 需要播放的链接,播放器会根据该值的变化自动重启。 maxRetryCount: 最大尝

    2024年02月14日
    浏览(38)
  • 各大浏览器对H264、H265编码格式视频的支持情况

    web项目开发时,经常会遇到播放视频的情况,目前主流的视频编码格式有:H264、H265、VP8、VP9、DIVX等,主流的浏览器有:谷歌、火狐、Edge、Safari等,但由于浏览器对各编码的支持程度不一,导致部分视频无法播放,具体支持情况如下图(仅供参考): AVC(h264) HEVC(H265) MPEGS(D

    2024年02月14日
    浏览(44)
  • 音视频数据处理-H265/HEVC视频码流分析

    一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行了详细的分析,本文继续从数据处理的角度对

    2024年02月11日
    浏览(46)
  • Windows 10/11 免费安装HEVC/H.265视频扩展

    将系统从 Win 10 升级到 Win 11 后,用系统自带播放器打开 HEVC (H.265编码)格式视频时,提示缺少编码器无法播放;以前可以通过浏览器访问 ms-windows-store://pdp/?ProductId=9n4wgh0z6vhq 跳转到微软应用店免费安装解码插件,但现在失效了,主要是为了播放8K视频。 最新方法: 访问 h

    2024年02月04日
    浏览(42)
  • 基于RK3399/RK3588 H.265/HEVC的低延迟视频传输系统设计与实现

    近年来,随着短视频直播的兴起,视频传输设备在生活中的应用越发普及。人们对图像 清晰度、帧率、码率等技术指标的要求不断提高,视频帧所包含的数据量也在急速增加。在 有限的网络带宽下,传统的视频采集设备面临压缩率不足、帧率低、延迟高等技术瓶颈,这 使得

    2024年02月08日
    浏览(50)
  • H.265视频编码与技术全析

    作为新一代视频编解码格式,H.265得到越来越广泛的应用。不久之前,苹果公司在翘首期盼中发布了iPhone6,该款手机较之以往的iPhone,不仅仅只是简单地增大了屏幕,其采用了H.265视频编码解码技术,可达到在有限带宽下传输更高质量的网络视频。虽然对于大部分人来讲,H

    2024年03月26日
    浏览(43)
  • 【音视频原理】图像相关概念 ⑥ ( YUV 与 RGB 之间的转换 | YUV444 颜色编码格式 转为 RGB 格式 | RGB 颜色编码格式 转为 YUV444 格式 )

    YUV 与 RGB 颜色格式之间进行转换时 , 涉及一系列的数学运算 ; YUV 颜色编码格式 转为 RGB 格式 的 转换公式 取决于 于 YUV 的具体子采样格式 : YUV444 YUV422 YUV420 YUV444 格式 转为 RGB 格式 的 转换公式如下 : R = Y + 1.13983 * (V - 128) G = Y - 0.39465 * (U - 128) - 0.58060 * (V - 128) B = Y + 2.03211 * (U

    2024年01月24日
    浏览(63)
  • 视频基础知识(一) 视频编码 | H.26X 系列 | MPEG 系列 | H.265

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【音视频基础知识】 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪   这里的编码和之前音频知识中提到的编码(数字化编码)不是一个编码

    2024年04月09日
    浏览(45)
  • H265、VP9、AV1视频编码器性能对比

    目前在视频编解码器中,H264 已经成为绝对的主流,被大部分设备、浏览器所支持。虽然有更先进的编码器推出,但是受限于推广速度和设备支持成本,一直未能成为主流。 今年公司的目标是持续降本增效,现在将”屠刀“指向了视频业务的存储成本。视频文件存储主要两块

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包