可伸缩视频编码SVC总结.docx

上传人:b****7 文档编号:11201571 上传时间:2023-02-25 格式:DOCX 页数:18 大小:1,019.77KB
下载 相关 举报
可伸缩视频编码SVC总结.docx_第1页
第1页 / 共18页
可伸缩视频编码SVC总结.docx_第2页
第2页 / 共18页
可伸缩视频编码SVC总结.docx_第3页
第3页 / 共18页
可伸缩视频编码SVC总结.docx_第4页
第4页 / 共18页
可伸缩视频编码SVC总结.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

可伸缩视频编码SVC总结.docx

《可伸缩视频编码SVC总结.docx》由会员分享,可在线阅读,更多相关《可伸缩视频编码SVC总结.docx(18页珍藏版)》请在冰豆网上搜索。

可伸缩视频编码SVC总结.docx

可伸缩视频编码SVC总结

可伸缩视频编码_SVC—总结

1.可伸缩视频编码定义

 

●时间可伸缩编码

在H.264/AVC的SVC扩展中,时间可伸缩性可以通过分级B帧编码结构实现。

通常,一个视频序列的第一幅图像作为立即解码更新(IDR图像被帧内编码。

关键帧可以编码为I帧(例如,为随机读取),也可以编码为P帧,并采用前一个关键帧作为运动补偿预测的参考。

关键帧所组成的序列与视频序列中的其它任何图像无关,因此,在通常意义上,该序列代表了可以得到的最小时间分辨率。

图像组中的其它图像编码使用B帧,B帧是H.264中的标准语法,故其生成的码流能与H.264兼容。

很重要的一点是,B帧编码的顺序是按照金字塔分级的顺序进行的,下一个时域级别的帧只使用较低时域级别的帧作为参考来预测,依次类推。

通过这样的一个在时域上分等级的编码结构就内在地实现了时域可伸缩性。

所有的关键帧组成了最粗糙时间分辨率的视频序列,随着在编码顺序上的图像的递增,时间分辨率也跟着增加,最终达到完全时间分辨率的视频序列。

图a所示为4阶层次化B帧的典型结构,此结构可提供4个时域等级,从低到高为{T0},{T0,T1},{T0,T1,T2},{T0,T1,T2,T3},分别具有1/8,1/4,1/2帧率和原始帧率。

另外,通过限制运动补偿预测的参考图像是否必须按显示顺序之前编码的图像,便可以任意调整编解码器之间的结构性时延。

以图c为例,该等级预测结构屏蔽了后向运动补偿预测。

尽管该结构所提供的时域可伸缩的等级与图a结构所能提供的相同,但其结构性时延是0帧,而后者为8帧。

由于仅采用前向预测,所以图c所示结构也称为等级P帧预测结构。

等级P帧预测结构通常用于实时性要求较高的应用,如视频会议等。

当预测结构满足低时延要求时,随之而来的代价便是编码效率的下降。

在用等级P帧预测结构时,需要特别注意避免时域块效应。

这种块效应由时域预测链的断裂导致,即当某一帧质量较差时,后续用它做参考预测的帧,其编码质量将受严重影响,在码率较低时尤为明显。

图6时域分级示意图

注:

可以通过依次丢弃棕色、绿色、蓝色得到不同帧频的码流。

●空间可伸缩编码

空间可伸缩性指的单个的视频序列可以使用多种不同的分辨率来显示,

(1)层间帧内纹理预测

xInitControlDataLowPass:

xIntraUpsampling:

xCompIntraUpsampling:

xBasicIntraUpsampling帧内上采样

当对宏块纹理使用帧内预测模式进行编码时,除了H.264中定义的帧内预测模式之外,SVC新定义了一种INTRA_BASE宏块模式。

使用此模式的宏块可用其低级空域层中相应帧中重建的宏块纹理来对当前宏块的纹理进行预测。

在预测之前,先使用去块效应滤波器对低层重建宏块内部边界(当使用4X4的帧内预测,或非16X16的帧间预测时)以及宏块周围边界进行滤波,再将滤波后的宏块在每个方向进行4像素的边界扩展,最后进行插值。

Intra上采样顾名思义就是对基层重建中的Intra宏块进行上采样,我们在处理时,是对整帧的数据处理的,基本的流程图如下:

从流程图上可以看到Intra上采样的过程可以分为3个基本过程:

层间Deblock,Intra周边宏块处理和分量上采样的过程,对于层间Deblock过程,其滤波强度与一般的Deblock有所不同,这边不对其做具体展开说明,可以参考Deblock的相关文档。

Intra周边宏块处理主要针对Intra周边的Inter宏块做处理,对于一个宏块来说,有以下几种情况需要处理:

1,Intra块,这时宏块数据不需要特殊处理;

2,Inter块,这时需要更据宏块的周边宏块信息作处理

A,周边都是Inter块,则宏块信息清零;

B,周边有一边为Intra块,则复制Intra块数据给当前宏块;

C,周边有多边为Intra块,则通过周边宏块数据插值给当前宏块。

接下来就是YUV分量上采样。

层间帧内预测是通过重建基本层对应的块,然后对该块进行上取样,以该上取样值作为增强层宏块的预测值。

其上取样过程为首先计算增强层宏块每个像素在基本层对应的像素值,然后计算增强层宏块该像素所对应相位值,根据该相位值在表2-1或表2-2中找到对应的滤波器,最后根据基本层的像素值和对应的滤波器来进行上取样得到增强层像素的预测值。

值得注意的是亮度像素和色度像素的上取样是不同的:

亮度上取样采用4抽头多相位插值滤波器,通过增强层像素点计算得到对应的相位和基本层的像素点,通过相位找到对应的滤波器,然后取基本层的像素点和它前面的一个像素及后面的两个像素,一共4个像素,利用该滤波器和得到的4个像素进行上取样,得到对增强层像素亮度的预测值,表2-1是亮度滤波器。

色度上取样跟亮度上取样很相似,也是通过相位得到对应的滤波器,只是它取对应基本层像素点和后面相邻的一个点,共2个点和滤波器进行上取样,得到对增强层像素色度的预测值,表2-2是色度滤波器。

intfilter16_luma[16][4]=

{

{0,32,0,0},

{-1,32,2,-1},

{-2,31,4,-1},

{-3,30,6,-1},

{-3,28,8,-1},

{-4,26,11,-1},

{-4,24,14,-2},

{-3,22,16,-3},

{-3,19,19,-3},

{-3,16,22,-3},

{-2,14,24,-4},

{-1,11,26,-4},

{-1,8,28,-3},

{-1,6,30,-3},

{-1,4,31,-2},

{-1,2,32,-1}

};

intfilter16_chroma[16][2]=

{

{32,0},

{30,2},

{28,4},

{26,6},

{24,8},

{22,10},

{20,12},

{18,14},

{16,16},

{14,18},

{12,20},

{10,22},

{8,24},

{6,26},

{4,28},

{2,30}

};

(2)层间运动信息预测

层间运动信息预测用来去除层间运动信息的相关性,包括宏块分割,参考帧索引和运动矢量。

为此目的,在H.264可用宏块模式的基础上,SVC引入了两个附加的宏块模式:

Base_Layer模式和Qpel_Refinement模式。

---Base_layer模式

使用此模式时,宏块直接使用低层运动信息(包括运动矢量、参考帧序号和宏块分割模式)作为当前运动信息,而不再编码任何其它的运动相关信息。

当低层分辨率为当前层分辨率的1/2时,当前层16X16的宏块仅对应低层8X8的子宏块,故运动矢量和宏块分割模式需要进行缩放,如上图所示。

此时,当低层对应宏块使用Direct16X16,16X8,8X16或8X8模式时,当前层宏块均使用16X16分割模式;当低层子宏块使用8X4,4X8或4X4模式时,当前宏块分别使用16X16,8X16和8X8模式,且其每个子宏块的参考帧序号使用低层对应子宏块的参考帧序号,同时,当前层宏块的运动矢量也是相应基本层运动矢量2倍缩放得来。

如果低层宏块使用帧内编码模式,则当前层宏块使用

(1)所述的INTRA_BASE模式进行帧内编码。

---Qpel_Refinement模式

仅当低层空间分辨率低于当前层分辨率时,可使用此模式。

Qpel_Refinement模式与Base_Layer模式在获得宏块分割模式、参考帧序号及运动矢量方面都相同。

唯一不同的是,对于每一个得到的运动矢量,对其两个分量都要各另编码一个1/4像素精度的修正量(-1,0,或+1)。

主要原因是因为低层1/4像素精度的运动矢量经过上采样之后只能指向当前层1/4像素精度的偶数位置,欲使运动矢量指向当前层1/4像素精度的所有位置,必须进行修正。

(3)层间残差预测

residualUpsampling残差上采样

在层间分辨率发生变化的情况下,同时当前块类型是帧间块,并且residual_prediction_flag==1。

这些情况都满足的情况下存在残差预测。

图10层间残差预测计算原理

(1)当前层的像素位置假设为(x,y),根据6.5节像素层间映射计算公式,得到参考层对应的像素位置(xRef,yRef)。

(2)如果(xRef,yRef)点和(xRef+1,yRef)点属于同一个变换块,根据双线性得到一个中间结果,如上图中黑点。

同理,(xRef,yRef+1)和(xRef+1,yRef+1)点也计算得到一个中间结果。

(3)如果点(xRef,yRef)和点(xRef,yRef+1)属于同一个变换块,则对中间结果采取双线性计算得到层间像素预测的最终结果,否则,y相位判断取哪一个中间结果作为最终值。

H.264SVC中对使用帧间编码模式的宏块定义了一个新的语法元素residual_prediction_flag以表示当前帧间宏块是否使用其低层重建残差值进行预测。

此模式可与2.4.2节定义的层间运动信息预测模式混合使用,即同时使用低层运动信息和预测残差进行预测。

当低层与当前层具有不同空间分辨率时,需要先对低层残差进行插值。

当低层空间分辨率是当前层的1/2时,使用双线性滤波[1,1]/2进行插值;当分辨率比例不为2时,则使用H.264中定义的1/4像素插值方式。

在层间残差预测中宏块是先分成子块来编码的,子块的编码存在着8x8和4x4两种转换大小,因此要判断它是采用哪种转换大小的,然后计算增强层像素对应基本层像素是属十哪个子块的,计算过程与IntraBL方式相同。

取该基本层像素相邻的后一个像素,判断它们是否属于同一子块,如果属于同一子块,则采用双线性插值,否则采用其它插值算法。

一个像素要进行水平和垂直两个方向的上取样,其上取样就是按照这种方式完成的。

●质量可伸缩编码

质量可伸缩性指的是视频序列在相同的空间分辨率和帧率的情况下,提供不同的显示质量。

质量可伸缩性编码可以认为是一种特殊形式空间可伸缩性编码,它的基本层和增强层具有同样的大小,只是视觉质量不同而已。

SVC中定义了两种SNR分级方式:

粗粒度质量可伸缩性(CoarseGrainScalability,CGS)和细粒度质量可伸缩性(MediumGrainScalability,MGS)。

前者编码变换系数是用不可伸缩方式,后者编码的变换系数可在任意点截取。

基本空间可伸缩编码中,高分辨率层和低分辨率层之间的空间关系有严格限定:

低分辨率层图像必须由高分辨率层图像以2为倍数进行下采样。

比如高分辨率层图像为4CIF格式(704x576,那么低层图像只能是CIF(352x288)、QCIFC176x144)等。

这种相对粗糙的可伸缩显然不能满足实际应用中多变的需求。

例如,手机终端用户根据其显示屏幕尺寸,可能希一望得到非以2为倍数的下采样分辨率图像。

有的终端用户还可能希一望得到原始图像中的某一部分,而分辨率和原始图像相同。

针对上述问题,JVT提出了扩展空间可伸缩(ESS:

ExtendedSpatialScalability)编码。

ESS对传统空间可伸缩编码做了两个重要的改进:

一是任意位置截取图像、任意任意比例下采样。

这就使得从当前层生成较低空间层的时候,可以从当前层图像中的任意位置开始,向右下角截取任意大小的矩形区域,作为较低空间层为此,ESS定义了两种新技术:

剪切和一般化下采样。

(1)CGS

CGS的实现类似空域可伸缩技术,其区别是CGS的不同层具有相同的空间分辨率,因此进行层间预测时,运动信息和纹理信息都不需进行缩放。

高质量层通过使用比低质量层更小的量化参数来取得更高质量的重建图像。

空间层间预测方式都可在CGS中使用。

CGS的编码方法跟空间可伸缩编码有很多相似之处,不同之处在于层间预测中不需要使用上取样,在层间帧内预测中基本层的宏块也不需要“去块效应”。

层间帧内预测和层间残差预测是直接在系数上处理的。

(2)MGS

SVC中的MGS可在一个质量基本层之上编码多个质量增强层,每个增强层使用上一质量层量化步长的1/2作为当前层量化步长,对上一质量层的重建系数与原始系数之差进一步量化。

每个增强层的量化系数编码成一个单独的E片(enhancementslice进行传输,解码时将反量化后的系数加入到基本层和之前质量层反量化系数中,并将结果反变换后得到当前质量层重建图像。

基本的FGS编码结构如图。

原始视频序列经过H.264传统非可伸缩编码生成基本层数据;对原始视频图像减去基本层重建图像的差值进行位平面编码,得到增强层数据。

第一部分DownConvert

DownConvert程序的作用是对视频序列进行在空域的上采样和下采样,或进行在时域上的下采样。

它的输出结果作为H264AVCEncoder程序的输入。

采样器可以工作在四种命令行模式,分别为normal、ESS、TMM、TMM2,其功能和用法略有不同。

程序执行时,首先在函数main.cpp中读取输入的命令行参数,并由参数argv[1]来判断为哪种模式。

下面分四部分分别说明四种模式下,程序的执行情况。

一、normal

1、用法:

DownConvertStatic.exe[[[FILTER_COEFFS]]]

w:

inputwidth(lumasamples)

h:

inputheight(lumasamples)

in:

inputfile

s:

numberofspatialdownsamplingstages

t:

numberoftemporaldownsamplingstages

out:

outputfile

skip:

numberofframestoskipatstart(default:

0)

frms:

numberofmaximuminputframes(default:

max)

其中:

s为空间采样的量化阶数,可取值为-3、-2、-1、0、1、2、3

S=-3,上采样宽高分别为原来的8倍

S=-2,上采样宽高分别为原来的4倍

S=-1,上采样宽高分别为原来的2倍

S=0,采样宽高分别为原来的1倍

S=1,下采样宽高分别为原来的2倍

S=2,下采样宽高分别为原来的4倍

S=3,下采样宽高分别为原来的8倍

t为时间采样的量化阶数,可取值为0、1、2、3

t=0,输出序列的帧数为原来的1倍

t=1,输出序列的帧数为原来的1/2倍

t=2,输出序列的帧数为原来的1/4倍

t=3,输出序列的帧数为原来的1/8倍

inputfile和outputfile的格式为:

yuv、cif、qicf……

FILTER_COEFFS为4个参数,在程序中推算为15个滤波器参数。

当该项没有是,默认的定义为:

#defineFILTER_UPintpiFilter[16]={0,0,1,0,-5,0,20,32,20,0,-5,0,1,0,0,64};

#defineFILTER_DOWNintpiFilter[16]={0,2,0,-4,-3,5,19,26,19,5,-3,-4,0,2,0,64};

分别为空间上、下采样时的滤波器参数。

这些参数的作用是,参考输入点前后的7个点,加权求得采样后的点。

2、举例:

输入的视频序列:

mobile.yuv(352*288、300帧)

要求的输出视频序列分别为:

MOBILE_CIF30.yuv、MOBILE_CIF15.yuv、MOBILE_QCIF15.yuv、MOBILE_QCIF7.5.yuv

输入命令分别为:

DownConvertStatic.exe352288mobile.yuv00MOBILE_CIF30.yuv

DownConvertStatic.exe352288mobile.yuv01MOBILE_CIF15.yuv

DownConvertStatic.exe352288mobile.yuv11MOBILE_QCIF15.yuv

DownConvertStatic.exe352288mobile.yuv12MOBILE_QCIF7.5.yuv

3、程序流程:

总体流程图为:

 

其中关键为resampleFlame()函数,这个函数中包括空间下采样和上采样功能,下面为下采样的流程图(上采样与其类似):

在下面流程图中,实现luma、chromacb、chromacr下采样的关键函数是xDownsampling()。

它的采样过程为:

首先进行水平采样,垂直的点数不变;再进行垂直采样。

并且,参考输入点前后的几个点,加权求得的值为采样后的点。

注:

iStages为空间采样的阶数。

 

 

展开阅读全文
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1