ffmpeg でグレースケールを扱う


フィルタでグレースケールを扱うには大まかに YUV の Y を取り出す方法と、グレーにフォーマット変換する方法の2通りがある。前者はリミテッドレンジになるので 16 から 235 の範囲に収まるが処理速度は速い。一方の後者はフォーマット変換を挟むので処理は遅いが 0 から 255 までのフルレンジを扱える。

extractplanes YUV の Y を取り出す(format=yuv)
-vf extractplanes=y

hue(format=yuv) で彩度を 0 にする方法
-vf hue=s=0

YUV の Y だけそのままに UV を 128 に変換する lutyuv(format=yuv)
-vf lutyuv=val:128:128

グレーにフォーマット変換する方法
-vf format=gray

グレースケール(format=gray)値を確認する
-vf datascope

グレースケール(format=gray)で動画出力するにはエンコーダに ffv1 を使う
ffmpeg -i input -vf format=gray -vcodec ffv1 output.mkv

個別チャンネルの値を映像の場所毎に確認できる datascope

関連記事
各映像チャンネルを分離する extractplanes
Windows の ffmpeg で生放送する方法 : lutyuv

コメントを残す

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