HEVC预测编码介绍

news2024/12/22 15:54:17

介绍

● 一幅图像内邻近像素之间有着较强的空间相关性,相邻图像之间也有很强的时间相关性;
● 预测编码(Prediction Coding)是指利用已编码的一个或几个样本值,根据某种模型或者方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码;
● 将视频中的每一个像素堪称一个信源符号,它通常与空域上或时域上邻近的像素均具有较强的相关性,因此视频是一种有记忆信源;
● 预测编码技术可以理解成一种特定的条件编码,其利用特定的预测模型反应像素间的依赖关系;

帧内预测编码

● 帧内预测编码是指利用视频空间域的相关性,使用当前图像己编码的像素预测当前像素,以达到去除视频空域冗余的目的,然后将预测残差作为后续编码模块的输入,进行下一 步编码处理;

● 为了选择最合适的帧内预测模式,h264使用拉格朗日率失真优化RDO进行模式选择;4x4和8x8包含9种预测模式,16x16包含4种预测模式;
○ 4种模式:水平、垂直、DC(所有参考像素的均值)、Plane(水平、垂直的线性滤波器)

帧间预测编码

● 帧间预测是指利用视频时间域的相关性,使用邻近己编码图像像素预测当前图像的像素 , 以达到有效去除视频时域冗余的目的;

● 视频序列通常包括较理的时城相关性,因此预测残差通常是“ 平坦的”,即很多残差值接近于“0” 。将残差信号作为后续模块的输入进行变换、量化、 扫描及熵编码,可实现对视频信号的高效压缩;

● 运动估计ME
○ 为当前图像的每个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计(Motion Estimation,ME);
○ 用于预测的图像就称为参考图像(reference frame);
○ 运动估计准则:最小均方误差MSE、最小平均绝对误差MAD、最大匹配像素数MPC、绝对误差和SAD、最小变换域绝对误差和SATD

● 运动向量MV
○ 参考块到当前像素块的位移称为运动向量(Motion Vector,MV);
○ 当前像素块鱼参考块的差值称为预测残差(Prediction Residual);
○ MVD = MVc - MVp,MVc表示当前编码块,MVp表示已编码块,MVD二者的差值;
○ MVp(MV预测)
■ 使用相邻已编码块对当前块MV进行预测,将二者差值进行编码,将会大幅节省编码MV所需要的比特数;
■ 主要分为空域预测、时域预测(主要针对B slice);
● h264规定了7种大小的运动补偿块:16x16、16x8、8x16、8x8、8x4、4x8、4x4;
在这里插入图片描述

● 搜索算法
○ ME的运算复杂度通常较高,寻找高性能、低复杂度的运动搜索算法显得尤为重要;
○ 还需要亚像素搜索,1/2、1/4、1/8等,所以需要对参考像素进行性插值;
○ 半像素用了6抽头滤波器,1/4在半像素基础上得到;

● 多参考图像和加权预测
○ 权衡编码效率和编码时间,采用4~6个参考图像;
○ 加权预测表示预测像素可以用一个或两个参考图像中像素通过与加权系数相乘;

h265帧内预测

● 亮度帧内预测模式
○ 5种大小的PU:4x4、8x8、16x16、32x32、64x64;
○ 每种PU都对应35种预测模式,Planar模式、DC模式和33种角度模式;
○ h265新增左下方块的边界像素作为当前块的参考,因为h265以四叉树形的编码结构使得这一区域称为可用像素;
○ 帧内编号0:planar模式、帧内编号1:DC模式、2~17:水平类模式、18~34:垂直类模式;
○ planar模式适用于像素值缓慢变化的区域,DC模式适用于大面积平坦区域;

● 亮度模式的编码
○ 相邻块的帧内预测模式相同或者相似的概率较大,如果将每个PU的预测模式独立进行编码则会带来不必要的冗余;
○ h265建立帧内预测模式候选列表candModeList,表中有3个候选预测模式,用来存储相邻PU的预测模式,如果当前PU最优模式在候选列表里,只需要编码在列表里位置即可,若不在,需要遍历比较,编码最终值;

● 色度帧内预测模式
○ 5种模式:Planar模式、垂直模式、水平模式、DC模式以及对应亮度分量的预测模式;

● 帧内预测过程
○ 35种预测模式是在PU的基础上定义,而具体帧内预测过程的实现则是以TU为单位;
○ h265标注规定PU可以以四叉树形式划分TU,且一个PU内的所有TU共享同一种预测模式;
○ 预测过程:判断当前TU相邻参考像素是否可用并做相应的处理、对参考像素进行滤波、根据滤波后的参考像素计算当前TU的预测像素值;
○ Planar模式下,对于4x4 TU,参考像素不需要进行滤波,其他情况,参考像素都需要进行滤波;

h265帧间预测

在这里插入图片描述

● 运动估计
○ 基于块运动补偿的视频编码框架中,运动搜索是最为重要的环节之一,同时也是编码端最耗时的模块;
○ TZSearch算法是h265中出现的新技术;
○ 以AMVP技术来计算起搜点;

● 亚像素精度运动估计
○ h265中亮度的半像素采用基于DCT的8抽头滤波器生成;
○ 亮度的1/4、3/4像素采用基于DCT的7抽头滤波器生成;
○ 色度需要达到1/8精度,采用基于DCT的4抽头滤波器生成;

● MV预测技术
○ h265在MV的预测方面提出两种新技术— Merge技术和AMVP技术;
○ 二者区别:
■ Merge可以看成一种编码模式 ,在该模式下,当前PU的MV直接由空域 (或时域)上邻近的PU预测得到,不存在MVD;
■ AMVP可以看成一种MV预测技术,编码器只需要对实际MV与预测MV的差值进行编码,因此是存在MVD的;
■ 二者候选MV列表长度不同, 构建候选MV列表的方式也有所区别;

○ Merge模式
■ 为当前PU建立一个MV候选表,表中存在5个候选MV及对应的参考图像,遍历5个候选MV并进行率失真代价计算,选择最小作为该模式下最优MV;
■ 编码器只需要传输最优MV在候选列表中的索引即可,大幅节省了运动信息的编码比特数;
■ MV候选列表包含空域和时域,空域提供最多4个候选MV,时域最多提供一个候选MV,时域候选列表不能直接使用候选块的运动信息,需要根据于参考图像的位置关系做相应的比例伸缩调整;
■ 候选列表不够5个的时候,需要使用(0,0)进行填补达到规定的数目;

○ AMVP模式
■ 高级运动向量预测(Advanced Motion Vector Prediction,AMVP)利用空域、时域上运动向量的相关性,为当前PU建立候选预测MV列表,选择最优预测MV,进行差分编码;
■ 解码端通过建立相同的列表,仅需要运动向量残差MVD与预测MV在该列表中的序号即可计算出当前PU的MV;
■ AMVP候选MV列表包含空域和时域,列表长度为2;
■ 过程:空域MV列表5个里选择2个,时域MV列表2个里选择1个,再合并相同的MV,填补(0,0),保留候选列表中的前2个MV,选择最优MV;

○ 加权预测
■ 修正P slice或B slice中运动补偿预测像素;
■ 两种加权预测方法:默认加权预测、Explicit加权预测;

PCM模式

● 该模式下,编码器直接传输一个CU的像素值,不经过预测、变换等操作,同理,解码端可以直接恢复当前CU的像素值;
● 主要适用于图像内容及其不规则或量化参数非常小,该模式与传统的帧内-变换=量化=熵编码相比,编码效率可能会更高;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode572. 另一棵树的子树

题目 leetcode572. 另一棵树的子树 思路 递归解决。 ①递归的大问题化小----判断c是否为a子树可以转换为判断c是否为a左子树的子树或者c是否为a右子树的子树。 ②递归的结束条件-----如果两颗树相同,返回true;两棵树为空,返回true&#xff…

【十三】设计模式~~~行为型模式~~~中介者模式(Java)

中介者模式-Mediator Pattern【学习难度:★★★☆☆,使用频率:★★☆☆☆】 2.1. 模式动机 在用户与用户直接聊天的设计方案中,用户对象之间存在很强的关联性,将导致系统出现如下问题:系统结构复杂&#…

动态规划-硬币排成线

动态规划-硬币排成线 1 描述2 样例2.1 样例 1:2.2 样例 2:2.3 样例 3: 3 算法解题思路及实现3.1 算法解题分析3.1.1 确定状态3.1.2 转移方程3.1.3 初始条件和边界情况3.1.4 计算顺序 3.2 算法实现3.2.1 动态规划常规实现3.2.2 动态规划滚动数组 该题是lintcode的第394题&#x…

第二十一章 开发Productions - ObjectScript Productions - 延迟发送

文章目录 第二十一章 开发Productions - ObjectScript Productions - 延迟发送延迟发送 生成事件日志条目在 ObjectScript 中生成事件日志条目 第二十一章 开发Productions - ObjectScript Productions - 延迟发送 延迟发送 除了同步(等待)和异步&…

9秒被骗245万元?AI火了,骗子也来了!

生成式AI技术,如GPT-4等强大的语言模型的广泛普及,已经逐步开展应用。这种对未来技术的期待之余,不得不面对AI技术可能被滥用的风险,甚至已经有一些犯罪分子已开始巧妙地利用AI技术进行电信诈骗。 当下最积极学习的除了学生&#…

【高危】Apache bRPC <1.5.0 存在任意代码执行漏洞

漏洞描述 Apache bRPC 是C开发、由百度RPC发展而来的工业级 RPC 框架。 该项目受影响版本存在任意代码执行漏洞,由于server.cpp对于用户输入的pid_file使用wordexp展开。 具备bRPC控制权限的攻击者可在bRPC启动时通过控制pid_file参数注入恶意内容(如…

DNS隧道流量分析

1.域名准备 选择哪家的云都没问题,国内云需要实名,不建议使用,这里我选择的TX云,因为之前注册过了,自己拿来做个流量分析不成问题 域名添加解析记录 需要准备自己的vps作为DNS隧道的服务端,且需要添加ns…

.nc文件根据经纬度提取点上数值python

.nc文件根据经纬度提取点上数值python 1、数据集2、代码部分3、完整代码 1、数据集 VOD Climate Archive (VODCA) 数据由维也纳工业大学提供(https://doi.org/ 10.5281/zenodo.2575599)。VODCA是一种空间分辨率为0.25的全球每日V…

【十一】设计模式~~~结构型模式~~~代理模式(Java)

【学习难度:★★★☆☆,使用频率:★★★★☆】 6.1. 模式动机 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起…

网络流量管理系统

网络监控对于当今的组织至关重要,该过程的一个关键方面是分析网络的正常运行时间、可用性、性能和安全性。随着云和物联网技术越来越多地成为现代 IT 环境的一部分,网络管理员必须更加警惕他们授予访问权限的流量,包括确定谁在使用他们的网络…

【十四】设计模式~~~行为型模式~~~中介者模式(Java)

【学习难度:★★★☆☆,使用频率:★★★★★】 3.1. 模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标&#…

提高测试效率5大捷径

1、优先级 测试任务和开发任务一样,都需要进行优先级排序。在测试工作中,优先进行级别高的测试任务,这样能够在无法保障测试周期的前提下,也不会对整体开发进度造成较大的影响。 提高测试效率5大捷径 2、重视测试策略 测试策略的基…

零代码,使用 Dify 两分钟接入企业微信

前置准备 企业微信的管理员权限 一个 Dify 的帐号 一个 Laf 云的帐号 (可选)一个 OpenAI 的 API Key。如果没有,可以使用 Dify 免费提供的 200 次调用机会用于测试。 (可选)在电脑上新建一个 env.txt 的文件&#…

C++进阶 —— 列表初始化(C++11新特性)

目录 一,列表初始化 二,类列表初始化 三,类模板列表初始化 库模板初始化列表实现 模拟模板初始化列表实现 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C11之前的最新C标准名称&…

神经网络与机器学习

《神经网络与深度学习》 第一章 绪论1.1 人工智能知识结构预备知识顶会论文常用的深度学习框架研究领域 1.2 如何开发AIS芒果机器学习 1.3 表示学习局部表示和分布式表示 1.4 深度学习(Deep Learning) 第一章 绪论 1.1 人工智能 人工智能的一个子领域 神经网络&a…

百度商业AI技术创新大赛火热进行中,携手专家大咖一起创新为更好!

百度商业AI技术创新大赛火热进行中 来自百度、中国人工智能学会 及NVIDIA的专家大咖纷纷送上寄语 希望与充满创新思维的年轻人一起 探讨AI技术的创新应用 挖掘AIGC在商业领域发展的更多可能 开启中国人工智能发展新篇章! -戴琼海- 国务院参事 CAAI理事长 …

分布式锁的应用场景与分布式锁实现(三):基于Zookeeper实现分布式锁

分布式锁的应用场景与分布式锁实现(二):基于Redis实现分布式锁 基于Zookeeper实现分布式锁 ​ 实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。在实现分布式锁…

每日一题——重复的子字符串

每日一题 重复的子字符串 题目链接 注:本题的题解基本建立在KMP算法之上,对KMP算法不太了解的小伙伴可以参考这篇文章KMP算法及其改进图文详解 方法一:移动匹配 我们先来看几个可以由一个字串重复多次构成的主字符串:“aaa”&am…

chatgpt赋能Python-python人脸识别步骤

简介 Python是一种优秀的编程语言,它广泛应用于人工智能、数据科学、Web应用程序开发等领域。其中,人脸识别是Python应用程序中的重要一环。 本文将介绍Python人脸识别的具体步骤,希望对初学者有所帮助。 Python人脸识别步骤 安装必要的库…

销售管理全面指南:职能、流程、目标和工具

销售管理是优化公司销售队伍的过程,以有效利用现有资源来完成交易。对于任何依靠销售来推动收入的企业来说,这是绝对必要的。 销售管理可以细分为三个主要领域:销售运营、销售策略和销售分析。 根据美国营销协会(AMA&#xff…