前言
Github地址:Github
简书地址:简书
专辑地址:FFplay专辑
29.90 kerndeint
通过应用Donald Graft的自适应内核解除来解交织输入视频。 处理视频的隔行扫描部分以生成渐进帧。
接下来的参数的描述如下。
thresh
在确定是否必须处理像素行时,设置影响滤波器容差的阈值。 它必须是[0,255]范围内的整数,默认为10。值为0将导致对每个像素应用该过程。
map
如果设置为1,则将超过阈值的像素绘制为白色。默认值为0。
order
设置字段顺序。 交换字段(如果设置为1),如果为0则保留字段。默认值为0。
sharp
如果设置为1,则启用其他锐化。默认值为0。
twoway
如果设置为1,则启用双向锐化。默认值为0。
29.90.1 示例
-
应用默认值:
kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0 -
启用其他锐化:
kerndeint=sharp=1 -
以白色绘制处理过的像素:
kerndeint=map=1
29.91 lenscorrection
正确的径向镜头失真
该滤波器可用于校正由于使用广角镜头而导致的径向失真,从而重新校正图像。 要找到正确的参数,可以使用可用的工具,例如作为opencv的一部分或简单的反复试验。 要使用opencv,请使用opencv源中的校准样本(在samples/cpp下),并从结果矩阵中提取k1和k2系数。
请注意,KDE项目中的开源工具Krita和Digikam实际上提供了相同的过滤器。
与晕影滤镜(也可用于补偿镜头误差)相比,此滤镜可校正图像的失真,而晕影可校正亮度分布,因此可能希望在某些情况下同时使用两个滤镜,尽管将拥有 照顾顺序,即是否应在镜头校正之前或之后应用渐晕。
29.91.1 选项
过滤器接受以下选项:
cx
图像焦点的相对x坐标,从而失真的中心。 该值具有范围[0,1]并且表示为图像宽度的分数。 默认值为0.5。
cy
图像焦点的相对y坐标,从而是失真的中心。 该值具有范围[0,1]并表示为图像高度的分数。 默认值为0.5。
k1
二次校正项的系数。 该值的范围为[-1,1]。 0表示无更正。 默认值为0。
k2
双二次修正项的系数。 该值的范围为[-1,1]。 0表示无更正。 默认值为0。
生成更正的公式是:
r_src = r_tgt *(1 + k1 *(r_tgt / r_0)^ 2 + k2 *(r_tgt / r_0)^ 4)
其中r_0是图像对角线的一半,r_src和r_tgt分别是源图像和目标图像中距焦点的距离。
29.92 libvmaf
获取两个输入视频之间的VMAF(视频多方法评估融合)分数。
通过测井系统打印获得的VMAF分数。
它需要Netflix的vmaf库(libvmaf)作为先决条件。安装库后,可以使用以下命令启用它:./ configure --enable-libvmaf。如果未指定模型路径,则使用默认模型:vmaf_v0.6.1.pkl。
过滤器有以下选项:
model_path
设置要用于SVM的模型路径。默认值:vmaf_v0.6.1.pkl
log_path
设置用于存储日志的文件路径。
log_fmt
设置日志文件的格式(xml或json)。
enable_transform
启用计算vmaf的转换。
PHONE_MODEL
调用手机型号会产生比常规型号更高的VMAF分数,这更适合于笔记本电脑,电视等观看条件。
PSNR
启用计算psnr和vmaf。
SSIM
启用与vmaf一起计算ssim。
ms_ssim
允许计算ms_ssim和vmaf。
pool
设置用于计算vmaf的pool方法(平均值,最小值或调和平均值)。
此过滤器还支持framesync选项。
在下面的例子中,正在处理的输入文件'main.mpg'与参考文件'ref.mpg'进行比较。
ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
选项示例:
ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf =“psnr = 1:enable-transform = 1”-f null -
29.93 limiter
将像素组件值限制为指定范围[min,max]。
过滤器接受以下选项:
min
下限。 默认为输入的最低允许值。
max
上限。 默认为输入的最大允许值。
planes
指定要处理的平面。 默认为全部可用。
29.94 loop
循环视频帧。
过滤器接受以下选项:
loop
设置循环次数。 将此值设置为-1将导致无限循环。 默认值为0。
size
设置帧数的最大大小。 默认值为0。
start
设置第一帧循环。 默认值为0。
29.95 lut3d
将3D LUT应用于输入视频。
过滤器接受以下选项:
file
设置3D LUT文件名。
目前支持的格式:
| 支持的格式 | 解释 |
|---|---|
| 3dl | AfterEffects |
| cube | Iridas |
| dat | DaVinci |
| m3d | Pandora |
interp
选择插值模式。
可用值包括:
| 值 | 解释 |
|---|---|
| nearest | 使用最近定义点的值 |
| trilinear | 使用定义立方体的8个点来插值 |
| tetrahedral | 使用四面体插值 |
此过滤器还支持framesync选项。
29.96 lumakey
将某些亮度值变为透明度。
过滤器接受以下选项:
threshold
设置将用作透明度基础的亮度。 默认值为0。
tolerance
设置要键入的亮度值范围。 默认值为0。
softness
设定柔软度范围。 默认值为0。使用此选项可控制从零到完全透明的逐渐过渡。
29.97 lut, lutrgb, lutyuv
计算查找表以将每个像素分量输入值绑定到输出值,并将其应用于输入视频。
lutyuv将查找表应用于YUV输入视频,lutrgb应用于RGB输入视频。
这些过滤器接受以下参数:
c0
设置第一个像素组件表达式
c1
设置第二个像素组件表达式
c2
设置第三像素组件表达式
c3
设置第四个像素组件表达式,对应于alpha组件
r
设置红色组件表达式
g
设置绿色组件表达式
b
设置蓝色组件表达式
a
alpha分量表达式
y
设置Y/luminance分量表达式
u
设置U/Cb组件表达式
v
设置V/Cr组件表达式
它们中的每一个都指定用于计算相应像素分量值的查找表的表达式。
与每个c*选项关联的确切组件取决于输入中的格式。
lut滤波器在输入中需要YUV或RGB像素格式,lutrgb在输入中需要RGB像素格式,而lutyuv需要YUV。
表达式可以包含以下常量和函数:
w
h
输入的宽度和高度。
val
像素组件的输入值。
clipval
输入值,剪切到minval-maxval范围。
maxval
像素组件的最大值。
minval
像素组件的最小值。
negval
像素分量值的否定值,剪切到minval-maxval范围;它对应于表达式“maxval-clipval + minval”。
clip(val)
val中的计算值,剪切到minval-maxval范围。
gammaval(gamma)
计算出的像素分量值的伽马校正值被剪切到minval-maxval范围。它对应于表达式“pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+ minval”
所有表达式默认为val。
29.97.1 示例
-
否定输入视频:
lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val" lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
以上内容与下面的命令效果一样:
lutrgb="r=negval:g=negval:b=negval"
lutyuv="y=negval:u=negval:v=negval"
-
负亮度:
lutyuv=y=negval -
删除色度分量,将视频转换为灰色调图像:
lutyuv="u=128:v=128" -
应用
luma燃烧效果:lutyuv="y=2*val" -
删除绿色和蓝色组件:
lutrgb="g=0:b=0" -
在输入上设置一个恒定的
alpha通道值:format=rgba,lutrgb=a="maxval-minval/2" -
将亮度伽玛值校正
0.5倍:lutyuv=y=gammaval(0.5) -
丢弃最不重要的亮点:
lutyuv=y='bitand(val, 128+64+32)' -
Technicolor like效果:lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
29.98 lut2, tlut2
lut2过滤器采用两个输入流并输出一个流。
tlut2(时间lut2)滤波器从一个流中获取两个连续帧。
此过滤器接受以下参数:
c0
设置第一个像素组件表达式。
c1
设置第二个像素组件表达式。
c2
设置第三像素组件表达式。
c3
设置第四个像素组件表达式,对应于alpha组件。
它们中的每一个都指定用于计算相应像素分量值的查找表的表达式。
与每个c*选项关联的确切组件取决于输入中的格式。
表达式可以包含以下常量:
w
h
输入的宽度和高度。
x
像素组件的第一个输入值。
y
像素组件的第二个输入值。
bdx
第一个输入视频位深度。
bdy
第二个输入视频位深度。
所有表达式默认为x。
29.98.1 示例
-
突出显示两个
RGB视频流之间的差异:lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)' -
突出显示两个
YUV视频流之间的差异:lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)' -
显示两个视频流之间的最大差异:
lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
29.99 maskedclamp
使用第二个输入和第三个输入流夹住第一个输入流。
返回第一个流的值,使其位于第二个输入流 - undershoot和第三个输入流+``overshoot之间。
此过滤器接受以下选项:
undershoot
默认值为0。
overshoot
默认值为0。
planes
设置将处理为位图的planes,将从第一个流复制未处理的planes。 默认值为0xf,将处理所有planes。






网友评论