简化视频去隔行和格式重定处理

2024-03-03 16:18

本文主要是介绍简化视频去隔行和格式重定处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简化视频去隔行和格式重定处理

http://blog.gkong.com/more.asp?name=barongeng&id=30826

耿磊 发表于 2007/12/7 14:10:25

大多数普通视频信号在利用视频压缩编解码器进行编码之前都必须进行预处理,这要求数据采用420平面格式(planarformat)以获得更高的处理性能。例如,NTSC和PAL等广播标准可能需要将隔行扫描(interlaced)格式转换为逐行扫描(progressive),此外还常常需要对色度和亮度信息进行格式重定。

特别的是,CCD相机的视频是以4:2:2交错式隔行扫描格式被捕获的。但视频压缩标准的特定规格只接受逐行扫描4:2:0格式的输入。在这种情况下,必须去掉隔行扫描伪信号,因为对逐行扫描编码器而言,处理隔行扫描视频内容可能相当困难。

有大量复杂的去隔行(de-interlacing)算法可供工程师选择,但并非所有应用都需要最高级别的视频质量。此外,复杂的算法往往需要大量的计算,而开发人员总是受到数字信号处理器(DSP)的MIPS预算限制。

当应用不需要最高级别的视频质量时,可在硬件中采用缩放算法来实现去隔行。这种技术可以将4:2:2到4:2:0格式的转换工作和去隔行操作卸载给其它硬件,这对于节省珍贵的DSPMIPS资源特别有帮助。令人惊讶的是,当把视频压缩处理考虑进来之后,缩放硬件有时能获得可与高复杂度去隔行算法相媲美的去隔行质量。

本文描述的简单方法可用于视频应用的去隔行处理。当视频数据帧中存在大量动作时,这种技术最为有效,因为静态图像往往会更加突出缺陷。

亮度和色度编码

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的垂直下采样。也就是说,对每一个NTSCSD帧,每个U或V分量都包含360×240字节而不是360×480字节。这样,每个4:2:0格式的NTSCSD帧为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需使用更多的比特来对其进行编码。因此,最好的方法是在将被捕获的帧馈入到逐行视频编码器之前,减少或去除其中的隔行扫描伪信号。

去隔行视频处理

如前所述,可以通过采用大量计算的复杂算法来实现高质量的去隔行处理。此外,还有一种更直接简单的方法,即采用缩放硬件,例如德州仪器的TMS320DM6446数字媒体处理器。采用缩放硬件可完全去除全部场力线,它利用剩余场的信息来产生丢失数据。

去除480i60(480像素、隔行扫描、60帧/秒)视频的所有底场数据,将产生一个240p30(240像素、逐行扫描、30帧/秒)的视频。该数据被垂直缩放,以产生一个480p30的去隔行结果。这种方法的优点是可以100%地消除所有隔行扫描伪信号,但垂直保真度会有明显损失。

当用作逐行压缩之前的预处理步骤时,这种方案能够产生非常棒的效果。这是因为有损视频压缩算法通常都去掉了高频信号(尤其是在低比特率下)。

因此,根据数据源内容的不同,在把压缩处理考虑进来之后,该方案可以达到和复杂算法一样的效果。例如,可以利用复杂度较低的去隔行器来把隔行扫描广播数据转换成低比特率数据以供逐行扫描手机屏显示。

设计实现

TMS320DM6446处理器中的缩放器(resizer)执行和所有缩放器相同的常用功能,但有少许差别。需注意的两个主要特性是,缩放器模块在水平和垂直方向上都能支持1/4x到4x的缩放,且缩放因子与方向无关。

此外,所有滤波器系数都是可编程的。例如,如果使用4:2:2隔行扫描格式(由UYVY格式构成)的输入帧(图1),分辨率为每帧720×480像素(NTSC SD)。

在去隔行处理中,缩放器首先被告知输入帧的宽度为724像素,而非实际的720像素。这是由于为准确实现1:1的缩放,DM6446处理器的水平输入大小必须被调节为720+delta,delta由缩放器中的公式计算求得。

接着,缩放器获知间距是实际间距的两倍宽,这样它就可以把第一组两个水平扫描行当作一个来接收。这使得缩放器可以在偶数行上实现1:1的水平缩放(见图4中的左上角),并将奇数行丢弃(右上角)。输入和输出在垂直方向上尺寸分别被设定为244和480,因此缩放器执行1:2的垂直放大以插入被丢弃的奇数行。

然后缩放器被告知输出帧的宽度是720像素,输出间距是1440[720+(360×2)]字节,从而形成一个输出帧(图4)。

为实现从4:2:2到4:2:0的转换,以便逐行编码器能够利用这些数据,对于每个4:2:2隔行扫描格式的输入帧,缩放器都被调用三次以生成去隔行的4:2:0帧。必须保持三组配置参数分别作为U、Y和V值。因此,需调用缩放器三次。

起始点是采用UYVY 4:2:2格式的输入帧(NTSC SD分辨率)。输出帧被定义用4CIF分辨率(704×480)代替NTSCSD分辨率(720×480)。由于缩放器的32字节输出对齐限制,输入帧的右边16列必须被丢弃。一种替代方法可能是将右边8列和左边8列删减掉。

首次调用是提取输入帧中的Y分量,然后对其进行去隔行处理。通过指示缩放器将输入帧当作一个4:2:0平面格式的图像(图5),去隔行操作应该仅应用于Y分量上。此外,缩放器还被指示执行2:1的水平缩放,间隔提取输入帧中的Y分量,并执行1:2的垂直缩放以在奇数行中插入被丢弃的Y分量。

对缩放器的第二次调用是修改U分量,这需要以2:1的比例进一步垂直下采样。由于下采样需丢弃所有的奇数行,这会自动生成逐行U缓冲器,因此不再需要进行去隔行操作。为实现垂直下调节(downscaling),垂直输入大小被设为484,输出大小被设为240。对V分量的操作类似于U分量。


对于在利用视频压缩编解码器进行编码之前需要去隔行和YUV格式转换的视频,可通过一个缩放引擎来对其进行预处理。由于某些因素(例如视频编解码器往往去除了高频分量)的影响,需对压缩后的视频质量进行考虑。不过,这项技术并不适合于所有应用,而且必须小心确保输出质量是应用可以接受的。

作者:Zhengting He、Snethil Natarajan

软件应用工程师

德州仪器公司

track:http://cn.fpdisplay.com/technology/Tech_Shtml/2_2007124102915701.shtml


这篇关于简化视频去隔行和格式重定处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/770172

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段