H.265/HEVC编码原理及其处理流程的分析

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

H.265/HEVC编码原理及其处理流程的分析

H.265/HEVC编码的框架图,查了很多资料都没搞明白,各个模块的处理的分析网上有很多,很少有把这个流程串起来的。本文的主要目的是讲清楚H.265/HEVC视频编码的处理流程,不涉及复杂的计算过程。



一、什么是H.265/HEVC?

1.1、H.265/HEVC的作用

♈️H.265/HEVC是一种新的视频压缩标准,而视频是由一张张连续的图片组成的,因此对视频的压缩就可以理解为对一组图片的压缩。30帧的视频就表示一秒有30张的图片,60帧就表示该视频一秒有60张图片,对视频的压缩,就是对一组图片的压缩。由于一个视频里相邻的图片间常常存在大量相同的部分。比如这两张照片,相似度就很高,没必要两张都完整的存储下来。

♉️一张图片是由很多像素点组成,即使同一张图片内部也存在大量相同的部分,比如这张图片的背景几乎全是白色,我们没有必要把每个白色的位置及其像素值全部存储下来,这样既耗费资源又没有必要。

♊️因此,H.265/HEVC主要采用帧内预测(根据同一张图片的其他位置的像素点预测当前位置的像素值), 或者帧间预测(根据其他图片的像素,来推测当前图片) 对组成视频的图片进行压缩,以减少他们的大小。

1.2、H.265/HEVC编码框架

H.265/HEVC编码原理及其处理流程的分析

♋️H.265/HEVC的编码框架如图所示,图片来源【1】,本文的主要目的是为了讲清楚这张图展示的处理流程。首先,输入的图片被划分为一个个相似的块(CTU),这些块的大小最大为64*64,通过这样的划分,使得每个CTU的差别都不大。通过合理的划分CTU,可以将图片划分成相似度较高的一个个CTU块,这就是H.265/HEVC的第一步操作

二、H265的预测

2.1、帧内预测

♑️ 如第一节所说,由于同一张图片中各个块之间有较强的关联性,且一个CTU块内部的相似度也很高,因此提出了一种帧内预测压缩算法,比如一个图像为 [ 0 2 2 3 0 2 1 3 0 2 2 2 0 1 2 3 ] (2) \begin{bmatrix}0 & 2 & 2 & 3 \\0 & 2 & 1 & 3 \\0 & 2 & 2 & 2 \\0 & 1 & 2 & 3\end{bmatrix} \tag{2} 0000222121223323(2)

♒️ 我们只保留最上面一行的数据【0,2,2,3】,解压缩时,下面几行都直接复制这一行就可以恢复图像 [ 0 2 2 3 0 2 2 3 0 2 2 3 0 2 2 3 ] (2) \begin{bmatrix}0 & 2 & 2 & 3 \\0 & 2 & 2 & 3 \\0 & 2 & 2 & 3 \\0 & 2 & 2 & 3\end{bmatrix} \tag{2} 0000222222223333(2)

♓️ 如图可知,恢复后的图像与原始图像依然有差异,这个差异的成为残差,因此我们不仅要保存帧内压缩的压缩模式(本文只提到了一种),还需要保存残差。DCT变换和量化的意义将在下节介绍,我们对残差也是保存通过DCT变换和量化后的残差

2.2、帧间估计

♓️ 前面也说到了,视频里连续的图片相似度很高,因此H.265/HEVC引入了帧间编码。这个CTU块跟其他哪张图片相似(ref_idx),跟相似图片的具体哪个CTU块相似(mvd),只需要保存ref_idx,和mvd即可,同样的,相似的这个CTU跟当前CTU的差距,依然按残差系数输出## 3.3、 预测方式的选择⛎ H265将各种预测模式所造成的图片的失真(ΔD)和保存这些压缩后的信息所消耗的资源(R)进行计算代价函数(ΔJ),最终选择代价函数最小的模式进行预测,并输出其残差

三、DCT变换和量化

3.1、DCT变换

♌️当一个视频,也就是一组图片的一个CTU输入时,预测图像和原始图像存在误差,我们会将这个误差进行dct变换
H.265/HEVC编码原理及其处理流程的分析

♍️该图是某个图片经过DCT变换后的结果,由图可以看出(图片来源【2】),DCT变换后得到频域矩阵,低频部分幅度很大(左上角低频,右下角高频),而高频部分幅度较低

3.2、 量化

♎️ 为了减少存储数据所需要的内存资源。CTU经过DCT变换后,我们再将其进行量化。由于量化步长选取的不一样,造成的精度损失也不一样(参考【3】)。举个例子,如果我们选最小步长是1,向下取整,那么0.6,0.2都将被量化为0,412.6就会被量化为412。可以看到,高频信号由于幅度较小,因此量化后的损失很大,而低频信号由于幅度较大,因此影响较小。毕竟普通人丢了100块钱和富豪丢了100块钱损失是不一样的。

四、环路滤波

🔯由于CTU的处理方式,和高频信号损失的原因,因此我们恢复信号时,还需要增加一个去方块滤波和SAO滤波【4】,来减小预测后的图像和原始图像的差距(即,进一步减小残差)。

五、总结

  • 🅰️H265先选择一种代价函数最小的预测方式(帧内预测,或帧间预测),对图像进行压缩;
  • 🅱️H265通过DCT变换和量化对预测图像和原始图像的差异(残差)进行处理,减小信息量
  • 🆎压缩后的图像,直接恢复的话,和原始图像差距过大,因此需要进行环路滤波缩小这段差距
  • 🅾️环路滤波后,依然存在误差,误差也需要被保留(DCT变换和量化后保留)

简单来说,H265就是通过一系列预测算法对视频进行压缩,再将因此产生的和原始图像的差异(残差,失真)保存。解压缩时,就可以通过反预测,加残差的方式恢复图像

解码图像 = (预测模式 + 对残差进行量化变换) 后的图片进行环路滤波。

六、参考资料

  • 【1】新一代高效视频编码H.265/HEVC:原理、标准与实现,作者:万帅、杨付正;

  • 【2】 CSDN博客: JPEG压缩原理与DCT离散余弦变换

  • 【3】CSDN博客:pytorch量化中torch.quantize_per_tensor()函数参数详解

  • 【4】振铃效应与样点自适应补偿(Sample Adaptive Offset,SAO)技术文章来源地址https://www.toymoban.com/news/detail-451748.html

到了这里,关于H.265/HEVC编码原理及其处理流程的分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索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日
    浏览(34)
  • 基于Python的pyAV读取H265(HEVC)编码的视频文件

            利用海康威视相机拍出来的视频是H265格式的,相比于常规的H264编码,压缩率更高,但因此如果直接用之前的方法读取,会出现无法读取的情况,如下。         可以看到,对于帧间没有改变的部分,H265编码就只保存一份,因此直接解析出来就都是空白的,只

    2024年02月22日
    浏览(35)
  • 【音视频原理】音视频 “ 采样 - 编码 - 封装 过程 “ 和 “ 解封装 - 解码 - 播放 过程 “ 分析 ( 视频采集处理流程 | 音频采集处理流程 | 音视频文件解封装播放流程 )

    本篇文件主要分析 音视频文件 是怎么产生的 , 以及 音视频文件是如何播放的 ; 视频文件从录像到生成文件的全过程 : 采集图像帧 : 摄像头 硬件 负责 采集画面 , 采集的 初始画面 称为 \\\" 图像帧 \\\" , 一秒钟 采集 的 图像帧 数量 称为 \\\" 帧率 \\\" , 如 : 60 帧 就是 一秒钟采集 60 个画

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

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

    2024年02月04日
    浏览(32)
  • Chrome已实现对H.265/HEVC的硬解支持

    H.265/HEVC作为ITU-T VCEG继H.264/AVC之后所制定的新视频编码标准,能够在有限带宽下传输质量更高的视频。超高清视频的普及与流行,使得各大网站不得不用H.265来代替老旧的H.264编码做视频传输,当使用H.265标准的视频时,浏览器对于H.265的支持不友好一直是用户及厂商们的应用之

    2023年04月09日
    浏览(29)
  • 【音视频处理】转编码H264 to H265,FFmpeg,代码分享讲解

    大家好,欢迎来到停止重构的频道。 本期我们讨论音视频文件 转编码 ,如将视频H264转H265等。 内容中所提及的 代码都会放在GitHub ,感兴趣的小伙伴可以到GitHub下载。 我们按这样的顺序展开讨论:​ 1、  编码的作用  2、  转编码的工作原理 3、  编解码器安装  4、  示

    2024年02月11日
    浏览(37)
  • SkeyeRTMPClient扩展支持HEVC(H.265)解决方案之兼容H264和H265帧数据解析详解

    在之前两篇关于SkeyeRTMPClient扩展支持HEVC(H.265)解决方案的文章中,我们已经完成了对H265的支持,本文主要阐述将H26和H265支持兼容起来,实现不同视频编码格式的自适应兼容适配。 1. 根据CodecId判断数据编码类型 根据视频编码ID判断视频编码类型,如果视频编码ID==FlvCodeId_Hevc(

    2023年04月08日
    浏览(32)
  • 安卓播放H264/H265实时流(安卓实时预览H264/H265 安卓实时预览AVC/HEVC)

       实际项目中经常遇到两种场景,第一种从无人机拿H264/H265码流转GB28181等协议,转协议的同时可能还需要实时预览无人机画面; 第二种是安卓接USB外置摄像头, 由于USB2.0传输带宽有限,对于高分辨率图像, 带宽无法满足YUV图像的传输, 摄像头只好先将图像编码成MJPEG,H264或H26

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

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

    2024年02月08日
    浏览(35)
  • HEVC预测编码介绍

    一幅图像内邻近像素之间有着较强的 空间相关性 ,相邻图像之间也有很强的 时间相关性 ; 预测编码(Prediction Coding) 是指利用已编码的一个或几个样本值,根据某种模型或者方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码。 将视频中的每一

    2024年02月07日
    浏览(21)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包