RGBA の各値を別のチャンネルに混ぜ合わせる colorchannelmixer の使い方


RGBA からそれぞれの RGBA にミックスして色を変えるフィルタ colorchannelmixer フィルタの使い方。RGB24 で入力した場合の出力フォーマットは RGB24 になる。

基本コマンド

自らの 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、A は 0 のままである。

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

コマンド例

RGB それぞれを抽出する
ffmpeg -f lavfi -i testsrc -vf colorchannelmixer=1:0:0:0:0:0:0:0:0:0:0:0 -vframes 1 R_only.png
ffmpeg -f lavfi -i testsrc -vf colorchannelmixer=0:0:0:0:0:1:0:0:0:0:0:0 -vframes 1 G_only.png
ffmpeg -f lavfi -i testsrc -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 testsrc -vf lutrgb=g=0:b=0 -vframes 1 R_only.png
ffmpeg -f lavfi -i testsrc -vf lutrgb=r=0:b=0 -vframes 1 G_only.png
ffmpeg -f lavfi -i testsrc -vf lutrgb=r=0:g=0 -vframes 1 B_only.png

グレー出力
ffmpeg -f lavfi -i testsrc -vf colorchannelmixer=.3:.59:.11:0:.3:.59:.11:0:.3:.59:.11:0 -vframes 1 gray.png
ffplay -f lavfi -i testsrc -vf colorchannelmixer=.3:.59:.11:0:.3:.59:.11:0:.3:.59:.11:0

アルファチャンネルにグレー出力。alphaextract フィルタで確認できる
ffmpeg -f lavfi -i testsrc -vf format=bgra,colorchannelmixer=1:0:0:0:0:1:0:0:0:0:1:0:.3:.59:.11 -vframes 1 gray.png
ffplay -f lavfi -i testsrc -vf format=bgra,colorchannelmixer=1:0:0:0:0:1:0:0:0:0:1:0:.3:.59:.11

セピア調で出力
ffmpeg -f lavfi -i testsrc -vf colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131 -vframes 1 sepia.png
ffplay -f lavfi -i testsrc -vf colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131

FFmpeg Filters Documentation : lut, lutrgb, lutyuv

追記
タイトル、パーマリンクの変更とグレー出力、セピア調で出力を追加し、コマンド例を直した。2017年4月3日
アルファチャンネルにグレー出力を追加。2017年4月21日

コメントを残す

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