需要对 ffmpeg colorchannelmixer 进行详细解释

需要对 ffmpeg colorchannelmixer 进行详细解释

我读过文件https://ffmpeg.org/ffmpeg-filters.html#colorchannelmixer;但我不明白这个例子的意思,

colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131

有人可以解释一下每个值吗?.393、.769……为什么它有 11 个数字?

答案1

该过滤器按以下顺序接受最多 16 个值,

colorchannelmixer=rr:rg:rb:ra:gr:gg:gb:ga:br:bg:bb:ba:ar:ag:ab:aa

每个值的范围可以-2.02.0

过滤器的作用是应用四个线性方程。

假设输入的 RGBA 像素颜色为(192,64,128,200),表达式为

colorchannelmixer=.3:.4:.3:0:.1:.54:.3:0:1:.2:.5

因此,输出 R 值将是.3x192 + .4x64 + .3x128 + 0x200 = 121.6 => 122

输出 G 值为.1x192 + .54x64 + .3x128 + 0x200 = 92.16 => 92

输出 B 值将是1x192 + .2x64 + .5x128 + 0x200 = 268.8 => 255

(由于ba未设置,因此使用默认值 0。由于结果溢出最大值,因此被截断为最大值255

输出 A 值将是0x192 + 0x64 + 0x128 + 1x200 = 200 => 200

(由于未ar:ag:ab:aa设置,因此0:0:0:1使用默认值)

答案2

请详细阅读文档。该过滤器总共接受 16 个选项。对于每个输出通道(R、G、B 和 alpha),您有四个输入通道(R、G、B 和 alpha)。每个参数设置每个输入通道对每个输出通道的贡献。

如果您不指定该参数,其值将被设置为默认值(1 表示输入颜色通道,0 表示输入 alpha 通道)。这就是为什么如果您有 RGB 视频而没有 alpha 通道,则只需指定 16 个选项中的 11 个。

因此,这些参数:

.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131

可以理解为:

.393 → amount of input R in output R channel
.769 → amount of input G in output R channel
.189 → amount of input B in output R channel
0    → amount of input A in output R channel
--------------------------------------------
.349 → amount of input R in output G channel
.686 → amount of input G in output G channel
.168 → amount of input B in output G channel
0    → amount of input A in output G channel
--------------------------------------------
.272 → amount of input R in output B channel
.534 → amount of input G in output B channel
.131 → amount of input B in output B channel

其余值设置为默认值,即输入到输出 B 通道的 alpha 量为零。输出 alpha 通道的默认值也适用。

相关内容