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:差分

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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