视频预处理 是任何商业编码器中非常重要的一步,其中执行了几个重要的操作,例如去隔行扫描、上/下采样、去噪等。虽然它不是任何视频编解码器或视频编码标准的一部分,但了解预处理器中发生的事情很重要,因为它会影响视频压缩效率。
在这篇文章中,让我们来看看一些重要的视频预处理步骤。
隔行到逐行转换(去隔行)
去隔行是一种常见的场景,其中输入是隔行视频,输出需要是逐行格式。
隔行扫描视频是为 NTSC 和 PAL 等格式开发的,其中显示交替行,这些行取自在稍微不同的时间捕获的两个单独的场。因此,先显示奇数行,然后显示偶数行。这样做的速度如此之快,以至于给人以完整图像的印象。
但是,如果给你一个隔行扫描视频并要求产生逐行输出,你需要做一些工作。在这种情况下,您需要交错隔行扫描电影的顶部和底部场,应用一些清理过滤以消除任何失真,然后将其发送到编码管道。
或者,您可以简单地复制字段中存在的行(也称为“浮动”)。
在过去的几十年(或更长时间)中,人们对去隔行进行了广泛的研究,并且有多种优秀的产品和算法可供您选择。无论您选择使用哪种算法进行去隔行扫描,您都必然会遇到一些梳理伪像。因此,花钱购买一个好的去隔行扫描器总是值得的。
图片大小调整
这是视频编码器中另一个常见的预处理步骤。例如,如果您的输入视频是 1920x1080p @ 60 fps,而您希望输出是 640x480p @ 60 fps,那么您需要在将帧发送到编解码器管道之前调整帧的大小。
图像大小调整在 OTT 压缩工作流程中极为常见,您的比特率阶梯中有多种不同的分辨率。
你如何调整图像的大小? 最简单的图像调整方法是简单地丢弃不需要的像素或在调整过程中添加新像素,但这会导致非常烦人的视觉伪影。
现代编码器和视频预处理器在图像大小调整过程中使用经过充分研究的滤波器,例如双三次、双边、三边、高斯或 lancsoz 滤波器。
帧率转换
假设您的输入视频分辨率为 fps1920x1080
像素 60
,并且您想要 30
fps 输出,那么您必须使用一种算法来按要求转换帧速率。
帧率转换是双向的——如果你要从较高的帧率到较低的帧率,你可能需要丢弃每一 n
帧,或者如果你想从较低的帧率到较低的帧率,你可能必须添加帧高一。
当您尝试通过填充帧或加倍帧来提高帧速率时,您需要格外小心,以免引入视频伪影并成功地使视频看起来正常而不是卡通化。实际上,帧率转换是一个丰富而精彩的研究领域!
去噪
编码器通常有自己专有的噪声消除算法来在压缩视频之前清理视频。通常,由于使用了高斯噪声消除滤波器,这些噪声消除过程会产生更柔和的图像,但这有时有助于提高压缩效率。
场景变化检测
对于高效的视频压缩,重要的是要知道您尝试压缩的视频中的场景何时发生变化。
如果您知道什么是预测,就会意识到预测或发现两个截然不同的图像之间的共性是没有用的。这就像在黑色图像和白色图像之间搜索一些共同点——你不会找到任何东西。
因此,需要检测电影中场景变化的位置——这样您就不会尝试预测这样的场景变化。
注意: 如果你还没有理解这个概念,暂时不用担心。在你读完关于预测和运动估计的文章(I、P、B 图片)后,一切都会开始变得有意义。
结论
显然还有更多适合视频预处理的算法和函数,但是,我就到此为止了。
我想谈论视频预处理的原因是要向您展示预处理的重要性以及这里可以发生多少创新。
许多人认为只有编解码器才是重要的,但这是错误的。
阅读本文的任何人都可以想出一种卓越的场景变化检测算法、噪声去除过滤器或帧速率转换器,并通过将其回馈给开源编解码器来席卷整个行业。
作者:Krishna Rao Vijayanagar 博士,OTTVerse 的创始人
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/7461.html