使用ffmpeg退化视频质量-制作视频增强数据集

在用深度学习方法修复增强视频质量的时候,通常难以获得真实数据集,需要人工制作数据集。这就需要仿照现实场景中的低质视频,进行视频质量的退化。视频质量的退化主要在以下几个方面:噪声、模糊、编码退化(块效应,压缩损伤)、颜色失真。本文总结了如何使用ffmpeg实现以上质量退化。

1.噪声

  • noise filter (filter说明)
    此filter共有三个参数:noise seed、noise强度、noise模式,其中噪声模式包括以下四种,试了下除了‘t’之外,其他的在temporal上都是均匀的。
    ‘a‘:averaged temporal noise (smoother)
    ‘p’:mix random noise with a (semi)regular pattern
    ‘t’:temporal noise (noise pattern changes between frames)
    ‘u’:uniform noise (gaussian otherwise)

以下命令为使用默认noise seed, 所有分量的noise强度均为10,所有分量的noise模式均为temporal noise:

ffmpeg -i 00002_h_GT.y4m -vf noise=alls=10:allf=t -vcodec libx264 -x264opts qp=12 -y output_alls_10_allf_t.mp4

得到的结果如下右图所示:

2.模糊

  • boxblur filter
    此filter主要有两类参数:(1) 每个plane应用的半径;(2) 每个plane上应用boxblur filter的次数;详细参数介绍见boxblur filter.

使用半径为2的命令如下:

ffmpeg -i 00002_h_GT.y4m -vf boxblur=luma_radius=2:luma_power=1:chroma_radius=2:chroma_power=1 -vcodec libx264 -x264opts qp=12:bframes=3 output_blur_2_1.mp4

得到的结果如下图右图所示,可以看到画面整体模糊,很多细节已经没了;

  • gblur filter
    TODO

3.编码退化

编码退化可以使用以下两种方式:
(1) 直接利用真实场景下的编码参数,对视频进行编码,或反复编码;

(2) 利用量化参数qp调整码流质量;

现有的码率控制算法主要是通过调整离散余弦变换的量化参数大小输出目标码率。实际上,量化参数(QP)反映了空间细节压缩情况,如QP小,大部分的细节都会被保留;QP增大,一些细节丢失,码率降低,但图像失真加强和质量下降。也就是说,QP和比特率成反比的关系,而且随着视频源复杂度的提高,这种反比关系会更明显

也就是说qp越小质量越好;
在此以x264编码器为例,设置qp=44:

ffmpeg -i 00002_h_GT.y4m -vcodec libx264 -x264opts qp=44:bframes=3 -y output_qp44.mp4

得到的结果如下图右所示,可以看到明显的块效应:

4.综合

将以上三种退化结合起来,使用如下参数:

ffmpeg -i 00002_h_GT.y4m -vf boxblur=luma_radius=1:luma_power=1:chroma_radius=2:chroma_power=1,noise=alls=10:allf=t -vcodec libx264 -x264opts qp=35:bframes=3 -y output_all_qp35.mp4

得到如下图右结果:

总结:可根据应用场景选择退化类型和退化参数,后面会继续补充其他退化类型和退化方法。

你可能感兴趣的:(超高清视频处理技术)