2016-09-29 110 views
0

我正在使用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位范围。这是可能的吗?或者我还能如何取得类似的结果?

回答

0

过滤lutyuv能做到这一点: 它可用于应用转换功能上只是亮度

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

此过滤器适用于输入输出或两者兼而有之。这需要为min_intensity提供一个很好的价值。如果应用于输出,min_intensity应该是输出的最小强度值。