ffmpeg强度直方图调整

时间:2016-09-29 10:33:48

标签: video image-processing ffmpeg

我正在使用ffmpeg进行视频的背景校正,我想改善输出的强度缩放。

我的灰度视频在浅色背景上有暗物体。在8位像素强度中,光背景的像素值约为240,暗物体的强度约为120.

在ffmpeg之外,我通过在一定数量的帧上取中值帧来生成背景图像。 然后,我使用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位范围。这有可能吗?或者我怎么能取得类似的结果?

1 个答案:

答案 0 :(得分:0)

过滤器lutyuv可以这样做: 它可用于仅对亮度

应用变换函数

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

将此滤镜应用于输出或两个输入。这需要为min_intensity提供良好的价值。如果应用于输出,min_intensity应该是输出的最小强度值。