前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >视频处理之反交错

视频处理之反交错

原创
作者头像
用户5223082
发布2021-02-18 08:14:03
4.5K0
发布2021-02-18 08:14:03
举报
文章被收录于专栏:视频处理技术浅谈

什么是反交错呢?先简单了解下什么是交错编码,或叫场编码。那得从上个世纪说起。

早期的电视制式均采用隔行扫描,但是现在很多的高清、专业级的视频采集卡都是采用逐行扫描模式,虽然现在的视频设备和数字视频技术已近有了很大的发展和进 步,但是在时候中这两种扫描模式和显示模式一直还存在。

隔行扫描(Interlaced)就是每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。由于视觉暂留效应,人眼将会看到平滑的运动而不是闪动的半帧半帧的图像。

逐行扫描(Progressive)每次显示整个扫描帧,如果逐行扫描的帧率和隔行扫描的场率相同,人眼将看到比隔行扫描更平滑的图像,相对于隔行扫描来说闪烁较小。每一帧图像均是由电子束顺序地一行接着一行连续扫描而成。

明显的,逐行扫描比隔行扫描要好啊,为什么还要隔行扫描呢?众所周知,帧率只要达到24fps就达到流畅,电影就是按这个标准执行的。但是考虑到交流电频率50或60Hz,电视标准制订者确定了25或30fps的帧率(25:PAL制式,30:NTSC制式)。如果电视机采用逐行扫描,每秒扫描25或30帧行不行呢?理论上可以,但实际不行。原因在于,在电子束的照射下,CRT的荧光粉会立即发光,但只要电子束一离开,几乎瞬间就会暗下来。人眼虽然看不到这么明显的变化,但仍然会有亮度衰减的感觉。可以想象,如果采用30p扫描方式显示,当电子束从屏幕的上半部分移到下半部时,屏幕上半部分的亮度就有了可以观察到的衰减,于是画面下半部分显得更亮。这只是一个瞬间,事实上最亮的部分(当然就是电子束刚经过的区域)会不断移动,从而产生闪烁现象。这种现象你也见过,就是在电视上看见CRT电脑显示器那种感觉。

为了解决这个问题,最佳的办法是加倍刷新率,改成50p(以PAL制式为例)扫描,将每幅画面扫描2次,因为在1/50秒内,人眼能感觉到的亮度衰减就很小了。可是这样做,单位时间内扫描的总行数会加倍,那么水平扫描的速度就要加快。如此一来技术要求就会过高,以当时的条件做不到。于是标准制订者想到了一个折衷的办法,先花1/50分之一秒扫描奇数行(上场),然后再用后1/50秒扫描偶数行(下场),两者互补成完整的画面。虽然扫描下场时,上场的亮度衰减了,但是由于亮暗的部分交织在一起,反而不易察觉。机智!但是,看下图:

可以看到,隔行扫描会出现俗称拉丝或水文或重影的问题,导致看起来画面不清晰。摄像机的采像,从一开始其实不存在扫描,因为无论是胶片还是电子原件都是同时受光的。但是,要读取感光器上的信息(其核心任务将画面采样为YUV/RGB电信号),还是要靠扫描,于是读取每个像素的顺序就必须考虑。可以采取按顺序依次读取(逐行方式),也可以每行按顺序读取,但是先读完所有奇数行再读偶数行(隔行方式)。为了兼容电视机的隔行扫描体系,过带机(将胶片上的画面采样为YUV/RGB电信号并保存在磁带上的机器)和有些摄像机是隔行扫描制式的。

有了交错编码,就有反交错(deinterlacing):将交错式(即隔行扫描)(interlace)影像讯号转换为渐进式(逐行扫描)(progressive)影像讯号的一种方法。在直播中,的确也会存在一些源是交错编码的情况,比如从电视台转播的节目,电子竞赛,足球篮球竞技比赛,为了让画面清晰(不出现拉丝),需要进行反交错处理。反交错常见有几种方法:

场间插值:

一种简单的场间插值去隔行方法是相邻两场直接合并,即直接将输入的相邻两场(奇场和偶场,或偶场和奇场)合并成一幅完整的顿图像输出到屏幕上,这种方法就是我们常说的“编织法(weave)”。这种直接六并的时域插值方法简单方便易实现,可以提高图像静止区域的垂直清晰度,对阁像的静止部分来说可以得到非常完美的效果,但对图像中运动的部分则会产生严重的缺陷,如梳状线条,锯齿,边缘闪烁等问题。

场内插值:

场内插值的思想是利用单场内与缺失行相邻两行(或几行)通过内插运算还原出缺失行的图像信号,再与当前场的图像信号进行组合成一个完整图像的去隔行方法。常见的主要算法有空域线性去隔行算法(包括场内上下行均值插值法,场内双线性插值法,场内重复插值法等),空域非线性去隔行算法,如基于边缘角度信息插值法。这类方法仅需要几行高速存储器空间,所以场内空域插值去隔行具有算法较简单,运算也相对比较小的优点,占用系统资源少,同时可以的减少行闪烁现象,对运动图像不会产生图像模糊感和梳妆线条现象,提高图像的画面质量。不过场内插值算法仅仅利用了单场的空域相关性,没有利连续场的时域相关性。

运动补偿:

运动补偿是对一个连续的视频序列,通过估计方法来检测视频序列中的物体运动矢量,然后在运动轨迹上进行插值的过程。在视频序列中,只要物体没有消失,都可以在相邻几场内找到当前场缺失的那部分信息补上,这就是运动补偿去隔行的基本原理。

由于用来补偿的这部分图像是来自于原始场图像,而运动自适应去隔行的运动部分的缺失信息是“人造”出来的,由此可以看出,运动补偿去隔行从理论上来讲能提高清晰的图像。 但运动补偿去隔行算法中对运动估计有一些特殊要求,运动估计得到的运动矢量场的准确度要求很高,因为它对去隔行结果影响非常的明显。运动补偿去隔行算法的计算复杂度非常高,开发成本高,通常是在芯片上实现。

同时,ffmpeg有多种反交错的滤镜实现,可以结合原理和代码看看。

视频是否交错编码的检测并不是那么直观,需要通过解码视频源的SPS,PPS,slice header等信息组合判断,如下图的规则:

其中:frame_mbs_only_flag和mb_adaptive_frame_field_flag在sps信息里面, field_pic_flag字段在每帧的slice header里面。

由左而右分别是 "交错扫瞄" (左边), "交错扫瞄+去交错处理" (中间), "非交错扫瞄" (右边). 请注意每个图的左下角,在衣服上的菱形黑色图案, 左边和中间的图都有锯齿状, 而右边的 "非交错扫瞄" 没有这个状况.再来是中间图的菱形图黑色表现没有旁边两个来的黑. 也就是说做 "去交错" 处理 (中间的图) 会比没有做 "去交错"的表现来的糊一点点. 所以 "去交错" 做的好不好也很重要.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档