与H.264/AVC相比,新一代视频压缩标准H.265/HEVC能够在相同的图像质量下实现更低的码率,即更高的压缩比 。由于人眼的视觉特性,在动态码率编码过程中,不同区域的码率分配是研究中的一个关键问题。如果能够在编码过程中将视频划分为感兴趣区域(Region of Interest,ROI)和普通区域,动态调整二者的码率分配,则可以在相同甚至更低的码率下得到更好的主观视频质量,从而增强用户体验 。ROI区域的提取速度和质量对编码算法影响很大,因此实现低复杂度、高质量的ROI区域提取,并针对H.265/HEVC视频编码的自身特点进行码率的分配尤为重要。
将ROI提取及码率分配方法用于JPEG 2000静止图像压缩,提升了ROI区域的图像质量并取得了较好的码率节省效果,并利用FPGA对ROI的提取进行了VLSI硬件设计,从而在不显著提高图像编码时间的前提下得到了满意的效果,但该系统只能用于静止图像编码; 均提出了基于ROI的H.265/HEVC码率控制即压缩性能优化方法,并取得了一定成效。 研究表明虽然H.265/HEVC编码标准已经在一定程度上较H.264/AVC标准降低了码率,但ROI区域码率控制对于最新的HEVC标准同样起作用,但未考虑ROI提取算法复杂度对编码速率带来的影响;文献 利用高斯背景模型建立虚拟背景帧,降低了H.265/HEVC编码的码率,但未考虑针对人眼特性的ROI变质量编码,也未考虑背景帧建立效率对编码器速率的影响。
本文基于视频编码算法分块进行的特点和FPGA的细粒度并行特性,提出了基于块匹配的高斯背景建模-ROI映射方法,并利用HLS工具在FPGA平台上进行了算法的硬件实现与验证。FPGA处理速度达到22 fps@1 080 p,对ROI映射CTU区域进行变质量编码,可得到平均10%左右的码率节省,视频总体质量保持稳定。
1 高斯背景建模及其面向视频编码的改进1.1 基于像素的高斯背景建模的基本原理
高斯背景建模是一种基于概率模型的背景建模方法,传统的高斯背景建模算法是以像素为单位的。数字视频中的一帧图像可以看作是对于时空位置(x,y,t)的二维离散函数f(x,y,t),在给定色彩空间的给定通道下,对于给定的(x0,y0,t0),f仅有唯一值;对于给定的时间t0,f可看成是一个二维随机场,一般认为其为平稳随机场。
从统计学角度来看,前景物体的出现与运动是暂时的、突发性的,而背景则是长期的、具备一定稳定性的,对于时间t来说,给定(x0,y0),f(x0,y0,t)满足一定的概率分布,通常符合高斯分布。
高斯背景模型的表达式为:
1.2 基于块匹配高斯背景建模-ROI映射算法
由原始高斯背景模型的表达式可知,基于像素的高斯背景建模算法需要进行大量的复杂浮点计算,一般要经过数百帧才能完成模型的建立,导致算法耗时很高且不适合进行硬件实现。
高斯背景建模方法仅考虑了同一位置像素点的时间相关性,并且将所有的像素看作是孤立的点,一方面需要进行大量的重复性计算,另一方面在背景产生变化时,会产生“虚警”现象。
视频序列中存在空间冗余、时间冗余和知识冗余等。针对一帧图像空间上的冗余,视频编码算法中采用分块方式进行帧内预测,对预测值与原始值的残差进行变换编码和量化编码,达到视频压缩的目的。
本文使用块匹配方式取代原高斯背景建模的像素匹配和更新方式,提出基于块匹配的高斯背景建模-ROI提取算法。一方面,基于块进行背景建模计算可以避免基于像素算法过程中的大量运算;另一方面,基于块进行高斯背景建模可以将背景建立与视频编码块的划分统一起来。
利用高斯建模建立背景后,将新的视频帧分块,根据SAD判别准则进行前景块与背景块的判定,SAD判别的表达式如式(5)所示。其中B表示已经建立好的背景块,C表示当前视频帧对应位置的像素块,本文中N取8。
其基本步骤描述如下:
步骤1:视频块划分。按N×N尺度将原始视频划分成若干个不相交的子区域。
步骤2:模型初始化。针对分块区域,初始化高斯模型的基本参数μ、σ、λ、α。
步骤3:帧计数判定。读入视频,若视频帧数满足更新周期p,则进入步骤4,否则进入步骤5。
步骤4:模型更新。更新分块背景模型。
步骤5:前背景判定。根据SAD判别准则,划分前景与背景。
步骤6:ROI区域映射。依据前景块分布,对视频中的CTU进行映射。本文中设定HEVC CTU尺度为32×32,映射结果将送入H.265/HEVC编码器。
算法流程如图1所示。
2 基于率失真优化的ROI区域自适应编码
2.1 面向ROI区域的率失真优化
为了降低码率同时达到较好的图像质量,率失真优化可以定义为如下优化问题:在码率R≤Rmax时,通过调整编码算法使得失真D最小,即:
式(8)通常被用作RDO的依据,但事实上往往编码块之间不相互独立,从而导致求得的值为局部最优解。
本文通过ROI区域的划分,假设在一帧中ROI区域与非ROI区域独立同分布,则率失真优化函数可描述为:
由于式(9)考虑到了编码块的相关性问题,能够在一定程度上避免陷入局部最优,分析可知,式(9)将比式(8)得到更优解。
进一步地,从主观视频质量出发,人眼期望ROI区域能够有更好的视频质量,因此,本文在实现过程中加入限制条件:
2.2 集成ROI提取的HEVC编码
本文将ROI区域送入HEVC编码器中进行变质量编码。为了防止ROI区域与周围非ROI区域的编码参数差异过大造成明显的方块效应,本文利用非线性补偿对量化参数进行了调整,具体做法如下。
记ROI区域所在的编码块A的量化参数为q1,在其附近的非ROI区域中编码块B的量化参数为q2,A的中心点坐标记作(xA,yA),B的中心点坐标记作(xB,yB),则q1、q2以及A、B中心位置的汉明距离D应满足如下关系:
3 硬件设计与实现
为了说明本文方法的有效性,将基于块匹配的高斯背景建模-ROI算法进行了硬件实现并嵌入到HEVC编码的过程之中。
本文利用高层次综合(High Level Synthesis,HLS)工具,基于Xilinx MPSoC++平台ZCU102进行了基于背景建模的ROI区域映射与自适应编码的硬件设计。HLS工具可以将C/C++语言的高层次描述映射为硬件描述语言(VHDL或Verilog),提高开发效率。
硬件包括3个模块,分别为:背景建立、背景更新、ROI判定与映射,最终将映射结果送入视频编码器。其基本结构如图2所示。
原始视频数据缓存在DDR中,在FPGA内部通过行缓存加快存取速率,视频数据多路选择器在帧计数器的控制下,将视频送入不同的处理单元,将ROI区域映射到H.265标准中的编码树单元(CTU),映射结果送入H.265编码器。在编码器中,根据区域性质进行ROI自适应的QP调整,最终将编码后生成的码流写回DDR。
4 实验结果与分析4.1 实验环境
本文基于Xilinx ZCU102嵌入式开发平台进行了实验。ZCU102搭载了Zynq UltraScale XCZU9EG-2FFVB1156 FPGA芯片。该芯片内部架构主要包括处理器系统(Processing System,PS)和可编程逻辑(Programmable Logic,PL)两部分。
其中PL端硬件资源消耗情况如表1所示。考虑到一定的伸缩性,硬件设计中图像的分辨率可以进行配置,最高分辨率为1 920×1 080。
4.2 背景建模效果与ROI映射结果
图3为基于FPGA的背景建模和ROI映射结果。所用序列为HEVC标准测试序列BasketballDrill_832×480_50.yuv。图3(a)为视频序列的第201帧,图3(b)为利用前200帧建模得到的背景帧,图3(c)为针对HEVC CTU的映射结果,其中白色区域为映射得到的ROI区域。可以看出视频中运动的人物被准确映射到以CTU大小为边界的区域中。观察原始视频序列可知,原始视频序列中的背景区域随时间变化有变动(如篮筐会随篮球撞击而抖动等),但这些变动并未对ROI区域的映射造成影响(即未出现“虚警”现象),算法具备一定的鲁棒性。
表2为不同分辨率下进行处理的速度对比,PL部分的时钟频率为120 MHz。由表可知本文设计在1 920×1 080的分辨率下仍可达到较高的实时性。
4.3 嵌入ROI码率控制的HEVC视频编码性能评估
为了进一步说明嵌入ROI区域后HEVC编码的有效性,本文对HEVC编码器的编码结果进行了实验验证。分别选取不同分辨率和不同场景下的测试序列,计算总体码率及PSNR的变化情况,结果如表3所示。
从表3可以看出,采用本文提出的背景建模-ROI映射算法进行码率控制,编码后图像总体的PSNR没有较大变化,但是码率有了平均10%左右的节省,从而验证了本文算法在对码率控制的有效性。
5 结论基于视频编码算法分块进行的特点,本文提出一种基于块的高斯背景建模-ROI映射方法,通过HLS方法在FPGA上实现,并用于H.265/HEVC视频编码。实验结果表明,在FPGA平台上该算法运行速度较快,可以有效地集成到H.265/HEVC硬件编码器中;在H.265/HEVC中对提取ROI区域进行变质量编码,可得到平均约10%的码率节省,总体的视频质量保持稳定。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)