colorchannelmixer の使い方


RGBA からそれぞれの RGBA にミックスして色を変えるフィルタ colorchannelmixer フィルタの使い方。

基本コマンド

自らの RGBA だけ 1 にしているので色は変わらない。
ffmpeg -i input -vf colorchannelmixer=1:0:0:0:0:1:0:0:0:0:1:0:0:0:0:1 output

自らの値(rr, gg, bb, aa)だけ既定値は 1 でそれ以外は 0。
指定できる範囲は -2 から 2 の float

引数は r, g, b, a にそれぞれの r, g, b, a を掛けて 4×4 の 16 通りある。引数の順番は以下の通り。

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

RGB の計算式は R を例にすると。

red=red*rr + blue*rb + green*rg + alpha*ra

公式ドキュメント:FFmpeg Filters Documentation : colorchannelmixer

簡単な例

上の計算式だけでわかればそれだけなのだが、簡単な例を示すと、RGBA(100,100,100,0)に rr=0.5, rg=0.5, rb=0.5, ra=0 とすると R の値は 0.5(100+100+100)=150 で GB は 100 のままである。

ffmpeg -f lavfi -i color=0x646464 -vf colorchannelmixer=.5:.5:.5 -vframes 1 output.png

RGB それぞれを抽出する

ffmpeg -f lavfi -i smptebars -vf colorchannelmixer=1:0:0:0:0:0:0:0:0:0:0:0 -vframes 1 R_only.png
ffmpeg -f lavfi -i smptebars -vf colorchannelmixer=0:0:0:0:0:1:0:0:0:0:0:0 -vframes 1 G_only.png
ffmpeg -f lavfi -i smptebars -vf colorchannelmixer=0:0:0:0:0:0:0:0:0:0:1:0 -vframes 1 B_only.png

lutrgb でも RGB を個別に出力できる
ffmpeg -f lavfi -i smptebars -vf lutrgb=g=0:b=0 -vframes 1 R_only.png
ffmpeg -f lavfi -i smptebars -vf lutrgb=r=0:b=0 -vframes 1 G_only.png
ffmpeg -f lavfi -i smptebars -vf lutrgb=r=0:g=0 -vframes 1 B_only.png

FFmpeg Filters Documentation : lut, lutrgb, lutyuv

コメントを残す

メールアドレスが公開されることはありません。