当输入的视频中含有噪声时,我们可以使用去噪声的 filter 或 选项 来执行降噪处理,以便优化该视频。降噪处理是视频预处理的一部分,一般在视频编码输出之前完成。
denoising:降噪声处理
备注:在视频或者图片上有时会出现一些颗粒状的,明显不属于原图的一些点,这些点就叫做噪声(表示对真正的图像造成了干扰),而降噪声处理就是消除或者模糊化这些噪声的过程。
视频或图片中出现的噪声可以分为多个类型,当出现特定类型的噪声时,模糊处理可以提升其画面质量。模糊处理操作中,输出的每个像素值都是从输入的相同位置及其相邻像素值计算出来的。例如,我们对打印好的半色调的图片扫描后得到了其数字图片,此时就可以用模糊处理来提升它的质量。我们使用 boxblur filter 来进行模糊处理,其详细描述如下:
luma :亮度 chroma:色度 alpha:透明度
r :radius,表示模糊操作时的邻域半径大小,p:power 表示模糊运算的运算次数
boxblur:在OpenCV中,称为方框滤波或均值滤波(等同于归一化时的方框滤波),简单来说就是对像素和其领域像素取平均值作为输出值。
例如,想要对输入视频做一个模糊处理,其中 luma radius 为 1.5,luma power 为 1,那么命令如下:
ffmpeg -i input.mpg -vf boxblur=1.5:1 output.mp4
另一个可以做模糊效果的是 smartblur filter,其详情如下:
r:radius 半径,颜色空间或亮度空间中进行高斯模糊时的半径,取值为 0.1 ~ 5.0
s:strength 强度,取值 -1 ~ 1,0 时原图输出,-1 ~ 0 进行锐化操作,0 ~ 1 进行模糊操作
t:treshold 阀值,取值 -30 ~ 30,0 时对整个图像进行过滤,-30 ~ 0 对平滑区域过滤,0~ 30 对边缘进行过滤。图片像素的值变化缓慢的地区是平滑地区,急剧变化的称为边缘地区。
smartblur的特点是:模糊处理时,对边缘处不会有影响。
例如,我们可以使用如下命令和参数对图片进行模糊处理:
ffmpeg -i halftone.jpg -vf smartblur=5:0.8:0 blurred_halftone.png
我们可以使用 unsharp filter 来锐化或者模糊视频帧,其详细描述如下:
luma:亮度 chroma:色度
x:领域的宽度 y:领域的高度 amount:-2 ~ 5 ,负值时进行模糊操作,正值进行锐化,0时无影响
unarpen filter可以用作模糊掩码或者高斯模糊。例如,我们可以使用默认参数来锐化输入,命令如下:
ffmpeg -i input -vf unsharp output.mp4
此时,对亮度的锐化操作会使用 5x5 大小的矩阵,其影响因子为 1.0 。而想要执行高斯模糊,我们可以对亮度和色度设置一个负值,例如:
ffmpeg -i input -vf unsharp=6:6:-2 output.mp4
下面的图像分为四部分,分别表示使用 unsharp filter 在不同参数下的结果:
视频过滤器 denoise3d 可以降低噪声,它是 mp filter 的一部分(来自 MPlayer 项目),其详细描述如下:
spatial:空间 strength:强度 luma:亮度 chroma:色度 temporal:暂时的
例如,如果要使用默认的参数对输入进行增强,那么可以使用命令:
ffmpeg -i input.mpg -vf mp=denoise3d output.webm
下图显示了使用 denoise3d filter 增强的视频,该视频来自 NASA 阿波罗计划:
denoise3d filter 的高级版本就是 hqdn3d filter,它放置在 libavfilter 中,是FFmpeg自带的一个过滤器。这个名字是 high quality denoise 3-dimensional filter 的简称,其详细描述如下:
例如,使用默认的 hqdn3d 参数值来减少输入视频中噪声,其命令如下:
ffmpeg -i input.avi -vf hqdn3d output.mp4
下图显示了使用不同参数的 hqdn3d 时的效果图:
除了上述 filter 之外,我们还可以使用 -nr (noise reduction)选项来降低输入视频的噪声。它的取值为 0~100000 的整数,默认值为 0 ,对于常见内容,其有用的范围是 1 ~ 600。如果视频中包含有密集的噪音,那么我们应该取高一些的值。由于这个选项相比 denoise3d 和 hqdn3d 而言,其对电脑资源的消耗要更小,因此当我们需要快速处理噪声时,就可以使用这个选项。例如,在一个老旧的电脑上,我们使用 -nr 改善较为轻微的噪声,那么可以使用命令:
ffplay -i input.avi -nr 500
3d 而言,其对电脑资源的消耗要更小,因此当我们需要快速处理噪声时,就可以使用这个选项。例如,在一个老旧的电脑上,我们使用 -nr 改善较为轻微的噪声,那么可以使用命令:
ffplay -i input.avi -nr 500