IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> H.265/HEVC编码原理及其处理流程的分析 -> 正文阅读

[人工智能]H.265/HEVC编码原理及其处理流程的分析

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

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



一、什么是H.265/HEVC?

1、H.265/HEVC的作用

H.265/HEVC是一种新的视频压缩标准,而视频是由一张张连续的图片组成的,因此对视频的压缩就可以理解为对一组图片的压缩。30帧的视频就表示一秒有30张的图片,60帧就表示该视频一秒有60张图片,因此相邻的两张图片间常常存在大量相同的部分。


一张图片是由很多像素点组成,而如图所示(图片来源未知),即使同一张图片内部也存在大量相同的部分,比如这背景几乎全是白色,我们没有必要把每个白色的位置及其像素值全部存储下来,这样既耗费资源又没有必要。因此,我们就需要用H.265/HEVC对组成视频的图片进行压缩,以减少他们的大小。

2、H.265/HEVC编码框架请添加图片描述

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

比如这张图,红色部分划分为一块,这一块几乎都是白色。通过合理的划分CTU,可以将图片划分成相似度较高的一个个CTU块,这就是H.265/HEVC的第一步操作。

二、DCT变换和量化

在这里插入图片描述

1. DCT变换

如图所示(红色划线部分),当一个视频,也就是一组图片的第一个CTU输入时,我们先将其进行DCT变换

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

2. 量化

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

二、帧内预测

由于同一张图片中各个块之间有较强的关联性,因此第一张图片的其他CTU进来时,不需要再像第一张图片一样处理了。
在这里插入图片描述
第一张图片的其他小块进来时,处理流程如绿色线部分所示;首先,我们将上一帧的图片进行反量化和反DCT变换来进行恢复(红色线)。根据恢复的数据和新的CTU块来选择一种方式进行预测(H.265提供了几种预测方式,参考【4】),最后我们将新的CTU块与预测出的CTU块做减法,只保留差值就行。也就是说,一张图片的其他块输入时,我们只需要保留,根据前面的CTU预测当前CTU的模式,和预测后的误差,然后经过DCT变换和量化即可

三、帧间估计

以上是一张图片的处理流程,那下一张图片怎么处理呢?前面也说到了,视频里连续的图片相似度很高,因此H.265/HEVC引入了帧间编码。处理流程如蓝色线条所示。
在这里插入图片描述

1、去方块滤波和SAO滤波

由于CTU的处理方式,和高频信号损失的原因,因此我们恢复信号时,除了要进行DCT反变换和反量化,还需要增加一个去方块滤波和SAO滤波。简单来说,我们需要先模拟一下解码端,将之前的图片进行解码,模拟解码端能获得的图片(图中‘解码图像缓存’处)。

2、运动估计和运动补偿

我们根据解码后的前一张图像和当前输入的图片的CTU块进行一个运动的估计,运动补偿模块根据运动数据和上一张图片的CTU,预估一下这张图片CTU的值,最后和这种图片CTU的值做个减法,只保留运动估计模块估计出来的运动信息,和根据这个信息恢复图片与原始数据的差值即可。

3、帧间模式流程

总的来说,帧间编码就是,根据上一张图片的CTU和当前图片对应位置的CTU,分析出一个运动数据,然后根据这个运动数据和上一张图片的CTU来恢复预测当前图片位置CTU的值,最后只保留运动信息,和预测值与实际值的差值即可

四、总结

    1. H.265/HEVC采用帧内帧间混合编码,由控制模块决定当前CTU采用帧内还是帧间编码;
    1. 帧内模式保存预测模式和一个差值,解码端根据预测模式和同一张图片的前面的CTU来预测当前CTU,再加上这个差值,解码端就恢复当前CTU了;
    1. 帧间编码保存一个运动信息和差值,解码端可以根据前一张图片的对应位置CTU和这个运动信息,估算出当前CTU的值,再加上差值,就恢复当前CTU了

五、参考资料

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:44:22  更:2022-05-13 11:48:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:25:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码