APP下载

反交错滤镜YADIF及PP li的技术实现分析

2016-07-09刘晓玲张萍

广东通信技术 2016年4期

[刘晓玲 张萍]



反交错滤镜YADIF及PP li的技术实现分析

[刘晓玲张萍]

摘要反交错滤镜是一种视频图像编码处理技术,用于解决从隔行扫描到逐行扫描的转换后图像出现的拖尾及锯齿等画面质量问题。本文分析了两种采用不同技术原理实现的反交错滤镜YADIF和PP li的具体实现方式,并提出了一种综合使用两种滤镜获得更好的反交错处理画面效果的方法。

关键词:反交错 YADIF 逐行扫描 隔行扫描

刘晓玲

2007年硕士毕业于中山大学,现就职于中国电信股份有限公司广州研究院,研究方向:视频编解码算法、视频云转码,云计算。

张萍

硕士,中国电信股份有限公司广州研究院,工程师,研究方向:视频编解码算法、互联网应用、云计算。

1 技术背景

1.1隔行扫描与逐行扫描的原理及转换问题

隔行扫描[1],是每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。在处理设备和带宽受限的情况下,隔行扫描可以获得比逐行扫描更好的视频播放质量。例如广播电视系统的NTSC及 PAL制式,都是采用隔行扫描的方式[2]。另外,在安防领域众多的模拟信号设备也是采用隔行扫描的方式。然而,随着电子技术的发展,越来越多的视频设备采用逐行扫描的方式。特别是互联网上的视频流格式,只支持逐行扫描方式。因此,需要反交错技术,将视频影像从隔行扫描的方式转换为逐行扫描的方式。

在转换过程,如果直接将两幅隔行扫描的图像合成一帧,则往往会出现横向的“锯齿”现象。这是由于隔行扫描方式下奇场和偶场的拍摄时间存在时差。在目标运动的情况下,两次拍摄的目标会存在一个相对于摄像机的横向位移,这个位移反映在图像上就是图像奇、偶行之间会存在错位。直观的感觉就是图像上原本应该很平滑的边缘会变成参差不齐的锯齿状边缘。反交错Deinterlace技术正是为了解决这一问题而产生。

1.2反交错的技术原理与目标

在反交错的实现过程,主要的技术方法可以分为两类[3],场内插值和场间插值。场内插值,是根据隔行扫描获得的一半图像数据,通过插值计算,填补上另一半的数据,例如下文介绍的PP li滤镜。场内插值的实现简单,但无法提高画面的垂直分辨率,且会使得图像边缘模糊。场间插值,则是根据奇偶场合并后的数据进行插值计算。直接进行奇数场和偶数场合并的锯齿现象,主要是由于拍摄目标的横向运动分量产生,因此,一些反交错算法提出给予基于运动搜索和补偿的方法。不过虽然基于运动搜索和补偿的方法获得的图像质量效果很优秀,但是由于往往需要耗费大量资源以及时间,以至于无法直接应用于实时视频流的场景。在实时视频流的反交错处理中,往往需要在性能和画面质量之间选择一个最优方案。下文介绍的YADIF滤镜则是一种具备运动补偿思想的方法。在计算过程中会通过考量目标点及垂直方向上的周围点在时间轴上的变化,以此对目标点值进行矫正,是一种具备运动搜索与运动补偿能力的高效简单的处理方法。

2 YADIF反交错滤镜的技术实现

YADIF是一种反交错过滤器算法[4]。基本原理是在每一帧图像中,通过设定顶部优先或底部优先,相应选择奇数行或偶数行为正确数据,另外一半数据则通过计算矫正获得。以顶部优先为例,YADIF计算基于以下原则:

(1)对于待纠正的点,当前帧的上一行和下一行的相同位置的点是正确的;

(2)对于待纠正的点,当前帧的的上两行和下两行的相同位置的点是可供参考的;

(3)对于待纠正的点,前一帧的相同位置的点是可供参考的;

(4)对于待纠正的点,前一帧的上一行、下一行、上两行和下两行的相同位置的点是可供参考的。

基于上述假设,YADIF在计算一个点的值时,会根据它的周围信息(垂直方向上的点)以及运动方向(时间轴上的信息,上一帧的相同位置及垂直方向的点)进行计算。计算的基本方法包括均值、差值、以及比较计算。具体的计算流程如下:

(1)取当前帧上一行和下一行相同点的值的均值,以此为基数,记为spatial_pred。

(2)以当前点的值,与上一帧的当前位置点,取二者均值,记为d。

(3)当前点的值与上一帧当前点的差值,取其的1/2,记为diff0。

再考虑上下一行的点的前一帧与当前帧的差值:取前一帧下一行的点与当前帧下一行的点c的差值,前一帧上一行的点与当前帧上一行e的点差值,取二者均值,记为diff1。

diff =MAX{diff0,diff1};

(4)进一步计算上下两行的前一帧与当前帧的情况:

①取上一帧的下两行的点的值,当前帧的下两行点的值,取均值b

②取上一帧的上两行的点的值,当前帧的上两行点的值,取均值f

int max = FFMAX3(d - e, d - c, FFMIN(b - c, f - e));

int min = FFMIN3(d - e, d - c, FFMAX(b - c, f - e));

diff = FFMAX3(diff, min, -max);

(5)最后将spatial_pred的值限定在区间(d-diff,d+diff)之内。取前点值= spatial_pred

if (spatial_pred > d + diff)

spatial_pred = d + diff;

else if (spatial_pred < d - diff)

spatial_pred = d - diff;

下面是对图像采用yadif滤镜进行处理的效果。图1是原始图像,图2是经过yadif滤镜处理过后的图像。图像1的可见横向的锯齿,特别是下方滚动字幕。图像2画面质量基本接近原图,锯齿现象也有所减轻,但是下方的字幕仍然还是可见有锯齿。

图1 原始图片

图2 经过yadif处理后的图片

3 PPli反交错滤镜的技术实现

PP滤镜组提供了一组使用不同插值方法实现的子滤镜,包括LINEAR_IPOL_DEINT_FILTER,LINEAR_ IPOL_DEINT_FILTER、CUBIC_IPOL_DEINT_FILTER、MEDIAN_DEINT_FILTER等等。本文以子滤镜li (LINEAR_IPOL_DEINT_FILTER)为例,其计算原理如下:

(1)对每一帧的数据按顺序等分成不同的block,每个block的大小是8*8Byte;

(2)在block内部,对待修正的点,取上一行相同位置的点和下一行相同位置点的值,通过以下位运算获得:

src[stride*k]= (a|b) - (((a^b)&0xFEFEFEFEUL)>>1);

其中,a=src[stride*(k-1)],=src[stride*(k+1)],stride=d ata->linesize。

图3 是原始图像图1经过滤镜pp=li的处理之后的效果。字幕的基本没有锯齿现象,然而整体画面明显模糊了。

图3 经过滤镜pp=li的处理之后的效果

4 使用区域划分方式整合两种滤镜的效果

通过的实验对比效果中发现,使用YADIF滤镜,获得的视频的运动画面质量较好,但是滚动字幕的锯齿现象还是比较明显;采用PP LI滤镜则对滚动字幕的锯齿现象处理较好,但是运动画面质量有相对比较明显的下降,出现轮廓模糊,画面感不够锐利,特别是左侧的台徽图案图标。因此本文提出一种通过区域划分的方式,对视频图像的不同区域采用不同滤镜的,可达到同时获得较优的运动画面质量与滚动字幕质量的效果。

具体的实现方式是,对整个视频画面进行区域划分,将滚动字幕的所处区域划为字幕区域,其它部分为运动画面区域。对滚动字幕区域采用PP li滤镜,而对运动画面区域采用YADIF区域。

图4 通过区域划分整合两种滤镜的处理效果

5 结束语

对视频编码图像的反交错处理是传统电视视频信号到互联网视频流格式转换中必须使用的关键技术,由于电视视频信号上叠加的滚动字幕与主体画面的图像呈现不同的运动特性,因此本文提出的分区域联合使用两种滤镜的技术方案能较好的提升整体的画面质量,从而改善用户的观看体验,提高视频画面处理质量。

参考文献

1隔行扫描.百度百科。2016.3

http://baike.baidu.com/link?url=2afm7hDpzUNBeeuU3H8ntZta0OR5oekLdYHgYyza8f_ICPXWJm99zHTn1KB svJ6LC4uTF6GEOmoRkYDgEvZyq

2高平.详解视频格式种类与转换方法.现代电视技术。2012.7

3彭勇.一种运动分级反交错算法在视频监控中的应用.仪器仪表用户。Vol.16, ,No.3.2009

4YADIF. https://trac.handbrake.fr/wiki/yadif 2016.3

DOI:10.3969/j.issn.1006-6403.2016.04.011

收稿日期:(2016-03-09)