如何使用 FFMpeg 去拜耳 bmp 图像? (.exe文件)

How to debayer bmp image with FFMpeg? (.exe file)

我有一个 bayer 图片.bmp我想用 FFMpeg 去拜耳,我想 FFMpeg 可能默认知道去拜耳,所以我尝试使用这样一个非常简单的查询

ffmpeg -i input.bmp output.png

但是 output.png 看起来是灰色的,所以 ffmpeg 不会自动应用 debayer。我试图弄清楚 ffmpeg 是否可行,但在 google.

上几乎没有任何相关内容

图片示例(此处上传太大):https://drive.google.com/file/d/1V8HwOuIo9PBX3ix0eKFQFGimskU_H0mN/view?usp=sharing

怎么做?

UPD

这就是我尝试做的

ffmpeg -y -i D:\Buffer\Bayer\Time0000000_img.bmp -pix_fmt gray D:\Buffer\Bayer\bmp\test11.y -hide_banner
ffmpeg -y -pixel_format bayer_rggb8 -video_size 4104x3006 -i D:\Buffer\Bayer\bmp\test11.y D:\Buffer\Bayer\bmp\result1.png -hide_banner

我得到一个错误

Input #0, image2, from 'D:\Buffer\Bayer\bmp\test11.y':
  Duration: 00:00:00.04, start: 0.000000, bitrate: 1013196 kb/s
    Stream #0:0: Video: rawvideo ([186]RG[8] / 0x84752BA), bayer_rggb8, 4104x3006, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> png (native))
Press [q] to stop, [?] for help
[rawvideo @ 0000027da39d3f80] Invalid buffer size, packet size 5065984 < expected frame_size 12336624
Error while decoding stream #0:0: Invalid argument
Output #0, image2, to 'D:\Buffer\Bayer\bmp\result1.png':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: png, rgb24, 4104x3006, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.54.100 png
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A speed=   0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
Conversion failed!

如果我像这样将分辨率更改为 1920x1080

ffmpeg -y -pixel_format bayer_rggb8 -video_size 1920x1080 -i D:\Buffer\Bayer\bmp\test11.y D:\Buffer\Bayer\bmp\result1.png -hide_banner

我没有得到错误,但输出是错误的

看起来 FFmpeg 没有 Debayer 过滤器。
唯一记录的选项是选择 Bayer 作为输入像素格式。

我找到了执行 FFmpeg 两次的解决方案:

  • 从 BMP 转换为原始 Bayer:

     ffmpeg -y -i Time0000005_img.bmp -pix_fmt gray tmp.y
    
  • 从原始 Bayer 转换为 RGB(Debayer):

     ffmpeg -y -pixel_format bayer_rggb8 -video_size 4104x3006 -i tmp.y rgb.png
    

单线解决方案(使用管道):

ffmpeg -y -i Time0000005_img.bmp -vf format=gray -f rawvideo pipe: | ffmpeg -y -f rawvideo -pixel_format bayer_rggb8 -video_size 4104x3006 -i pipe: rgb.png

您也可以试试伽玛校正:

ffmpeg -y -i Time0000005_img.bmp -vf format=gray -f rawvideo pipe: | ffmpeg -y -f rawvideo -pixel_format bayer_rggb8 -video_size 4104x3006 -i pipe: -vf eq=gamma=2.2 rgb.png

注:
我手动设置 video_size4104x3006.
使用 FFprobe 可以自动设置 video_size,但这会使解决方案更加复杂。


结果(伽马校正后)按 1/10 调整大小: