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

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

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


文章目录

  • H.265/HEVC编码原理及其处理流程的分析
  • 一、什么是H.265/HEVC?
    • 1.1、H.265/HEVC的作用
    • 1.2、H.265/HEVC编码框架
  • 二、DCT变换和量化
    • 2.1、DCT变换
    • 2.2、 量化
  • 三、H265的预测
    • 3.1、帧内预测
  • 3.2、帧间估计
    • 3.3、 预测方式的选择
  • 四、环路滤波
  • 五、总结
  • 六、参考资料


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

二、DCT变换和量化

2.1、DCT变换

♌️当一个视频,也就是一组图片的一个CTU输入时,我们先将其进行DCT变换`。
请添加图片描述

♍️由于我们人眼对高频信息不敏感,比如一张白纸上写一个字,我们对高频率出现的背景白色并不敏感,黑色线条虽然占据较小的比例,但这低频率出现的黑色信号才是我们关注的重点。该图是某个图片经过DCT变换后的结果,由图可以看出(图片来源【2】),DCT变换后得到频域矩阵,低频部分幅度很大(左上角低频,右下角高频),而高频部分幅度较低

2.2、 量化

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

♏️通过DCT变换和量化,在尽可能保持低频、敏感(容易被人眼察觉)信息情况下,对图片进行了压缩

三、H265的预测

3.1、帧内预测

♐️ 我们通过DCT变换和量化后,要先经过反DCT变换和量化,恢复图像,才能进行进一步预测;恢复的图像和原始图像比,已经是在尽可能保持低频、敏感(容易被人眼察觉)信息情况下,对图片进行了压缩。

♑️ 如第一节所说,由于同一张图片中各个块之间有较强的关联性,且一个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变换和量化后的残差

3.2、帧间估计

♓️ 前面也说到了,视频里连续的图片相似度很高,因此H.265/HEVC引入了帧间编码。这个CTU块跟其他哪张图片相似(ref_idx),跟相似图片的具体哪个CTU块相似(mvd),只需要保存ref_idx,和mvd即可,同样的,相似的这个CTU跟当前CTU的差距,依然按残差系数输出

3.3、 预测方式的选择

⛎ H265将各种预测模式所造成的图片的失真(ΔD)和保存这些压缩后的信息所消耗的资源(R)进行计算代价函数(ΔJ),最终选择代价函数最小的模式进行预测,并输出其残差

四、环路滤波

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

五、总结

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

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

六、参考资料

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

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

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

  • 【4】振铃效应与样点自适应补偿(Sample Adaptive Offset,SAO)技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/21228.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)

前提须知: (1)搜索镜像命令 格式:docker search 镜像名 (2)设置Docker镜像加速器 详见文章:Docker设置ustc的镜像源(镜像加速器) 1、部署MySQL 拉取镜像(这…

从0到1无比流畅的React入门教程

无比流畅的React入门教程TOC React 是什么 简介 用于构建 Web 和原生交互界面的库React 用组件创建用户界面通俗来讲:是一个将数据渲染为HTML视图的开源JS库 其他信息 Facebook 开发,并且开源 为什么使用React? 原生JS使用DOM-API修改UI代码很繁…

4年外包出来人废了,5次面试全挂....

我的情况 大概介绍一下个人情况,男,毕业于普通二本院校非计算机专业,18年跨专业入行测试,第一份工作在湖南某软件公司,做了接近4年的外包测试工程师,今年年初,感觉自己不能够再这样下去了&…

软件设计模式介绍与入门

目录 1、软件设计模式的起源 2、什么是设计模式? 2.1、设计模式的设计意图 2.2、设计模式的分类准则 3、为什么要学习设计模式 4、如何学习设计模式 5、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...&#x…

Redis--弱口令未授权访问漏洞

Redis--弱口令未授权访问漏洞 一、漏洞简介二、危险等级三、漏洞影响四、入侵事件五、漏洞复现--Redis CrackIT入侵事件5.1、以root启动的redis,可以远程登入到redis console--------A主机5.2、生成公钥5.3、执行: redis-cli flushall 清空redis(非常暴力&#xff0…

《终身成长》笔记四——如何面对失败

目录 经典摘录 秉性 一个英雄具备的所有特质 ​编辑 什么是成功 什么是失败 掌控成功 领导力与固定型思维模式 成长型思维模式领导者的行为 害羞 经典摘录 秉性 天才们,因为自己拥有的优势而得意忘形,不去学习如何努力奋斗以及如何面对挫折。…

分享一个程序员接私活、兼职的平台

分享一个程序员接私活、兼职的平台 1、技术方向满足任一即可2、技术要求3、最后 1、技术方向满足任一即可 Python:熟练掌握Python编程语言,能够使用Python进行数据处理、机器学习和深度学习等相关工作。 MATLAB:熟练掌握MATLAB编程语言&…

MathType7公式编辑器新版详细介绍下载安装

由于CSDN这边不能发相关的教程等,若仅用于学习体验,请移步,有能力请支持正版。 wx供重浩:创享日记 对话框发送:mathtype 免费获取MathType-win-zh.exe安装包 它是一款用于数学公式编辑和排版的软件。MathType可以在Mi…

粪菌移植——一种治疗人体疾病的新型疗法

谷禾健康 粪菌移植是一项近年来备受关注的医疗技术,它涉及将健康捐赠者的粪便物质转移至患有疾病或障碍患者的胃肠道。 简单来说就是选择健康合适的人粪便,通过科学方法提取出有用的微生物,去除有害与无用的部分,然后制成制剂&…

基于布谷鸟优化算法(CS)在微电网优化中的应用研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

ChatGPT应用场景巡航之广告文案

此文为ChatGPT应用场景巡航第二篇:广告文案。 写出成功的文案,需要专业的技术水准,如果加以辅助工具,那会更加如虎添翼,事半功倍,本文会给大家介绍一下广告文案的写作技巧和辅助工具的使用。 01 — 指导原…

如何使用jenkins、ant、selenium、testng搭建自动化测试框架

如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗&#xff…

文献阅读:A Lite Distributed Semantic Communication System for Internet of Things

目录 动机:为什么作者想要解决这个问题?贡献:作者在这篇论文中完成了什么工作(创新点)?规划:他们如何完成工作?理由:通过什么实验验证它们的工作结果自己的看法 动机:为什么作者想要…

【接口自动化测试】cookie绕过验证码自动登录?(保持登录状态)

目录 前言 cookie工作原理 cookie绕过登录 【自动化测试工程师学习路线】 1、自动化测试必备Python编程内容​ 2、Web UI 自动化测试基础内容​ 3、Web UI 自动化测试实战内容​ 4、APP UI 自动化测试基础内容​ 5、APP UI 自动化测试实战内容​ 6、API 接口自动化测…

从‘discover.partitions‘=‘true‘分析Hive的TBLPROPERTIES

从’discover.partitions’true’分析Hive的TBLPROPERTIES 前言 Hive3.1.2先建表: show databases ;use db_lzy;show tables ;create external table if not exists test_external_20230502(id int,comment1 string,comment2 string ) stored as parquet ;creat…

高精度示波器keysight是德DSOS054、MSOS054销售回收

安捷伦Keysight DSOS054A MSOS054 500MHZ高清晰度示波器 特征: 带宽:500 MHz,具有平坦的频率响应,可实现高信号保真度 频道:4 最大存储深度:800 Mpts(2 通道),400 Mpt…

2023五一杯数学建模竞赛ABC题思路解析+代码+论文

AB题见文末,下面是C C题:“双碳”目标下低碳建筑研究 “双碳”即碳达峰与碳中和的简称,我国力争2030年前实现碳达峰,2060年前实现碳中和。“双碳”战略倡导绿色、环保、低碳的生活方式。我国加快降低碳排放步伐,大力推…

莫言用 GPT 写颁奖辞,那如果他自己写会是什么效果呢?

在《收获》杂志 65 周年庆典上,莫言在为余华颁奖时表示,余华是自己的好朋友,但给他的颁奖词写了好几天也想不出来,后来找了 ChatGPT 帮忙写。最后,莫言让 ChatGPT 写了一篇莎士比亚风格 1000 多字的颁奖词,…

2023-5-17-CPU架构学习(amd、ard等)

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…

微服务的使用场景和架构设计方案

目录 【单体架构】 【微服务解决哪些问题】 微服务的拆分原则 微服务使用过程中有哪些坑? 【RPC框架】 常见的网络 IO 模型 RPC 执行过程总结 【CAP原理】 如何使用 CAP 理论 【服务注册和发现】 【配置中心】 【Consul】 Consul介绍 Consul角色 Con…