低码率压缩

2024-07-30

低码率压缩(精选5篇)

低码率压缩 篇1

0 引言

新一代视频压缩标准H.264由于采用了很多新技术[1],使其编码性能要远远优于其他标准,但是在低码率条件下,其结果却不尽如人意,比如在较窄的带宽中传输高清视频流,压缩比非常高,必须对现有的压缩方法进行改进,并且由于H.264编码过程较为复杂,基于这一标准的实时编解码技术面临着巨大的挑战,对于高分辨力图像更是很难做到实时,因此如何提高H.264的编码效率和编码速度是制约其发展的瓶颈。

基于DSP的视频压缩具有易扩展、方便更改、成本低的特点,是一种较好的解决方案,但是由于耗时的问题,使得视频压缩方法在DSP上实现时具有较大的困难[2,3],尽管TI推出了基于C64x+内核的DSP,D1分辨力的H.264实时编解码技术在单片DSP上实现已成为可能[4],但是由于高清格式视频压缩的实现困难,目前还没有在单核上实现的案例[5]。笔者针对低码率条件下的H.264视频压缩,提出了一种基于C64x+内核实现高清720p@25 f/s的H.264视频压缩方法,该方法大大减少了算法的计算量,提高了计算速度。实验结果表明,在低码率下,PSNR及人眼主观感觉上都远优于原标准。

1 视频质量评价方法

视频质量的评定主要有主观评定和客观质量评定两种估计方法。主观评定取决于个人的视觉系统以及对视频内容的熟悉程度,需要足够多的样本,通常需耗费较多的人力和时间,除非图像质量相差非常明显,否则很难得到确切的结果;客观质量评价主要是采用数学的方法反映图像质量的变化,笔者将使用PSNR作为客观评价标准,定义为

式中:(2n-1)2为图像中最大可能的信号值平方,n为每个像素的比特数,MSE为原始图像和编码后图像之间的均方误差,定义为

式中:f0(x,y)和f(x,y)分别为原始图像和压缩之后的图像在(x,y)处的灰度值,M,N为整幅图像的像素数。

2 H.264结构

H.264编码算法总体上分为视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstraction Layer,NAL)。视频编码层是视频处理的核心,完成对视频有效数据的描述;网络适配层主要是实现在不同网络应用中的数据打包。H.264的视频编码层框图如图1所示[6],其方法和H.263等视频压缩标准类似,都是基于块的混合编码方法。

尽管H.264和其他视频压缩标准的主要结构相似,但是由于使用了许多特殊的数据处理方法,使得编码效率有了很大的提高,主要体现在帧内预测、帧间预测、熵编码、整数变换、量化和扫描等[7]。

3 全零块的提前预测算法

H.264帧间编码需要对残差块数据进行整数变换和量化,耗时较多,原标准中执行流程如图2a所示。很多情况下,特别是压缩比较大时,残差块的绝对值一般较小,经量化后系数大多为0,如果在变换和量化前就可以正确判决出全零块,可以避免后续的变换、量化以及反变换、反量化等运算过程,节省运算时间,如图2b所示。文献[8-10]都对这一问题进行了改进,但是都是基于4×4块进行的判断,笔者将参考的方法进行改进,提出了降低全零块漏判率的判决条件

式中:L=15+Qp/6,QM=Qp%6(QM为量化步长,Qp为量化参数,Qp每增加6,QM加倍),A(QM,u,v)为量化参数矩阵,A(QM,0,0)为量化矩阵的最大值。该判据在一定程度上解决了全零块判断的问题,但是并未从提高量化及变换速度的角度出发,运算时不能充分发挥DSP的性能,结合图2b提出了新的全零块预测方法,即判断16×16块是否为全零块。如果将计算出的阈值乘以16作为新判据的阈值,在判断出的16×16全零块内部可能存在非全零的4×4块,从而导致误判。经实验测试表明,16×16块的阈值按量化步长增幅的12.5%来递增,当Qp=0时,初始阈值为13,从而每一个Qp对应的阈值为13×(1+0.125)Qp。在量化步长为29~47区间,采用720p25_rush_hour.yuv测试的准确性,零块检出率和零块预测错误的比例如表1所示,在预测模式选择或者运动估计过程中16×16块的SAD(Sum of Absolute Differences)已经被计算,不会增加额外的运算时间。

在低码率条件下,即量化步长较大时,按照提出的零块提前预测方法将会取得非常好的效果,在DSP中测试发现可以减少15%~25%的计算量。

4 硬件实现

在硬件实现时,首先将YUV视频数据通过千兆网络从PC端传到DSP中,然后在DSP中对数据进行抽样、编码,最后把数据回传到主机,具体实现过程为:

1)YUV视频数据抽样方法

读入的720p YUV 4∶2∶0的高清数据流首先进行抽样,由于编码是基于16×16宏块,抽样后的图像分辨力必须被16整除。方法如图3a所示,抽样只保留图中黑色的点,水平方向和竖直方向以二抽一的方式进行抽样,保留中间16行,抽样后图像尺寸为640×368。色度分量也作相应的抽样,如图3b所示,抽样后为320×184。

2)压缩算法的DSP移植及优化

算法的DSP移植主要包括更改数据输入输出接口及配置硬件资源。对于输入输出接口,源程序使用fread和fwrite函数来读取和保存数据,通过JTAG口操作,速度较慢,采用网口对数据进行读入和保存。程序执行流程如图4所示,定义了两个任务,一个负责数据的读入和保存,另一个负责完成编码,任务之间的通信使用旗语信号量来实现。

程序优化分为3步:

(1)存储及cache优化。TMS320C6455具有高速的两级缓存结构,内部一级缓冲L1P SRAM和L1D SRAM分别有32 kbyte,全部设置为cache。内部RAM有2Mbyte,可以设置为SRAM,cache或部分cache和部分RAM。通过分析数据、程序的大小以及耗时的影响,从内部L2 SRAM中分配64 kbyte用作二级cache。占用空间相对较小的程序段放入内部SRAM,原始视频数据和参考帧数据相对较大,放于外部DDR2存储器中。在内部RAM中开辟双缓冲区用作ping-pong操作,编码前将需要的数据搬移到缓存区,以减少L2 miss[]。

(2)程序级优化。使用CCS的profiler工具或直接调用芯片的timer模块来测试并记录函数的执行时间,将程序中的耗时部分用内联函数、线性汇编等优化以提高速度。H.264压缩标准中运动估计、整数变换、反整数变换、量化、反量化、帧间预测插值等是最耗时的部分,将其用线性汇编优化,如耗时比例较大的运动估计中SAD的计算,可以采用SUBABS4和DOTPU4指令[11,12]实现,如图5所示。

(3)编译选项优化。设置-pm,-o3,-mt等选项编译程序。经过以上3步优化编码速度可以达到25 f/s(帧秒)以上。

3)视频接收端的解码和图像插值过程

PC端程序从网络接收编码后视频流,解码生成640×368分辨力的YUV视频流,再经过像素插值恢复为1 280×720的视频并显示。插值过程和抽样相反,参考图3,在黑色点已知的条件下,补充白色的点。水平插值时,每行的后一个像素值直接拷贝前一个像素值,竖直插值时亮度数据除中间的16行不需插值外,其他行间隔拷贝上一行的数据,色度插值时中间8行不需插值。

5 实验结果

主机端配置为E5300 CPU双核2.6 Gbyte,内存2 Gbyte,编码端采用TMS320C6455 DSP,对720p25_rush_hour.yuv和720p25_riverbed.yuv各选取连续100帧图像做测试,均采用IPPP编码模式。PSNR和码率的统计关系如图6所示,可以看出在低码率条件下,本文算法处理效果要明显优于原标准算法,特别是对于720p25_riverbed.yuv视频,由于图像细节较多,本文算法和原标准算法的交点位置的码率更高,即在高复杂度的视频处理上,本文算法较原标准算法优势更明显。

对于720p25_rush_hour.yuv视频,在码率为452.6 kbit/s条件下,选取连续100帧,分别使用原标准算法和本文算法进行压缩,抽取第95帧图像进行比较,如图7c和7d所示。原H.264标准压缩后,有大面积的模糊块,图像的很多重要信息丢失,如车牌号等,本文方法在主观感觉上明显优于原标准算法,且原标准处理后YUV分量平均PSNR为29.86/39.49/39.41,本文方法平均PSNR为33.07/40.52/40.39,原标准要获得和本文方法相同的主观感觉,码率需设置约在800 kbit/s,如图7b所示。

6 小结

在低码率条件下,结合DSP的特点对H.264压缩标准进行了结构上的调整及算法上的改进,在单核上实现了高清视频的实时编码,结果表明改进后的算法能够更充分发挥DSP并行计算的性能,编码速度有了较大提高,图像质量在客观指标及主观感觉都远优于原H.264压缩标准,对于带宽较窄条件下的低码率实时高清视频编码具有一定的参考意义。

参考文献

[1]Joint Video Team(JVT)of ISO/IEC MPEG&ITU-T VCE,Study of final committee draft of joint video specification final committeedraft[S].2002.

[2]王强,卓力,沈兰荪.基于DSP平台的H.264编码器的优化与实现[J].电子与信息学报,2007,29(12):2970-2973.

[3]李小红,蒋建国,齐美彬,等.基于DSP的H.264关键模块技术的研究及实现[J].仪器仪表学报,2006,27(10):1330-1333.

[4]韩文俊,张艳艳,任国强,等.基于TI C64x+内核DSP的H.264压缩关键模块优化[J].电视技术,2010,34(3):28-30.

[5]韩文俊,张艳艳,任国强,等.基于双DSP的实时高清H.264视频编码器实现[J].电视技术,2010,34(5):33-35.

[6]WIEGAND T,SULLIVAN G J,BJONTEGAARD G,et al.Overviewof the H.264/AVC video coding standard[J].IEEE Trans.Circuitsand Systems for Video Technology,2003,13(7):560-576.

[7]余兆明,查日勇,黄磊,等.图像编码标准H.264技术[M].北京:人民邮电出版社,2006.

[8]MOON Y H,KIM G Y,KIM J H.An improved early detectionalgorithm for all-zero blocks in H.264 video encoding[J].IEEETrans.Circuits and Systems for Video Technology,2005,15(8):1053-1057.

[9]SU C Y.An enhanced detection algorithm for all-zero blocks inH.264 video coding[J].IEEE Trans.Consumer Electronics,2006,52(2):598-605.

[10]沈礼权.高效视频编码的算法优化及其扩展研究[D].上海:上海大学,2008.

[11]TMS320C64x+DSP cache user's guide[EB/OL].[2010-02-09].http://focus.ti.com/lit/ug/spru862b/spru862b.pdf.

[12]TMS320C64x/C64x+DSP CPU and instruction set reference guide[EB/OL].[2010-02-09].http://www.mechcore.net/files/docs/n900/spru732h.pdf.

一种低复杂度低码率视频压缩方案 篇2

数字视频具有海量数据的特点:CIF格式的24位真彩色视频图像, 当帧率为30 fps时, 每秒的数据量高达352×288×24×30=73 MB;HDTV每秒的数据量则可高达1.5 GB。视频的海量传输要求与现有无线/IP网络的低承载能力、现有处理器的处理能力与高复杂度的视频压缩算法、旺盛的市场需求和广泛的应用前景等, 给视频压缩及传输带来了前所未有的挑战和机遇, 决定了高效压缩编码技术是多媒体业务发展最为重要的关键技术[1], 也导致了视频信息处理与通信成为当前信息技术的研究热点。

虽然视频信息数据量巨大, 但这些数据间存在的高度相关性决定了其含有大量的信息冗余。视频编码的本质就是尽力剔除原始视频数据中的各种冗余信息以尽量提高压缩比。

视频压缩高效编码的理论与技术方面, 2003年推出的H.264/AVC及随后2007年的H.264/SVC是当今视频编码的主流标准, 也是无线视频通信系统的最佳选择。因为它比H.263+和MPEG-4减小了50%码率[2], 提高了网络适应性, 且在编/解码器中采用复杂度可分级设计。但这些优越性能的获得, 是以计算复杂度的大大增加为代价的。据估计, 编码器的计算复杂度较MPEG-4/H.263增加了约10倍, 解码器增加了2至3倍[2]。高效算法的研究是降低复杂度的主要方法。目前, 算法级降低复杂度的研究主要集中在占编码复杂度主要部分的预测模块和DCT (离散余弦变换) 变换量化模块两部分。

低码率视频压缩中, 当相邻块量化步长相差较大时, 重构图像不可避免地易出现方块效应、飞蚊噪声 (环效应) 、基图像贯穿效应和抖动效应等扭曲现象, 使得图像质量下降[3]。扭曲现象尤其是块效应, 严重影响了重构图像的视觉效果。且这些扭曲效应还会影响运动估计和运动补偿的效率, 即当编码器用这种带有严重扭曲现象的重构帧做后续帧的参考帧时, 扭曲的参考帧不但会影响运动估计的准确性, 同时还加大了运动补偿残差信息的数据量, 从而导致编码压缩效率下降。消除块效应, 目前较常用且有效的主要有两种:后处理与环滤波。两类滤波的区别在于滤波器的位置、滤波的具体方法及其实施时间等。

输入压缩编码系统的源图像也因各种原因如图像捕获及模数转换等环节而引入噪声。不但给视频图像带来很多噪声点而影响主观质量, 也将导致编码时运动搜索的准确性和因DCT变换后的高频系数增大而导致的压缩码流增加, 降低编码效率。

所以低码率实时视频压缩关键技术就是研究出具有较好的视频质量、更低复杂度和更高压缩比的视频编码算法。主要体现在如何设计预处理算法和低复杂度的压缩算法上。

1 系统方案

低码率低复杂度高质量视频压缩方案由预处理、快速运动估计算法、快速DCT变换与量化等三部分组成, 如图1所示。

2 预处理抑制图像噪声与块效应

传统抑制图像噪声与块效应的方法是, 对于源噪声采用空域滤波法, 对于块效应则采用环路或后处理去方块效应方案。本文的预处理主要是抑制或改进输入视频序列的一些不理想特征, 使编码效率得到提高, 如编码前的输入帧经过噪声过滤, 使运动估计过程得到更高的精度, 从而产生较明显的改善效果, 或根据码率约束对不重要细节的滤除以对输入帧进行平滑等, 使其更有利于压缩, 从而提高压缩比等。通过分析降噪的基本原理、低码率视频应用中块效应产生的原因和去块效应的常用方法, 从滤除不需要或相对不重要的高频DCT系数角度上提出了降噪和去块效应是一致的理论, 从而为可通过预处理除噪和降低待编码视频图像的复杂度的方法来避免块效应的产生奠定理论基础。即本文的预处理是根据图像纹理特性, 运动情况和码率约束等, 在图像的不同区域采用不同强度的时空域滤波器。这样不仅去噪, 滤除不重要的细节以便于高效压缩, 避免块效应产生, 同时也可起到一定程度的码率控制效果。

其实现框图如图2所示:用Sobel边缘检测算子进行边缘检测和梯度分析, 然后对与原始图像相对应的梯度映射图进行腐蚀操作以消除因孤立噪声而产生的梯度点, 进行膨胀操作将梯度点对应的边缘连接起来;做运动检测以估计图像的运动区域;根据码率、梯度和运动特性选择适当强度的双边滤波器进行滤波;双边滤波器的两个参数为灰度差信息和距离信息。滤波时采用5×5的窗口进行周围像素点的搜索, 根据滤波强度、灰度差和距离, 设计像素点X的滤波强度, 完成双边滤波, 即当前像素点X的灰度值Y'可以按照下式计算:

其中Yx为点X被噪声污染后的灰度值, Wsx、Wrx分别为灰度权系数和距离权系数。U&V分量双边滤波也同上。具体推导过程请参见文献[4]。

3 全零块预判复杂度降低研究

DCT变换和量化模块的计算复杂度是预测模块外最高的, 占编码器的计算复杂度的10%至20%[2]。基于全零系数块预判的编码器流程如图3所示。在DCT变换前, 当预判在当前QP下DCT变换量化后其系数均为零时, 就可跳过DCT与量化操作直接进行熵编码, 从而降低算法复杂度。显然这种预判算法的复杂度不能太高, 至少因预判算法增加的计算量不能大于因跳过DCT和量化操作所减少的计算量 (对整幅图像或整个序列而言) ;其二是:预判算法如产生误判, 对重构图像质量的影响不能太大, 否则该算法无实用价值;衡量该类算法的效率就是漏判率 (或检出率) 。在对视频质量影响极小的前提下, 漏判率越低 (或检出率越高) 则该算法的效率越高。进一步分析可以发现:预判算法的检出率和实际全零块比例均随量化步长增大而提高。所以, 低码率视频编码应用中, 预判算法对降低DCT变换量化模块的复杂度更为显著。

从DCT和量化的原理及视频残差块的特点出发, 人们相继提出了全变换DCT快速算法[5]、部分变换DCT快速算法[6]和全零DCT系数块预判算法等降低该模块复杂度的方法。其中前两者已基本走向成熟, 且基于对低码率视频压缩中大部分残差块量化后的DCT系数为全零这一事实, 因而对全零DCT系数块预判算法成为对该模块算法复杂度降低的研究热点。Yu、周漩和Sousa[7,8,9,10]在寻找预判阈值的研究过程中, 已充分挖掘了DCT公式的特点和充分考虑了残差块的一阶统计特性 (如:绝对和或和的绝对值) , 没有找到很有效的方法;为进一步提高全零DCT系数块的检出率, 还必须利用残差帧的其它信息。从DCT变换来看, 影响F (u, v) (F (u, v) :二维DCT变换系数, 其中 (u, v) 表示坐标位置的只有DCT公式和残差块的值, 前面的研究已充分考虑了DCT公式的特点和一阶统计特性。为了进一步提高检出率, 同时考虑到精度和复杂度的折中, 可用的还有DCT系数的分布特征。大量实验表明, 由于实际图像视频内容的复杂性, 变换系数分布并不确定地服从某种分布规律, 且DCT系数F (u, v) 本身的分布与量化后的Z (u, v) (Z (u, v) :二维DCT变换系数F (u, v) 的量化值, 其中 (u, v) 表示坐标位置) 的分布还不能保证严格一致。扬弃已有全零DCT系数块预判算法仅根据DCT公式的缺点, 从全零DCT系数块预判的本质出发, 考虑残差块的一阶和二阶统计特性及DCT系数分布模型, 对适用于H.264/AVC编码的全零块判别准则进行了分析研究, 本文采用了基于DCT系数模型的全零DCT系数块的预判算法。考虑到H.264整数DCT变换和量化的特点, 可以得到判别公式如下:

其中量化步长QStep与H.264的量化参数QP的关系为QStep=0.625×2QP/6, N为图像块的大小, f (x, y) 为残差值, F (0, 0) 为直流系数。具体推导过程请参见文献[11]。

4 预测模块复杂度的降低算法

预测模块是视频编码器中复杂度最高的模块, 几乎占整个编码复杂度的50%至70%[2]。针对其计算复杂度高的特点, 目前块匹配BMA搜索算法的复杂度降低的研究主要集中在:通过减少三维搜索区域内实际搜索点数目来降低计算复杂度的算法 (包括快速搜索策略、搜索范围的选择、参考帧的数目及选择、起始搜索点的选择等) ;改进匹配失真函数或匹配准则函数的计算, 来加快整个匹配速度的算法;选择合适终止准则的运动估计早结束算法;SKIP模式预测算法[12]等。

虽然运动估计的目标是搜索当前块的最佳匹配块, 但基于全零DCT系数块预测的运动估计早结束快速搜索算法, 其核心思想是够用就好。H.264的帧间预测包括运动搜索和模式选择两部分。运动搜索过程中, 检测到当前块为全零块, 则立刻停止搜索, 否则运动搜索继续进行。模式选择阶段, 全零块检测是基于整个像块的。对于预测模式MODEM×N, 令NUMSB为对应该模式的当前像块的子块数目, 当该像块的全部NUMSB个M×N子块在运动搜索完成后都是全零块, 则认为该像块为全零块, 该预测模式MODEM×N记为最优预测模式, 停止模式选择, 否则模式选择继续进行。如果用函数Is Zero (Crit (Pi) ) =1来描述全零块, 而用Is Zero (Crit (Pi) ) =0来描述非全零块, 运动估计早结束算法就可以用如下语句进行描述:

其中Critmin表示最小残差, MAX_INTER为最大整数, E为最大搜索位置索引, Pi为第i个搜索位置, Crit (Pi) 为Pi位置处的残差。

由此可见, 运动估计早结束算法实质上是在常规的快速运动搜索方法中加入了一个终止条件。当运动搜索到满足此条件就可以停止, 并把当前的矢量记为最佳运动矢量, 把此宏块的DCT系数标记为全零。运动搜索中的整数像素搜索和分数像素搜索都可以使用本算法。在把当前宏块标记为全零块的同时, 后续的DCT、量化、反量化、IDCT和运动补偿的相加等运算也被相应地省掉, 从而也节省了DCT量化等模块的运算量[13], 如图4所示。

5 仿真实验

将上述预处事算法、全零DCT预判算法、基于全零DCT预判的运动估计早结束算法植入H.264的标准编解码器JM98 (以下称该算法为M算法, 标准编解码器JM98为S算法) 。仿真实验在PC上进行, 编译环境为VC6.0。实验环境为:三个运动程度不同的CIF (352×288) 格式标准测试序列, 一个实际摄像的序列 (即含有部分噪声) ;所有视频序列编码时, 选用一个参考帧, IPP…P编码方式, 测试200帧, 帧率30 fps, 率失真开关关闭, 整像素全搜索算法, 搜索半径为16, 编码模型仅选择Inter4×4。测试的量化参数有28、32与36。

表1-表4给出了低复杂度低码率视频编码方案 (M算法) 与标准编解码器JM98 (S算法) 的比较结果。“QP”列给出固定量化参数QP值, 选择了低码率视频应用中的典型值28、32与36;“算法”列给出两种算法及两种算法的比较;“搜索点数”是用来衡量复杂程度的, 因为运动估计占编码复杂度的60%左右, 所以就用搜索点数来衡量 (其实全零DCT预判也降低了部分复杂度, 这里没有列出) ;“码率”与“PSNR”栏列出了固定QP下编码200帧的平均码率及平均PSNR。

仿真结果显示, 将预处事算法、全零DCT预判算法、基于全零DCT预判的运动估计早结束算法等三者结合在一起的低码率低复杂度高效视频编码方案, 可以取得到较好的效果。尤其是在QP较大, 序列的运动复杂度较低的情况下效果非常明显。例如在Silent_cif序列, 即使QP为28时, 可以减少近80%的搜索点数。对于复杂运动序列如Football_cif, 随着QP的增加, 编码效率逐步提高, 在高量化值时也能接近60%。对于含有噪声的实际摄像序列Realvideo_cif, 其复杂度降低的效果更明显 (约90%) , 因为预处理算法还滤除了部分噪声。

表1-表4的“搜索点数”显示, 该低码率低复杂度高效视频编码方案在PSNR有轻微减小的情况下, 码率有较大的下降, 尤其是对含有轻微噪声的实际视频序列, 可以达到20%至40%。

6 结语

低码率压缩 篇3

关键词:小波变换,图像编码,SPIHT,SPECK

0 引 言

小波变换将图像的绝大部分能量集中到低频部分,而高频区域则有许多绝对值在零附近的系数,这非常有利于图像的压缩。1992年Lewis 和Knowles将图像的小波变换系数组织成树状结构后,最早提出了小波零树编码算法,随后Shapiro在此基础上提出了EZW[1]算法。后来又出现了一批零树编码算法,SPIHT[2]算法和SPECK[3]算法是其中压缩效率较高的两种。SPIHT算法支持渐进式传输,但是在码率很低时SPIHT算法解码的图像质量很差,不适合一些要求低码率的场合。针对此情况,提出一种改进算法,改进算法对低频系数采用SPECK算法,对高频部分采用SPIHT算法,当阈值较大,高频部分还没有重要系数时,只用SPECK算法作用于低频系数,当高频系数部分出现重要系数时,才开始用SPIHT算法。相应地,LIS、LIP链表的初始化方法与原SPIHT算法不同。并且对SPIHT算法也进行了改进,当检测出D型集合重要而进行分裂时,如果能判断L型集合重要则将L型集合提前分裂为四个D型集合。从而加快重要系数被检出。实验表明,在同压缩比下,改进算法重构图像的峰值信噪比PSNR都比SPIHT的高。特别是在极低码率的情况下,改进算法能取得较好的重构图像,能让人浏览到原图的轮廓,比原SPIHT算法重构图像的PSNR高出许多。

1 SPIHT图像编码算法

SPIHT算法是先将图像进行小波变换,再利用变换系数相同空间不同子带间的相关性,将变换后的系数组织成树状结构。再通过有效的方法先寻找绝对值较大的系数,再寻找绝对值较小的系数直至为零的系数的过程。

1.1 SPIHT算法中的集合及链表的定义

O(i,j):节点(i,j)所有孩子的坐标集。除了最低频子带中四分之一的系数和最高频子带中的系数没有孩子外,其余节点均有4个孩子。

D(i,j):节点(i,j)所有子孙的坐标集(包括孩子),此文中称其为D型集合。

L(i,j):所有非直系子孙的坐标集。即L(i,j)=D(i,j)-O(i,j)。此文中称其为L型集合。

H:所有树根的坐标集。对于N层分解的小波变换,HLLNLHNHLNHHN中所有系数的坐标构成的集合。

在SPIHT算法中,先判断上面这些集合或单个系数在当前阈值下是否重要,如果不重要则用“0”来表示。其判断规则为:

X是一个系数或上述集合中的一个,对于正整数n,记:

Sn(X)={1max(i,j)x{|ci,j|}2n0

如果Sn(X)=1,则称X关于阈值2n是重要的,否则称X关于阈值2n是不重要的。

SPIHT算法的分集规则如下:

(1) 最初坐标集由{(i,j)|(i,j)∈H}(LIP中)和{D(i,j)|(i,j)∈H且(i,j)具有非零子孙}(LIS中)组成。

(2) 若D(i,j)关于当前阈值是重要的,则D(i,j)分成L(i,j)和4个节点(k,l)∈O(i,j)。

(3) 若L(i,j)关于当前阈值是重要的,则L(i,j)分成4个集合D(k,l),(k,l)∈O(i,j)。

SPIHT算法中的有序链表如下:

LIP:不重要系数表,用坐标(i,j)标识,表示单个小波系数。

LSP:重要系数表,用坐标(i,j)标识,表示单个小波系数。

LIS:不重要子集表,用坐标(i,j)代表D(i,j)或L(i,j),为区别起见,D(i,j)称为D型表项,L(i,j)称为L型表项。

1.2 SPIHT算法描述

SPIHT算法要在不同的阈值下扫描多次,而且扫描的次数决定了压缩率和解码的图像质量,其主要步骤如下:

Step 1 初始阈值和链表的初始化:初始阈值

T=2⎣logMax {|ci,j|}2」;定义LSP为空,LIP={(i,j)|(i,j)∈H},LIS={D(i,j)|(i,j)∈H且(i,j)具有非零子孙}。

Step 2 排序扫描:由扫描LIP表和LIS表两大步骤构成。

Step 2.1 扫描LIP表:依次扫描LIP中的所有小波系数(i,j),确定其是否重要。如果系数(i,j)是重要的系数,则输出“1”及其符号位(正号用“1”,负号用“0”),然后将(i,j)从LIP中删除,并添加到链表LSP的尾部。如果系数(i,j)不重要,则输出“0”。

Step 2.2 扫描LIS表:对LIS中的每个集合依次处理,并对D型集合和L型集合分别采用不同的处理方法。

对D型集合:如果该集合D(i,j)是重要的,则输出符号“1”,并根据分集规则,将D(i,j)分成L(i,j)和4个节点(k,l)∈O(i,j),然后依次处理这4个孩子节点(k,l)。处理方法如下:若(k,l)是重要系数,则输出符号“1”及符号位,并将(k,l)添加到LSP的尾部;若(k,l)是不重要系数,则输出符号“0”,并将(k,l)添加到LIP尾部。然后再判断L(i,j)是否为空,不为空则添加到LIS的尾部。为空则不处理。最后将D(i,j)从LIS表中删除。如果该集合D(i,j)不重要,则输出符号“0”即可。

对L型集合:如果L(i,j)是重要的,则输出符号“1”, 根据分集规则将L(i,j)分成4个集合D(k,l),(k,l)∈O(i,j)并将它们按顺序添加到LIS表的尾部。然后将L型集合L(i,j)从LIS中删除。如果L(i,j)是不重要的,则输出符号“0”即可。

Step 3 精细扫描:除了刚才在步骤Step 2.1和Step 2.2中扫描添加进LSP的系数外,对于LSP中的每个系数(即|C(i,j)|>T的系数)输出|C(i,j)|的二进制表示中第n个最重要的位,其中T为此轮扫描中的阈值。

Step 4 将T减小一半,返回到Step 2。

2 改进算法

SPIHT算法效率很高,那为什么在低码率下表现不佳呢?原因有二个,第一是SPIHT算法初始化时树根太粗,也就是LIP链表中包含的系数太多,在标准SPIHT算法中,LIP链表包含了LLNLHNHLNHHN(其中N为分解层数)部分,而LLN部分集中了图像的绝大部分能量,其系数大小和LHNHLNHHN中的系数大小不在一个数量级上,假设相差4倍(各部分最大的系数相差倍数)的话,那就等于在每个LHNHLNHHN部分的系数前多加了两个‘0’,多2bit的输出。其次的原因是初始的树太矮,也就是LIS链表中的节点太多,因为越是高频的子带系数越小,那么当阈值较大时,LIS链表中的树绝大部分或全部都是不重要的,而此时编码器需要为每棵树输出一个‘0’,树越多,这样的输出码流就越多。

针对上述的两个原因,改进算法采用的对策也有两个。其一是将LLN部分的系数单独用SPECK中的方法编码,将其当作一个SPECK算法中的S集合。其二是将树变高,初始化时LIS中的节点为LLN中除左上角四分之一外的系数,集合类型为D型。并且在所有树中的系数都不重要时,将其整合成一棵树(相当于SPECK算法中的I集合),用一个‘0’来表示即可。只有当树中出现重要系数时(此时的阈值一般已比初始阈值缩小几倍了)时,才将整合的树分开,即将SPECK算法中的I集合分开,分为若干个LIS链表中的D型集合,然后一个个编码。

改进算法的另一个改进之处是加速检测出有重要系数的L型集合中的重要系数。在SPIHT算法中,当测试到一个D型集合重要时,分裂规则是将其分成四个孩子节点和一个L型集合,并且立即测试四个孩子节点O(i,j)是否重要,这是非常好的,因为D型集合重要时,大部分原因是处于较低频的四个孩子节点中有重要系数,那么立即将其检测出。L集合则添加到LIS链表的尾部,等后面的一些集合扫描完之后再处理此L型集合。那么此时如果能判断L型集合是重要的话,就不必将L型集合放入LIS后再等待重要性检测,而是直接将其分裂成四个D型集合D(k,l)((k,l)∈O(i,j)),这样能加大重要系数的检出速度。那么什么情况下能判断L型集合一定重要呢?是当D型集合重要,而四个孩子中又没有检测出重要系数时能肯定L型集合中必有重要系数,将其分解成四个D型集合放到LIS链表的尾部。而且此时能节省一个bit的L型测试码流输出。

改进算法的伪码描述如下:

Step 1 初始化

Step 2 排序扫描

Step 3 精细扫描

Step 4 更改阈值并进入下一轮扫描

3 实验结果和结论

为了验证改进算法的优越性,选用国际上普遍使用的512×512像素×8bpp的标准测试图像Lena、Barbara和Goldhill,在Pentium III 1GHz的PC机上利用MATLAB软件作了大量仿真实验,小波变换选用的是CDF-9/7小波,进行的是5级分解,边界延拓采用对称延拓,均未进行熵编码。

表1是图像Lena、Barbara和Goldhill经SPIHT算法和改进算法进行压缩后解码的PSNR值,从数值上可以看出,改进算法的图像重构质量明显优于SPIHT算法。当压缩比为28:1至29:1数量级时,改进算法重构图像的PSNR比原SPIHT的要高出2dB~5dB,当压缩比为26:1至27:1数量级时,改进算法重构图像的PSNR比原SPIHT的要高出0.5dB~1.5dB,从而使SPIHT算法也能用于一些要求极低码率的地方,例如有带宽瓶颈却又要得到实时图像的实时监控系统中,如感兴趣图像选择的情况下,选择前接收者只需接收极低码率的图像。

图1是Lena图在低码率0.015625bpp和0.0625bpp下的重构图像,图像大小为512×512,由于篇幅原因将其进行了缩小处理。从重构图可以看出,当压缩比为29:1时,原SPIHT算法重构图还不能看出图像的轮廓,但改进算法重构图已经能让人分辨出是Lena图。当压缩比为27:1时,原SPIHT算法重构图比改进算法重构图失真严重得多,特别是在Lena的左脸和嘴角部分,失真明显,而改进算法重构图主观视觉则好得多。

改进算法在压缩比为28:1及以上时,解码图像质量明显优于原SPIHT算法,其PSNR高出2.0dB~5.0dB。当码流增多时,其优势开始变得不明显,当压缩比变为24:1及以下时解码图像质量已变得差不多,当然也还能取得0.2dB左右的优势。

参考文献

[1]Shap iro JM.Embedded image cod ing using zerotrees ofwaveletscoeffi-cients[J].IEEE Trans.In Proc,1993,41(12):3445-3462.

[2]Said A,Pearlman W A.A new,fast,and efficient image codecbased onset partition ing in h ierarch ical trees[J].IEEE Trans.C ircu its and Sys-tem s for V ideo Technology,1996,6(3):243-250.

低码率压缩 篇4

关键词:视频编码,匹配追踪,遗传算法,排序差分

(一)引言

目前几乎所有的视频编码核心技术都是采用的运动补偿(MC-Motion Compensation)加离散余弦变换(DCT-Discrete Cosine Transform)编码的方式。基于DCT的视频编码在低码率 (64kbit/s) 下将产生严重的块效应, M.Ohta和Zhang Xudong提出了重叠块运动补偿 (OMC) 和离散小波变换 (DWT) 编码算法对块效应进行改进;但在甚低码率时, 以上算法对块效应的有效性将显著降低。而用匹配追踪算法代替DCT能有效减少块效应。

MP算法是用过完备库集去匹配视频残差信号,同时它将首先编码图像能量最大的区域,这些特性使得MP算法能够有效的减少块效应。Neff和Zakhor首先提出了用MP分解帧间位移误差场DFD信号,证明了其有效性。2006年Haoxiang Zhang等人将MP应用于H.264标准,在中低码率下,与H.264标准相比得到较好的效果。近几年,国内外提出了许多相关的算法,这些算法结果都证实了在甚低码率下,与DCT相比取得更好的PNSR和视频主观质量。

由于MP算法用的是过完备库集,所以计算量比较大。本文在研究现有基于MP的视频编码算法的基础上,用遗传算法选取最佳原子,提高了算法速度,同时用排序差分法对量化结果编码,提高了编码效率。

(二)匹配追踪算法

Mallat和Zhang首先于1993年提出了信号在过完备原子库上分解的思想,其基本原理是任何一个信号f (t) 都可以用一个超完备函数,G中基函数gr (t) 线性表示,而且表示不唯一。匹配追踪是一个逐次迭代逼近过程:

其中gγ0是信号f在原子gγ0上的分量或投影,Rf是用最佳原子对原信号进行最佳匹配后的残余。显然,Rf与gγ0是正交的,即:

为使||Rf||最小,从而必须使极大化,然后我们可以用残余信号取代原始信号重复上述过程直到得到一个相关的分解系数或者残余信号达到某个能量阈值,经过m次迭代,信号f被分解为:

RM f为原信号分解为M个原子的线性组合后的残余。由于每一步分解都是选取的最佳原子,所以残余RM f随着分解的进行迅速地减少。

本文选择2-D可分Gabor基函数超完备集作为帧间位移误差场DFD信号匹配编码集,进行匹配编码选择。Gabor函数具有很好的时频窗口特性,也可以利用可分性降低编码复杂性。

通过1-D Gaussiang (t) =函数构造可分2-D Gabor超完备基函数集G, 1-D Gabor基函数定义如下:

其中α= (s, ξ, φ) 为基本的三维矢量,Kα为Gabor超完备集规一化参数,N是G中的基函数维数。

则2-D离散可分Gabor基函数为:

其中B为所有基本三维矢量α和β的集合。

(三)基于遗传算法的MP

在基于MP的信号稀疏分解中,每一步都要完成信号或信号分解的残余在过完备库中的每一个原子上的投影计算。每一步分解实际上要进行的内积计算是一个很高维空间的内积计算,而且要计算很多次,这是MP信号稀疏分解计算量巨大的根本原因所在。根据第2部分所述,MP每一步分解实际上是一个最优化问题,直接的求解方法是全局搜索,这将非常费时,而利用遗传算法可以很好的快速解决。

遗传算法 (Genetic Algorithms, GA) 是一种借鉴生物界的自然选择和进化机制发展起来的高度并行、随机、自适应搜索算法。概括地讲,该算法使用了群体搜索技术,从随机选定的初始种群开始搜索,初始种群中的个体是问题的可行解,个体的适应性由适应度函数度量,在进化过程中,根据适者生存的原则,从中选择出适应度高的个体进行配对,然后通过交叉、变异等一系列遗传操作,产生新一代的种群,逐步使种群进化到包含近似最优解的状态,从而求得最优解。遗传算法寻找最佳原子的流程如图1。

利用遗传算法寻找最佳原子,极大地减少了计算量,是对公式(3)所表示的最优化问题的一个较令人满意的解决方案。我们从若干标准测试序列中提取若干宏块 (MB) 的亮度和色度分量分别进行了试验,以原始的MP算法速度为标准,结果如表1:

(四)基于排序差分和MP的视频压缩编码方法

现有的基于MP的视频编码方法对分解的数据直接进行量化编码,因而没有消除分解结果数据之间的冗余,压缩率不够理想。排序差分的方法对MP分解的数据进行差分预处理,大幅度减小了投影分量的分布范围,提高了编码效率。

有关文献指出了图像MP分解结果数据的分布规律:投影分量 (k=0, 1, 2, …n-1) 的取值变化范围很大,随着分解的进行呈波动递减。如果直接对其进行量化和编码,则会产生大量的编码冗余。MP算法对图像进行稀疏分解,投影参数并没有严格按递减规律分布,而是略有波动。若直接对其进行差分处理,差分结果值的动态范围较大,会产生新的编码冗余。为解决这个问题,先将结果数据按投影分量的值由大到小进行排序,使投影分量呈递减排列。这样排序后,其它分量的顺序也相应的发生改变,由于原子的正的缩放因子s为均匀分布,重新排序对其分布并无影响,而原子的频率和相位与投影分量分布类似,又由于其取值范围较投影分量取值范围小得多,打乱其分布规律对整体编码效率并无太大影响。

根据视频稀疏分解结果的分布规律,我们设计了对分解结果的量化编码方案:

(五)实验结果分析

本文编解码方案在H.264/JVC JM-92标准测试模型下仿真实现。基本参数设置:ProfileIDC=66, LevelIDC=30, CABAC熵编码模型,10frame/s,用IPPP帧结构,每次编码100帧,1个I帧和99个P帧。测试序列为Stefen、Hall和Bridge-far等,CIF格式 (352×288) 。

从图2、图3可知本文算法在中低码率下,尤其在甚低码率下,PSNR优于H.264标准,与文献[3]几乎相近;表3给出了本文算法与文献5速度上的比较,本文算法要快出很多,编码效率也略有提高。

参考文献

[1]Mallat S, Zhang Z.Matching pursuit with time-frequency dictionaries[J].IEEE Transactions On Signal Processing, 1993, 41 (12) :3397-3415.

[2]Ralph Neff and Avideh Zakhor.Very Low Bit-Rate Video Coding Based on Matching Pursuits[J].IEEE Trans.On Circuits And Systems For Video Technology.Feb1997.Vol.7.NO.1.

[3]Haoxiang Zhang, Xiaopeng Wang, Wei Huo, and D.M.Monro.A Hybrid Video Coder Based On H.264With Matching Pursuits[C].IEEE International Conference on Acoustics, Speech, and Signal Processing–Proceedings, 2006, pII889-II892.

[4]Hsi-Tzeng Chan.Chih-Ming Fu.and Chung-Lin Huang.A New Error Resilient Video Coding Using Matching and Multiple Description Coding[J].IEEE Trans On Circuits And Systems For Video Technology.Aug.2005.Vol.15.NO.8.

低码率压缩 篇5

H.264/AVC和可伸缩视频编码(Scalable Video Coding,SVC)[1]都支持分级B帧编码结构,其与传统的IPPP/IBBP结构有很大不同。在传统的编码结构中,B帧不作为参考帧,而在可分级的编码结构中,除最高时间级的B帧外,其他时间级上的B帧都作为参考帧,这种编码结构显著提高了编码效率[2]。

MPEG提出对分级B帧编码结构采用JVT-P014的量化参数分配方案。除此之外,文献[3]中提出了基于模型的分级编码QP分配方案,文献[4]中提出了自适应的分级编码QP分配方案。文献[5]中提出了自适应图像组结构编码。上述方案均是基于时域级别重要性进行QP分配的思想,即量化参数与时域级别相关,对低时域级别采用较小的QP,高时域级别采用较大的QP。然而,在存在多个时域级别的情况下,按照提案JVT-P014 QP分配方案,关键帧与邻近B帧之间的PSNR会有较大差值,产生较大的PSNR波动。这种质量波动在中、高码率下并不易被人眼察觉。然而在低码率下,帧与帧之间的质量波动会导致明显的视频主观质量波动,严重影响视频的观看质量,因此需要针对低码率下分级B帧结构编码的QP分配方案进行改进。

1 分级B帧编码及其QP分配方案

图1显示的是具有4个时间级的分级B帧编码结构,在一个图像组(Group of Picture,GoP)中分成两部分[6],关键帧和分级B帧。关键帧采用帧内编码模式(I帧)或帧间编码模式(P帧,参考帧为前一个关键帧),如图1中第0,8和16帧;分级B帧是除关键帧外的其他B帧,采用显示顺序上邻近两帧作为参考帧。整个序列的第一帧是瞬时解码器刷新(Instantaneous Decoder Refresh,IDR)帧。在分级B帧的编码结构中,首先是编码关键帧I0/P0,其他帧按照编码顺序依次编码。由于编码顺序和显示顺序不一致,会产生一定的延迟。图1中的箭头表示所需要的参考帧,例如编码第4帧需要用到第1帧和第8帧作参考。不同时间级上的B帧对视频序列编码质量影响是不一样的,低时间级的帧需要直接或者间接被高时间级的帧用作参考,其编码质量的好坏直接影响整体的编码质量。所以对不同时间级上的B帧应该分配不同的QP以提高编码效率,即时间级高的帧应使用较大的QP。如果考虑编码效率,一个GoP的时间级数应该合理权衡,时间级数太少就不能充分发挥这种编码结构的效率,时间级数太多则会带来较大的时间延迟。

在分级B帧的编码结构中,编码效率主要依赖于不同时间级上的QP。如果不同时间级上的QP均采用率失真优化[7]方法确定,计算复杂度将会非常高。为了减小计算量,通常采用公式(1)MPEG提案JVT-P014[6]中的QP分配方案,即

式中:k=0,1,2,…,T-1,表示编码帧所处的时间级;QP0表示关键帧的QP;T表示一个GoP内时间级数。

由式(1)可知,时间1级B帧的QP在关键帧的基础上加4,其他时间级的B帧在前一时间级QP的基础上加1。目前这种QP的分配方案并没有理论的证明,只是在大量的实验基础上得出的。这种分配方法对大部分序列编码效率比较高,但是在低码率下会产生较大的PSNR波动。在中、高码率下,由于关键帧与邻近B帧编码质量都相对较高,人眼不易察觉视频帧的质量波动;然而这种质量波动在低码率下十分明显,引起严重的视频主观质量下降。上述问题主要是因为提案JVT-P014QP分配方法使得关键帧的QP与邻近B帧的QP相差较大,导致邻近B帧编码质量较差。根据人眼的视觉暂留效应,暂留时间0.05~0.2 s。假设视频帧率是30 Hz,在人眼暂留时间内会播放1.5~6帧。如图2给出了标准测试序列football每帧对应的PSNR,GoP设定为16,QP0为35。从图中可以看出关键帧的质量比邻近B帧质量要高许多。假如人眼在某一刻关注的是关键帧,根据人眼的视觉暂留效应,下一次人眼会看到关键帧后面的1~6帧中的某一帧。而关键帧后面B帧的编码质量比较差,人眼就会明显感受到视频质量波动,这种质量波动在低码率下尤为明显。为了减少影响主观感受的视频质量波动,需要减小关键帧与邻近B帧的PSNR差距,即减小关键帧与邻近B帧之间的QP差值。然而,简单地减小QP差值会降低序列总体率失真性能,所以必须从尽可能保证整体编码效率即率失真性能的角度出发,调整原有的QP分配策略。

由于利用了视频序列的时间相关性,分级B帧编码效率比较高。在一个GoP内最高时间级B帧用邻近B帧做参考。经过大量实验观察,最高时间级B帧的宏块编码模式大部分采用skip模式,从而大大节约了编码比特数。因此,最高时间级B帧采用较大的QP对其编码质量影响较小,并能够补偿由于减小关键帧与邻近B帧的QP差值所增加的编码比特数。按照以上思路,本文提出了低码率下分级B帧QP分配的改进方案

2 实验结果与分析

为了验证算法的性能,使用SVC的参考软件JSVM9.19.7[8]进行仿真实验。使用CIF格式(352×288)的标准测试序列football,foreman,mother-daughter和waterfall进行测试,关键帧量化参数QP0分别设置为33,35,37和39,帧率30 Hz,GoP大小为16,编码帧数为256帧。经实验观察,上面关键帧QP设置能观察到视频质量的波动。表1在低码率下对提案JVT-P014中的QP分配方案与本文提出的改进方案进行比较,测度采用ΔPSNR[9]。由表1中数据可见,对于序列football,foreman和waterfall,改进方案的编码效率有所提高,对于序列mother-daughter编码效率略有下降,但编码率失真性能基本保持不变。由图3和图4可以看出,采用改进方案编码B帧的PSNR值与提案JVT-P014比较均有明显的提高。由于关键帧与分级B帧PSNR差值减小,因此视频质量波动也会明显减轻。

为定量说明改进算法的有效性,采用式(3)关键帧与B帧平均PSNR的差值作为视频波动性的评价标准,对上述实验结果用式(4)进行统计测试。

序列PSNR平均差值=

从表2的实验结果可以看出,在低码率下,本文提出的方案比提案JVT-P014方案PSNR平均差值有明显下降。对于运动特性较小的mother-daughter和waterfall序列,平均PSNR差值都减小了14%以上,对于运动特性较大的序列football和foreman,平均PSNR差值减小了10%左右,说明改进方案在减小PSNR波动性方面有明显的优势。综合表1与表2中数据可得,在低码率下,本文中提出的分级B帧QP分配方案与提案JVT-P014方案相比,能够明显降低序列帧之间PSNR的波动性,并维持总体率失真性能基本不变。

3 小结

本文针对低码率下可分级视频编码分级B帧预测结构存在视频主观质量严重波动的问题,提出了一种新的分级B帧结构编码的QP参数分配方法。该方法能够在保持整体编码性能不下降的情况下,明显减小低码率下视频的质量波动,改善了视频的主观质量。

参考文献

[1]SCHWARZ H,MARPE D,WIEGAND T.Overview of the scalable videocoding extension of the H.246/AVC standard[J].IEEE Trans.CSVT,2007,17(9):1103-1120.

[2]SCHWARZ H,MARPE D,WIEGAND T.Analysis of hierarchical B pictures and MCTF[C]//Proc.ICME2006.Toronto,Canada:IEEE Press,2006:1929-1932.

[3]LI X,AMON P,HUTTER A,et al.Model based analysis for quantization parameter cascading in hierarchical video coding[C]//Proc.ICIP2009.Cairo,Egypt:IEEE Press,2009:3765-3768.

[4]LI X,AMON P,HUTTER A,et al.Adaptive quantization parameter cascading for hierarchical video coding[C]//Proc.ISVAS2010.[S.l.]:IEEE Press,2010:4197-4200.

[5]周熙,于鸿洋,张萍.基于Non-dyadic自适应GoP结构的H.264/SVC算法改进[J].电视技术,2010,34(S1):44-47.

[6]JVT-P014,Hierarchical B pictures[S].2005.

[7]RAMCHANDRAN K,ORTEGA A,VETTERLI M.Bit allocation for dependent quantization with applications to multiresolution and MPEG video coders[J].IEEE Trans.Image,1994,3(5):533-545.

[8]JSVM9.19.7,H.264SVC reference software and manual[S].2010.

【低码率压缩】推荐阅读:

压缩采样05-13

压缩行为05-23

数字压缩06-15

特征压缩06-25

压缩存储07-03

压缩气体07-10

压缩设备08-04

压缩传输08-05

压缩机组08-11

压缩测试08-21

上一篇:中学生篮球比赛下一篇:公共偏好