引言
开发去隔行算法是为了解决一个老问题:模拟电视的隔行视频必须进行转换才能在当今数字电视上显示。
隔行视频是每秒50/60 连续场,每一场只传送一半的扫描行,这些行显示在视频的每一帧中。对于以前采用阴极射线管(CRT) 的显示技术,隔行视频是一种基本压缩方法。
今天,去隔行是重要的视频处理功能,很多系统都需要它。大部分视频内容采用了隔行格式,而LCD 或者等离子体等所有新出现的显示器几乎都需要逐行视频输入。但是,去隔行功能本质上非常复杂,没有一种算法能够产生完美的逐行图像。
背景
在隔行视频中,一帧视频被分成两场,一场含有偶数行扫描线,一场含有奇数行扫描线。然而,为了能够在LCD 或者等离子体显示器上显示任意的隔行视频,必须进行去隔行处理。所有新出现的显示器都是逐行的,每一帧被压缩为一组像素( 例如, 1920 x 1080)。图1 显示了一帧中的象素是怎样组成两个场的。每一场都记录了在时间上分开的象素值。
如果假设每秒30 帧(fps),即每秒60 场,那么,第0 场是在时间“t”,第1 场是在时间“t + 1/60”。由于在略有不同的时间间隔上对场进行记录,因此,无法将两个场连起来为运动视频产生逐行帧。去隔行技术
之所以复杂,是因为需要估算并补偿可能出现的每秒1/60 的运动图像。
基本去隔行技术
基本上,去隔行是处理隔行帧流,将其转换为逐行帧流的过程。两种基本的去隔行方法通常被称为“单场插值”法和“场合并”法。
采用“单场插值”去隔行法,每一场自己可以变成视频帧,因此, 29.97-fps 隔行NTSC 剪辑视频流变成了59.94-fps 的逐行帧。由于每一场只有整个帧一半的扫描线,因此,必须进行插值处理来构成丢失的扫描线。
也可以说,单场插值去隔行技术是在空间上将扫描线加倍,每一场的扫描线被加倍。所产生的新行既可以是简单的复制前一行( 扫描线复制),也可以是前后行的平均值( 扫描线插值),如图2 所示。当图像亮度变化比较平稳时,单场插值去隔行技术的结果比较好,但是由于该技术降低了垂直分辨率,因此,图像变得更柔和。
  去隔行场合并技术涉及到将两个场进行合并,这两个在时间上分开的场形成一个完整的帧,如图3 所示。如果在两场分开的1/60 秒内,图像没有运动部分( 对于NTSC 视频),那么,场合并的结果比较好。有时候,当一对隔行场来自最初的逐行帧时,场合并算法结果会非常好。但是,如果有运动部分时,会出现“锯齿”等假像。
单场插值法和场合并法去隔行法都会影响图像质量,特别是图像有运动部分时。单场插值法柔和了图像,场合并法会产生粗糙的图像,或者锯齿假像。图4 对比了单场插值法生成的图像和场合并去隔行法生成的图像。
高级去隔行技术
很明显,可以同时采用前面介绍的两种方法,首先计算视频前后帧之间是否有运动图像,从而产生质量更好的去隔行结果。该方法对于静止区域采用场合并法,而有运动的部分采用单场插值法,因此,被称为“运动自适应去隔行法”。
运动自适应去隔行法的关键是进行精确的运动探测,这一般通过对比前后帧m x n 像素矩阵来实现。采用Altera 的视频和图像处理知识产权(IP) 包(VIP) 提供的去隔行器来实现这一简单的运动自适应去隔行算法:
1、采集来自当前场的像素以及前面的三个像素,如图5 所示。这些像素会产生两帧,当前帧和前一帧。
2、将这些像素组合成两组3 × 3 像素,当前帧一组,前一帧一组。
3、计算两帧之间像素值( 也称为运动值) 的差。
所计算的运动值可以用于对比前面产生的运动值,也可以直接用作前一运动值。如果前一运动值较大,那么,调整当前运动值,使其处于计算值和前一值之间。由于采用了前面多个帧中的运动值,因此,多进行的计算也被称为“运动补偿”。它呈指数变化;处理一次运动后,场合并再次稳定之前可能需要3 到10 帧的时间。
在每一种情况下,根据运动值,选择场合并算法,或者通过前后像素空间插值来计算新像素。下面简单的方程计算了插值或者场合并算法生成新像素的加权平均值( 前一场输出像素):
Altera的去隔行器
  Altera的VIP 包提供视频和图像处理IP 内核库,设计用于方便实现即插即用型接口。处理包提供从颜色空间转换器到多相缩放器和移动自适应去隔行器等各种IP。如图6 所示, VIP 包提供的去隔行器MegaCore?
功能支持4 种去隔行方法:
■ 带有扫描线复制功能的单场插值法
■ 带有扫描线插值功能的单场插值法
■ 场合并
■ 运动自适应
支持扫描线复制算法的去隔行器MegaCore 功能实现的单场插值去隔行法在逻辑上最简单,也最便宜。简单的重复当前场每一行两次就可以产生输出帧。如果采用的输出帧速率与输入帧速率相同,由于只使用了当前场,因此,可以丢掉一半的输入场。
对于支持扫描线插值算法的去隔行器MegaCore 功能实现的单场插值去隔行法,其逻辑成本稍高于扫描线复制单场插值去隔行法,但是质量明显要好很多。前后扫描线的线性插值填充当前场丢失扫描线,从而建立输出帧。在F1 场的顶部或者F0 场的底部,只有一条扫描线,这条线被复制。如果采用的输出帧速率与输入帧速率相同,由于只使用了当前场,因此,可以丢掉一半的输入场。
场合并去隔行法采用前一场中的扫描线填充当前场中所有丢失扫描线,从而建立输出帧。该方法对图像的静态部分会产生较好的结果,但是对运动图像会带来假象。然而,场合并算法需要外部存储器,因此,必须选用双缓冲或者三缓冲。这要比单场插值算法占用更多的逻辑单元和外部RAM 带宽。当一对隔行场来自最初的逐行帧时,场合并算法结果会非常好。场合并去隔行方法简单的将帧合在一起,结果与最初的一样。
去隔行器MegaCore 功能提供简单的运动自适应算法。这在逻辑占用和外部存储器带宽要求上最复杂也是最昂贵的算法。该算法针对图像的运动部分进行单场插值去隔行处理,对静态区域使用场合并去隔行法,从而避免了单场插值和场合并算法的缺点。在前面的章节中对该算法进行了解释。
此外,去隔行器MegaCore 功能还可以在外部RAM 中提供双缓冲或者三缓冲。运动自适应和场合并方法需要采用缓冲,单场插值方法可以选择使用缓冲。可以将去隔行器配置为为每一输入场产生一个输出帧,或者为每一输入帧产生一个输出帧( 两场构成一对)。
场格式转换节奏探测
隔行视频要比只传送奇偶场复杂得多。运动摄影图像是逐行的,基于24 fps,而NTSC 格式是每秒60 场。这意味着将运动摄影图像转换为隔行视频会产生更复杂的场格式转换节奏问题。将运动摄影图像转换为隔行视频时,每一逐行帧被转换成两场, 24 fps 被转换为每秒48 场。为能够将48场提高到所需要的60 场,采用了3:2 下拉技术,即,“场格式转换节奏”,它从一个影片帧中产生3 场,从另一影片帧中产生2 场,如图7 所示。
  有时候会提取出第十二场,以加速影片,将其插到某一时间片中。虽然普通观众很难注意到这一点,但它导致了3:2:3:2:2 的场格式转换节奏:
帧1: 3 场
帧2: 2 场
帧3: 3 场
帧4: 2 场
帧5: 2 场
重复
虽然24 fps 影片及其相关的3:2 视频场格式转换节奏是最常用的格式,而专业摄像和各种类型的视频处理使用不同类型的场格式转换节奏。由于必须对比前后输入场,探测场格式转换节奏,因此,对于去隔行器而言具有一定的难度。大部分去隔行器能够探测常用的3:2 场格式转换节奏,采用合适的去隔行技术。然而,如果没有探测到内部场格式转换节奏,可能会导致视频数据的丢失。
而且,一部分帧有可能是3:2 场格式转换节奏,而其他部分是直接隔行的( 例如,一段影片插入到隔行视频中)。为能够探测并正确的对这类源进行去隔行,要求去隔行器支持每像素场格式转换节奏探测。所有这些都增加了系统的复杂度,包括逻辑和外部存储器访问等。
运动补偿去隔行
运动补偿去隔行是目前最先进的去隔行技术。本文没有对其进行详细阐述,它使用视频压缩常用的运动补偿技术。该技术一次处理多个场,以确定一块像素的运动部分,然后移动像素,补偿运动部分。这类去隔行技术计算量非常大,但输出质量是最好的。
硬件考虑
去隔行器适合通过硬件实现,一般采用FPGA 实现复杂的高清晰(HD) 去隔行器。开发高效去隔行器的关键硬件资源是存储器。需要片内存储器来存储不同场的m × n 像素块( 计算的运动值矩阵以及前一运动值矩阵,同时还需要外部( 通常是DDR) 存储器来存储多个输入视频场以及计算的帧。
表1 列出了采用Altera? Cyclone? III 和Stratix? III FPGA 实现PAL 视频源运动自适应去隔行算法需要的资源。该表对比了运动自适应方法需要的资源以及简单场合并方法所需要的资源。请注意,场合并技术即使用在分辨率较高的图像上,需要的存储器也很少。
【想第一时间了解安防行业的重磅新闻吗?请立即关注中安网官方微信(微信号:cpscomcn)——安防行业第一人气微信,万千精彩,千万不要错过!!!
网友评论
共有0条评论 点击查看全部>>24小时阅读排行
本周阅读排行