一种图像的帧内预测算法
技术领域
本发明涉及视频数据处理领域,更具体的说,涉及一种图像的帧内预测算法。
背景技术
现有的视频编码直接对图像进行标准的帧内预测,视频的每个图像都包括多种预测模式和预测方向,需要对每种预测模式和预测方向都进行计算,以便得出最佳预测模式。现有的预测方式计算量大,增加处理器负担,不利于提高运算速度。
发明内容
本发明所要解决的技术问题是提供一种降低计算量的图像的帧内预测算法。
本发明的目的是通过以下技术方案来实现的:
一种图像的帧内预测算法,包括步骤:
将图像分成至少两个图层,任意两个图层之间的分辨率不同,
选择分辨率较低的图层做标准的帧内预测;
根据已预测的图层得到的预测结果,对分辨率较高的图层进行预测。
进一步的,所述预测结果包括预测模式和预测方向。由于不同图层都是基于同样的画面,虽然分辨率不同,但图像结构是一致的。因此,分辨率较低图层的预测模式和预测方向对分辨率较高图层的预测有重要的价值。
进一步的,先对分辨率最低的图层做标准的帧内预测:将图像划分成多个像素矩阵,以像素矩阵为基本预测模块,计算每个预测模块的残差值;
分析每个预测模块的残差值在该图层空间中的分布,得到预测模式或预测方向中的任意一种或两种,对下一个分辨率更高的图层进行帧内预测。选择分辨率最低的图层,其帧内预测的计算量最低,因此能进一步降低运算量,提高数据处理速度。
进一步的,所述已预测的图层得到的预测模式包括最优和次优模式;分别以已预测的图层的最优和次优预测模式对分辨率较高的图层进行预测,得到最佳预测模式。上一图层毕竟是较原始图像分辨率低的数据,因此得到的是一种粗略的模式估计,有可能需要在高分辨率图层中进行修正。若只传最优的结果给下一图层,有一定概率是估计失准的。同时把次优传给下一图层作初始估计,是一种冗余设计策略。这样,到下一图层,基于两个初始估计模式来进行实际的计算,选择真正的最优。也就是说,有一定概率,在低分辨率图层中的估计的次优结果,到了高分辨率图层中反而是最终的最优。
进一步的,分别以已预测的图层的最优和次优预测模式及其对应的预测方向,对分辨率较高的图层进行预测,得到最佳预测模式和预测方向。图层预测包括预测模式和预测方向,因此将已经预测好的图层的预测模式和预测方向反馈给其他图层,可以进一步减少计算量。
进一步的,假设分辨率较低图层反馈的预测模式为X×X像素矩阵,则较高分辨率图层分别按照X×X~aX×aX的像素矩阵进行预测,得到最优的预测模式;
其中a为自然数,且aX×aX界定的像素矩阵不超过视频编码标准规定的最大范围。
进一步的,第一个图层的分辨率最低,后面的图层分辨率依次递增,
先对第一个图层做标准的帧内预测:将图像划分成多个像素矩阵,以像素矩阵为基本预测模块,计算每个预测模块的残差值;
分析每个预测模块的残差值在该图层空间中的分布,得到最优和次优的预测模式及其预测方向;
假设第一图层最优预测模式为X×X像素矩阵,次优预测模式为最优预测模式为Y×Y像素矩阵;则第二图层分别按照X×X~aX×aX、Y×Y~bY×bY的像素矩阵进行预测;然后比较得出第二图层的最佳预测模式和预测方向;
依次类推,根据分辨率较低的上一图层得到的最优和次优预测模式及其对应的预测方向,对下一层分辨率较高的图层进行预测,得到最佳预测模式和预测方向,直至预测完最后一个、分辨率最高的图层;
其中a、b为大于1的自然数,且aX×aX、bY×bY界定的像素矩阵不超过视频编码标准规定的最大范围。
进一步的,每一图层的预测基于分辨率最接近图层的预测结果。两个图层的分辨率越接近,则一个图层得到的预测结果对另一个图层的参考价值越大,及误判的概率越低,对精度影响也越小。
进一步的,选择分辨率最低的图层做标准的帧内预测;基于该图层得到的预测结果,分别对其他图层进行帧内预测。选择分辨率最低的图层做标准的帧内预测,计算量也最小,而基于同一个图层的预测结果预测其他图层,可以采用并行运算的方式,同时进行预测,能显著提高运算效率。
进一步的,利用GPU对每个图层进行帧内预测,然后将预测结果反馈回CPU进行编码处理。本技术方案采用CPU+GPU平台,充分发挥各个平台的优点,让CPU和GPU协作处理,提高了平台的运算效率。
本发明由于将图像、视频数据按不同分辨率进行分层处理,形成一个图像金字塔结构。预测时,先对分辨率较低的图层进行预测,然后根据预测结果来预测分辨率较高的图层,最终可以得到分辨率最高的图层预测结果。由于先预测分辨率较低的图层,大幅减少了运算量,而基于较低图层的预测结果来预测其他图层的计算量在整个编码过程中占比很小,因此相比直接预测最高分辨率的图层,本发明能显著降低计算量。而且本发明能产生多种分辨率的图像数据,可以根据不同的网络环境选择不同分辨率的图像数据,通用性也更好。
附图说明
图1是本发明图像帧内预测算法的方法示意图;
图2是本发明金字塔建模原理示意图;
图3是本发明实施例基于CPU+GPU架构的图像帧内预测的方法示意图。
具体实施方式
如图1所示,本发明公开一种图像的帧内预测算法,包括步骤:
将图像分成至少两个图层,任意两个图层之间的分辨率不同,
选择分辨率较低的图层做标准的帧内预测;
根据已预测的图层得到的预测结果,对分辨率较高的图层进行预测。
本发明由于将图像、视频数据按不同分辨率进行分层处理,形成一个图像金字塔结构。
一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低的图像集合。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。当向金字塔的上层移动时,尺寸和分辨率就降低。因为基础级J的尺寸是2^J*2^J或N*N(J=log2N),所以中间级j的尺寸是2^j*2^j,其中0<=j<=J。完整的金字塔由J+1个分辨率级组成,由2^J*2^J到2^0*2^0,但大部分金字塔只有P+1级,其中j=J-P,…,J-2,J-1,J,且1<=P<=J。也就是说通常限制它们只使用P级来减少原始图像近似值的尺寸。例如,一幅512*512图像的1*1或单像素近似值将非常小。
图2显示了一个建立图像金字塔的简单系统。j-1级的近似输出用来建立近似值金字塔,包括原始图像的一个或多个近似值。作为金字塔的原始图像和它的P级减少的分辨率近似都能直接获取并调整。j级的预测残差输出用于建立预测残差金字塔。这些金字塔包括了原始图像的J-P级低分辨率的近似信息,以及建立P级较高分辨率的近似信息。j级的信息在相应近似金字塔的j级近似与基于j-1级预测残差得到的近似估计之间是不同的。对这些差异进行编码(用于存储或传输)将比对近似值进行编码有效得多。
预测时,先对分辨率较低的图层进行预测,然后根据预测结果来预测分辨率较高的图层,最终可以得到分辨率最高的图层预测结果。由于先预测分辨率较低的图层,大幅减少了运算量,而基于较低图层的预测结果来预测其他图层的计算量在整个编码过程中占比很小,因此相比直接预测最高分辨率的图层,本发明能显著降低计算量。而且本发明能产生多种分辨率的图像数据,可以根据不同的网络环境选择不同分辨率的图像数据,通用性也更好。
下面结合附图和较佳的实施例对本发明作进一步说明。
本实施方式公开一种基于CPU+GPU架构的硬件平台实现图像的帧内预测算法的技术方案,利用GPU对每个图层进行帧内预测,然后将预测结果反馈回CPU进行编码处理。采用CPU+GPU平台,充分发挥各个平台的优点,让CPU和GPU协作处理,提高了平台的运算效率。
如图3所示,本实施例以三个图层为例,公开一种图像的帧内预测算法,包括步骤:
S1:将图像分成三个图层,分辨率从低到高分别是第一图层、第二图层、第三图层;
S2:先对第一个图层做标准的帧内预测:以4×4的像素矩阵为基本预测模块,计算每个预测模块的残差值;
S3:分析每个预测模块的残差值在该图层空间中的分布,得到最优和次优的预测模式及其预测方向;
S4:假设第一图层最优预测模式为4×4像素矩阵,次优预测模式为最优预测模式为16×16像素矩阵;则第二图层分别按照4×4~8×8、16×16~32×32的像素矩阵进行预测;然后比较得出第二图层的最佳预测模式和预测方向;
S5:依次类推,根据第二图层得到的最优和次优预测模式及其对应的预测方向,对第三图层进行预测,得到最佳预测模式和预测方向。
由于有了上一图层的最后预测结果有预测方向,所以下一图层不需要计算所有的预测方向,只是根据上一图层的预测方向,只做有限个预测方向,让所有预测方向都靠近上一图层的最终预测方向.
由于有了第一层4×4像素矩阵分析出来的纹理特征,所以,我们不需要做所有模块的预测,只需要针对第一层纹理来分割的最适合预测的模块即可。因此,本实施方式不但节约了大量的计算量,同时对精度影响也比较小,试验表明,针对标准的帧内预测,PSNR差异在0.1db以内。
本实施方式采用三层的金字塔图层,是因为每层都能更好保留图像信息,同时也为后续操作节约了计算量。图层数量减少可以降低计算量,而增加图层数量则可以提高精度,降低PSNR差异;因此具体建立多少图层应该根据应用场合来确定。
本实施方式提供技术方案中,每一图层的预测基于分辨率最接近图层的预测结果。因此,必须预测出上一层分辨率较低的图层以后,才能预测下一层分辨率较高的图层,这是一种递进的、串行的运算方式。
为了进一步提高运算效率,还可以在得到分辨率最低图层的预测结果后,基于该预测结果同时预测其他图层,这样就能并行运算,缩短运算时间。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。