HEVC算法和体系结构:预测编码之帧内预测

简介: <p><br></p> <h1 style="text-align:center">预测编码之帧内预测(Intra-Picture Prediction)</h1> <p><br></p> <p>        预测编码(Prediction Coding)是视频编码的核心技术之一,指利用已编码的一个或几个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间


预测编码之帧内预测(Intra-Picture Prediction)


        预测编码(Prediction Coding)是视频编码的核心技术之一,指利用已编码的一个或几个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码。视频编码器对预测后的残差而不是原始像素值进行变换、量化、熵编码,由此大幅度提高编码效率。


        对于视频信号来说,一帧图像内临近像素之间有着较强的空间相关性,即空域冗余;相邻图像之间也有很强的相关性,即时域冗余。去除空域冗余和时域冗余的技术分别是帧内预测技术和帧间预测技术。


        本博文首先介绍预测编码的原理,其次重点分析帧内预测技术相关知识点。


一、预测编码的原理


        我们可以简单地将视频当做是一种有记忆信源,预测编码通过预测模型消除像素间的相关性,得到的差值信号可以认为是没有相关性的,因此可以作为无记忆信源进行编码。


        在预测编码时,不直接传送图像样值本身,而是对实际样值与它的预测值间的差值进行编码、传送,如果这一差值(预测误差)被量化后再编码,这种预测编码方式叫做差分脉冲编码调制(DPCM)。从统计上看,需要传输的预测误差主要集中在0附近的一个小范围内,由于人眼的“掩蔽效应”,对出现在纹理或运动较复杂区域的较大误差不易察觉,因此,预测误差量化所需要的量化层数要比直接传送图像样值本身减少很多。DPCM就是通过去除临近像素间的相关性和减少差值信号量化层数来实现码率压缩的。


预测差分编码的原理框架如下图所示,在预测编码系统中,预测器和量化器是非常关键的两部分。




        预测编码的基本过程:对于输入像素值x(n),首先利用已编码像素的重建值得到当前像素的预测值p(n),然后对二者的差值e(n)进行量化、熵编码,同时利用量化后的残差e’(n)与预测值p(n)得到当前像素的重建值x’(n),用于预测之后待编码的像素。对应的解码过程为:经熵解码可以得到当前像素预测误差的重建值e’(n),将其与预测值p(n)相加即可得到当前像素的重建值x’(n)。


        为了保证编码器和解码器中预测有完全相同的参考基准,在利用空时域相关性进行预测时,需要用含失真的解码像素x’(n)作为参考像素,从而避免编码器和解码器中因不同预测参考产生误差累积,也就是说,在编码器内部需要内嵌一个解码器。


二、帧内预测技术


        视频序列的时域相关性往往大于空域相关性,所以帧间预测技术的贡献往往大于帧内预测技术,但是这并不意味着可以对所有视频帧都采用帧间预测技术进行预测编码,其原因主要包括:

(1)、几乎所有的视频编码标准都支持I帧,这一帧可以不依赖临近参考帧进行独立解码,这一特点使得视频应用可以支持快进或快退播放,同时还避免了因编码失真累积而导致的图像逐渐恶化以及后续图像运动预测的效果逐渐恶化。

(2)、基于刚体平动的模型并不适用于所有场景,因为实际中的视频序列的运动是非常复杂的,尽管可变大小块分像素运动预测在一定程度上改善这一不足,但是还是有部分宏块或块不能获得很好地运动预测效果,而这些区域空间相关性也许比时域相关性强,采用帧内预测的预测效果往往好于帧间预测效果。研究表明,P帧和B帧中也有少数比例(1%~3%)的宏块实际上采用了帧内预测模式。


1、HEVC与H.264在帧内预测编码时尺寸、预测模式种类的区别


        HEVC帧内预测与H.264类似,都是利用相邻块的重建值进行预测,因此,编码模式的选择与编码是帧内编码需要重点解决的问题。HEVC与H.264在帧内预测上最大的不同在于:HEVC采用了更大更多的尺寸以适应高清视频的内容特征,支持更多种的帧内预测模式以适应更加丰富的纹理。


        H.264一共规定了3种大小的亮度帧内预测块:4*4、8*8和16*16,色度分量的帧内预测块都是基于8*8大小的块进行的。其中,4*4和8*8大小的亮度块包含9种预测模式(垂直、水平、DC、左下对角线模式、右下对角线模式、垂直向右模式、水平向下模式、垂直向左模式和水平向上模式),而16*16大小的亮度块和8*8大小的色度块只有4种预测模式(DC、水平、垂直和Plane)。需要注意的是“4*4和8*8大小的亮度块支持的9种预测模式”与“16*16大小的亮度块和8*8大小的色度块只支持的4种预测模式”二者模式编号顺序是不同的。


        HEVC亮度分量帧内预测支持5种大小的PU(Prediction Unit):4*4、8*8、16*16、32*32、64*64,其中每一种大小的PU都对应35种预测模式,包括Planar模式、DC模式以及33种角度模式,如下图所示。对于色度分量,支持PU的大小为4*4/8*8/16*16/32*32,一共有5种模式,即Planar模式、垂直模式、水平模式、DC模式以及对应亮度分量的预测模式,若对应亮度预测模式为前4种中的一种,则将其替换为角度预测中的模式34。




        总而言之,当预测模式选择为帧内时,对于所有的块尺寸,PB尺寸与CB尺寸相同。对于最小的CB尺寸,存在一个标志,用于表明CB是否被分成4个PB,每个PB均有自己的帧内预测模式,采用这种分割方式的原因是能为4*4大小的块选择帧内预测模式,当亮度的帧内预测模式以4*4大小块进行处理时,色度的帧内预测也采用4*4块。


        所有的预测模式都使用相同的模板,如下图所示。从图中我们可以看出,与H.264相比,HEVC增加使用了左下方块的边界像素作为当前块的参考。这是由于H.264以固定大小的宏块为单元进行编码,在对当前块进行帧内预测时,其左下边方块很有可能尚未进行编码,无法用于参考,而HEVC的四叉树编码结构使得这一区域成为可用像素。




2、帧内预测过程


        在HEVC中,35种预测模式是在PU的基础上定义的,而具体帧内预测过程的实现则是以TU为单位的。HEVC规定PU可以以四叉树的形式划分TU,且一个PU内的所有TU共享同一种预测模式。


        HEVC的帧内预测过程可分为以下三个步骤:

(1)、相邻参考像素的获取

        如下图所示,当前TU的大小为N*N,其参考像素按区域可分成5部分,左下、左侧、左上、上方和右上,一共4*N+1个点,若当前TU位于图像边界或Slice、Tile边界,则相邻参考像素可能会不存在或不可用,并且在某些情况下,左下或右上所在的块可能尚未编码,此时这些参考像素也是不可用的。当像素不存在或不可用时,HEVC规定了可以使用最邻近的像素进行填补,例如左下的参考像素不存在,则左下区域的所有参考像素可使用左侧区域最下方的像素进行填补,若右上区域的参考像素不存在,则可以使用上方区域最右侧的像素进行填补(如下图中右侧示例)。需要说明的是,若所有参考像素都不可用,则参考像素都用固定值填充,对于8比特像素,该预测值为128,对于10比特像素,则该预测值为512。




(2)、参考像素的滤波

        H.264在帧内预测时对某些模式下的参考像素进行了滤波,以便更好地利用临近像素之间的相关性,提高预测精度。HEVC沿用这一方法并进行了拓展:一是针对不同大小的TU选择了不同数量的模式进行滤波;二是增加使用了一种强滤波方法。


(3)、预测像素的计算

        预测像素的计算就是针对不同的预测模式采用不同的计算方式得到预测像素值。

目录
相关文章
|
4月前
|
算法 5G vr&ar
基于1bitDAC的MU-MIMO的非线性预编码算法matlab性能仿真
在现代无线通信中,1-bit DAC的非线性预编码技术应用于MU-MIMO系统,旨在降低成本与能耗。本文采用MATLAB 2022a版本,深入探讨此技术,并通过算法运行效果图展示性能。核心代码支持中文注释与操作指导。理论部分包括信号量化、符号最大化准则,并对比ZF、WF、MRT及ADMM等算法,揭示了在1-bit量化条件下如何优化预编码以提升系统性能。
|
4月前
|
算法
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
|
5月前
|
机器学习/深度学习 存储 算法
编码之舞:从算法到应用的探索之旅
在数字化时代的浪潮中,编程技术如同一种语言,连接着人类与机器。本文将带领读者踏上一场自数据结构基础至高级算法应用的探索旅程,通过实际案例分析,揭示算法在现代软件开发中的重要作用,并分享作者在编程实践中的心得体会,旨在为初学者和资深开发者提供有价值的参考与启示。
|
5月前
|
机器学习/深度学习 算法 计算机视觉
通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法
摘要: 使用MATLAB2022a对比了二进制编码与实数编码的遗传优化算法,关注最优适应度、平均适应度及运算效率。二进制编码适用于离散问题,解表示为二进制串;实数编码适用于连续问题,直接搜索连续空间。两种编码在初始化、适应度评估、选择、交叉和变异步骤类似,但实数编码可能需更复杂策略避免局部最优。选择编码方式取决于问题特性。
|
6月前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。
|
6月前
|
算法 C++
【洛谷 P1090】[NOIP2004 提高组] 合并果子(贪心算法+哈夫曼编码+优先队列)
该编程题目要求设计算法,将不同种类的果子合并成一堆,使得消耗的体力最小。给定果子种类数`n`(1至10000)和每种果子的数量,需输出合并的最小体力值。使用优先队列(最小堆),每次取出两个数量最少的果子堆合并,并更新总体力消耗。样例输入为3种果子(1, 2, 9),输出最小体力耗费为15。提供的AC代码采用C++实现,通过优先队列优化合并顺序。
82 0
|
7天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
13天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
9天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。