简化视频去隔行和格式重定处理
发布时间:2008/8/26 0:00:00 访问次数:702
大多数普通视频信号在利用视频压缩编解码器进行编码之前都必须进行预处理,这要求数据采用420平面格式(planar format)以获得更高的处理性能。例如,ntsc和pal等广播标准可能需要将隔行扫描(interlaced)格式转换为逐行扫描(progressive),此外还常常需要对色度和亮度信息进行格式重定。
特别的是,ccd相机的视频是以4:2:2交错式隔行扫描格式被捕获的。但视频压缩标准的特定规格只接受逐行扫描4:2:0格式的输入。在这种情况下,必须去掉隔行扫描伪信号,因为对逐行扫描编码器而言,处理隔行扫描视频内容可能相当困难。
有大量复杂的去隔行(de-interlacing)算法可供工程师选择,但并非所有应用都需要最高级别的视频质量。此外,复杂的算法往往需要大量的计算,而开发人员总是受到数字信号处理器(dsp)的mips预算限制。
当应用不需要最高级别的视频质量时,可在硬件中采用缩放算法来实现去隔行。这种技术可以将4:2:2到4:2:0格式的转换工作和去隔行操作卸载给其它硬件,这对于节省珍贵的dsp mips资源特别有帮助。令人惊讶的是,当把视频压缩处理考虑进来之后,缩放硬件有时能获得可与高复杂度去隔行算法相媲美的去隔行质量。
本文描述的简单方法可用于视频应用的去隔行处理。当视频数据帧中存在大量动作时,这种技术最为有效,因为静态图像往往会更加突出缺陷。
亮度和色度编码
ntsc将标准清晰度(ntsc sd)的分辨率定义为每行720像素,每列480像素,每秒30帧。每个像素的信息包含三个分量:y是亮度(luma)信息,cb(u)是蓝色信息,cr(v)是红色信息。
过去采用ntsc标准时,工程师在视频流编码方面受到传输带宽和计算能力的限制。由于人眼对于亮度信息更为敏感,而ntsc标准只要求色度信息进行2:1的水平下采样,从而减轻了这一负担。
ccd相机捕获到的每一帧都具有720×480的y值、360×480的u值和360×480的v值。其中每一个值都是8位(1个字节),范围在[0,255],这样,每一个ntsc sd帧就是(720+360+360)×480=691,200字节。
被捕获帧的y/u/v分量一般进行隔行扫描,通常采用yuv 4:2:2的格式。有两种方法构成这些数据,但为了简单起见,假设数据是以uyvy 4:2:2隔行扫描格式构成的(图1)。
如前所述,大多数编码器都要求输入视频采用yuv 4:2:0格式。在4:2:2隔行扫描数据和4:2:0平面数据之间存在着两大差异。
在4:2:0格式中,色度信息还需进一步进行2:1的垂直下采样。也就是说,对每一个ntsc sd帧,每个u或v分量都包含360×240字节而不是360×480字节。这样,每个4:2:0格式的ntsc sd帧为518,400字节[(720×480)+(360×240×2)]。为平衡实时性能和合格的图像质量,需要额外的色度下采样。
视频压缩标准的有效实现还常常需要将亮度和色度分量分别存储,因为编码算法可能采用不同的方法来处理它们。图2所示为4:2:0平面格式的ntsc sd视频帧。
隔行扫描伪像
隔行扫描包含对图像的两次扫描,一次扫描捕获偶数行,另一次扫描捕获奇数行。两次捕获以很小时差分隔开,然后再合在一起形成一个完整的帧。
在合并这两部分时,可能会形成隔行扫描伪信号。例如,矩形框的垂直边缘将导致锯齿效应(见图3的最后一帧)。在不同时间捕获一个运动视频目标而产生的这种伪信号被称为隔行伪像。
对于ntsc标准,若以30帧/秒的速度捕获视频帧,两个连续镜头(即顶场及其互补的底场)之间的启动时间是16.67ms。如果在这类帧中捕获视频场景中的快速运动行为,将会产生隔行扫描伪像。
由于这些伪信号被表示为高频噪声,它们有可能会导致逐行视频编码器出现严重问题,其主要原因在于人眼的敏感度以及压缩标准的工作方式。实际上所有的视频压缩标准都是基于两个非常重要的假设:1. 人眼对低频信息更为敏感,这意味着即使去掉原始帧中的部分高频信息,仍然可以保持可接受的视觉质量。2. 编码过程基于像素块进行,这意味着对于视频帧中的每个16×16或8×8的像素块,在相邻帧中都可能存在非常相似的模块。因此,编码的实现通常是在前面的编码帧中寻找一个相似的像素块,并仅对它们之间的delta进行编码。这样可以获得很高的压缩比,而在大多数压缩标准中,运动评估(me)模块就是专为该目的而定义的。
遗憾的是,几乎所有像素块中都可能出现隔行扫描伪像,这使得me模块很难在前面的编码帧中找到相似的像素块。结果使得delta更大,并且me需使用更多的比特来对其进行编码。因此,最好的方法是在将被捕获的帧馈入到逐行视频编
大多数普通视频信号在利用视频压缩编解码器进行编码之前都必须进行预处理,这要求数据采用420平面格式(planar format)以获得更高的处理性能。例如,ntsc和pal等广播标准可能需要将隔行扫描(interlaced)格式转换为逐行扫描(progressive),此外还常常需要对色度和亮度信息进行格式重定。
特别的是,ccd相机的视频是以4:2:2交错式隔行扫描格式被捕获的。但视频压缩标准的特定规格只接受逐行扫描4:2:0格式的输入。在这种情况下,必须去掉隔行扫描伪信号,因为对逐行扫描编码器而言,处理隔行扫描视频内容可能相当困难。
有大量复杂的去隔行(de-interlacing)算法可供工程师选择,但并非所有应用都需要最高级别的视频质量。此外,复杂的算法往往需要大量的计算,而开发人员总是受到数字信号处理器(dsp)的mips预算限制。
当应用不需要最高级别的视频质量时,可在硬件中采用缩放算法来实现去隔行。这种技术可以将4:2:2到4:2:0格式的转换工作和去隔行操作卸载给其它硬件,这对于节省珍贵的dsp mips资源特别有帮助。令人惊讶的是,当把视频压缩处理考虑进来之后,缩放硬件有时能获得可与高复杂度去隔行算法相媲美的去隔行质量。
本文描述的简单方法可用于视频应用的去隔行处理。当视频数据帧中存在大量动作时,这种技术最为有效,因为静态图像往往会更加突出缺陷。
亮度和色度编码
ntsc将标准清晰度(ntsc sd)的分辨率定义为每行720像素,每列480像素,每秒30帧。每个像素的信息包含三个分量:y是亮度(luma)信息,cb(u)是蓝色信息,cr(v)是红色信息。
过去采用ntsc标准时,工程师在视频流编码方面受到传输带宽和计算能力的限制。由于人眼对于亮度信息更为敏感,而ntsc标准只要求色度信息进行2:1的水平下采样,从而减轻了这一负担。
ccd相机捕获到的每一帧都具有720×480的y值、360×480的u值和360×480的v值。其中每一个值都是8位(1个字节),范围在[0,255],这样,每一个ntsc sd帧就是(720+360+360)×480=691,200字节。
被捕获帧的y/u/v分量一般进行隔行扫描,通常采用yuv 4:2:2的格式。有两种方法构成这些数据,但为了简单起见,假设数据是以uyvy 4:2:2隔行扫描格式构成的(图1)。
如前所述,大多数编码器都要求输入视频采用yuv 4:2:0格式。在4:2:2隔行扫描数据和4:2:0平面数据之间存在着两大差异。
在4:2:0格式中,色度信息还需进一步进行2:1的垂直下采样。也就是说,对每一个ntsc sd帧,每个u或v分量都包含360×240字节而不是360×480字节。这样,每个4:2:0格式的ntsc sd帧为518,400字节[(720×480)+(360×240×2)]。为平衡实时性能和合格的图像质量,需要额外的色度下采样。
视频压缩标准的有效实现还常常需要将亮度和色度分量分别存储,因为编码算法可能采用不同的方法来处理它们。图2所示为4:2:0平面格式的ntsc sd视频帧。
隔行扫描伪像
隔行扫描包含对图像的两次扫描,一次扫描捕获偶数行,另一次扫描捕获奇数行。两次捕获以很小时差分隔开,然后再合在一起形成一个完整的帧。
在合并这两部分时,可能会形成隔行扫描伪信号。例如,矩形框的垂直边缘将导致锯齿效应(见图3的最后一帧)。在不同时间捕获一个运动视频目标而产生的这种伪信号被称为隔行伪像。
对于ntsc标准,若以30帧/秒的速度捕获视频帧,两个连续镜头(即顶场及其互补的底场)之间的启动时间是16.67ms。如果在这类帧中捕获视频场景中的快速运动行为,将会产生隔行扫描伪像。
由于这些伪信号被表示为高频噪声,它们有可能会导致逐行视频编码器出现严重问题,其主要原因在于人眼的敏感度以及压缩标准的工作方式。实际上所有的视频压缩标准都是基于两个非常重要的假设:1. 人眼对低频信息更为敏感,这意味着即使去掉原始帧中的部分高频信息,仍然可以保持可接受的视觉质量。2. 编码过程基于像素块进行,这意味着对于视频帧中的每个16×16或8×8的像素块,在相邻帧中都可能存在非常相似的模块。因此,编码的实现通常是在前面的编码帧中寻找一个相似的像素块,并仅对它们之间的delta进行编码。这样可以获得很高的压缩比,而在大多数压缩标准中,运动评估(me)模块就是专为该目的而定义的。
遗憾的是,几乎所有像素块中都可能出现隔行扫描伪像,这使得me模块很难在前面的编码帧中找到相似的像素块。结果使得delta更大,并且me需使用更多的比特来对其进行编码。因此,最好的方法是在将被捕获的帧馈入到逐行视频编