2016-09-29 40 views
0

私はビデオのバックグラウンド補正にffmpegを使用しています。出力の輝度スケーリングを改善したいと思います。ffmpeg輝度ヒストグラム調整

私のグレースケールビデオは、明るい背景に暗く動くオブジェクトがあります。 8ビットピクセル強度では、明るい背景は約240のピクセル値を有し、暗いオブジェクトは約120の強度を有する.Ffmpegの外側にある暗いオブジェクトは約120の強度を有する。何らかのフレーム数にわたってメジアンフレームを取ることによって背景イメージを生成する。 次に、ffmpegを使って各フレームを背景画像でブレンド/分割します。 (私はバックグラウンドの減算ではなく除算を使用したい)。 は[また私のffmpegのコマンドである程度トリミングありますが、それは私の質問には無関係である]この手順は、基本的に取り組んでいるが、得られるビデオフレームがあまりにも洗い流さ見える

'ffmpeg.exe', '-i', u'inputVideo.avi', '-i', u'bgMed.tif', '-y', '-r', '160', '-filter_complex', "[1:0] setsar=sar=1 [1sared]; [0:0][1sared] blend=all_mode='divide':repeatlast=1,format=gray,split=1 [int1];[int1]crop=1097:1097:12:11:[out1]", '-map', '[out1]', '-c:v', 'libxvid', '-q:v', '5', '-g', '10', u'outputVideo'

。これはおそらく予想されますか?私はffmpegが除算を行い、内部の浮動小数点の結果を生成して8ビットの出力に戻すと推測しています。部門の結果のヒストグラムを伸ばしたいと思います。ダイナミックレンジを細かくするためにマッピングする前に8ビットにストレッチすることが望ましいでしょう。

私の例では、バックグラウンドディビジョンは、バックグラウンドの値が1に近く、暗いオブジェクトの値が0.5に近い結果フレームを生成すると仮定しています。次に、ffmpegは0-1の全範囲を8ビット0-255にマッピングしているようです。除算結果の範囲0.5-1を出力の8ビット範囲にマップしたいと思います。何とかこれは可能ですか?それ以外はどうすれば同様の結果が得られますか?

答えて

0

フィルタlutyuvはそれを行うことができる。 それだけ出力または入力の両方に、このフィルタを適用

lutyuv=y=(val-min_intensity)*(maxval/(maxval-min_intensity))

を輝度に変換関数を適用するために使用することができます。これには、min_intensityに適した値が必要です。出力に適用する場合、min_intensityは出力の最小強度値でなければなりません。

関連する問題