ffmpeg 4.3 から使える予定のフィルタ。3つの映像から1入力目と比較し絶対値の大きい、小さいほうのピクセル値を返すmaskedmax、maskedminフィルタの使い方。

基本コマンド

効果がわかりやすいようにlutyuvフィルタでピクセル値を変更している。以下の例でオリジナルのYUVのピクセル値が+5、+10、-10になる。プラスとマイナスで同じ絶対値になったときはピクセル値の大きい方を返す。便宜上入力ファイル名を変えているが同じファイルとする。
ffmpeg -i input1 -i input2 -i input3 -filter_complex [1:v]lutyuv=val+5:val+10:val-5[1v];[2:v]lutyuv=val-5:val+5:val-10[2v];[0:v][1v][2v]maskedmax -c:a copy output

一度しかファイルを入力しないのなら。
ffmpeg -i input -filter_complex split=3[1][2][3];[1]lutyuv=val+5:val+10:val-5[1v];[2]lutyuv=val-5:val+5:val-10[2v];[3][1v][2v]maskedmax -c:a copy output

以下の例でオリジナルのYUVのピクセル値が+5、+5、-5になる。
ffmpeg -i input1 -i input2 -i input3 -filter_complex [1:v]lutyuv=val+5:val+10:val-5[1v];[2:v]lutyuv=val-5:val+5:val-10[2v];[0:v][1v][2v]maskedmin -c:a copy output

コンソール上でピクセル値を調べる例。ピクセルフォーマットはGBRPなので、順番にGreen、Blue、Redの順番になる。mean:[110 110 90]と表示され、RGBでは(90:110:110)になる。
ffmpeg -f lavfi -i color=s=4x4:d=1,lutrgb=100:100:100 -f lavfi -i color=s=4x4:d=1,lutrgb=90:95:110 -f lavfi -i color=s=4x4:d=1,lutrgb=105:110:90 -filter_complex maskedmax,showinfo -vframes 1 -f null -

フレーム、サンプル単位で情報を得るshowinfo、ashowinfo

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

オプション

planes
フィルタを当てるチャンネル指定。フィルタが当たらなければ1入力目がそのまま出力される。詳しくは ffmpeg について | チャンネルの順番と注意点を参照。
既定値:15(すべてのチャンネル)

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)