ffmpeg 4.3から使えるフィルタ。2入力した映像のピクセル値を比較し絶対値の差、または差が、任意のしきい値と等しいかそれ以下ならば1入力のピクセル値が選ばれ、そうでなければ2入力のピクセル値が選ばれるmaskedthreshold
フィルタの使い方。
基本コマンド
input1、input2は同じ映像とする。効果がわかりやすいように lutyuv
フィルタでピクセル値を変更している。以下の例でオリジナルのYUVのピクセル値が+0、-0、+6になる。
ffmpeg -i input1 -i input2 -filter_complex [1:v]lutyuv=val+4:val-5:val+6[1v];[0:v][1v]maskedthreshold=5 -c:a copy output
コンソールで確認する例。threshold=5なので絶対値が5以下は1入力のまま、6以上は2入力が選ばれ、mean:[100 100 106]で3番目のチャンネルだけ106で+6になっている。
ffmpeg -f lavfi -i color=s=4x4:d=1,lutyuv=100:100:100 -f lavfi -i color=s=4x4:d=1,lutyuv=104:95:106 -filter_complex maskedthreshold=threshold=5,showinfo -vframes 1 -f null -
公式ドキュメント:FFmpeg Filters Documentation : maskedthreshold
オプション
- threshold[float]
しきい値の指定。この値と等しいかそれ以下ならば1入力のピクセル値が選ばれ、そうでなければ2入力のピクセル値が選ばれる
既定値:1
範囲:0から65535まで - planes[int]
フィルタを当てるチャンネル指定
詳しくは ffmpeg について | チャンネルの順番と注意点を参照
既定値:15(すべてのチャンネル)
範囲:0から15まで - mode[int]
モードの指定 - 0, abs:絶対値。既定値
- 1, diff:差分