如何将彩色图像从RAW转换为JPEG格式

时间:2019-06-13 19:47:48

标签: image-processing image-formats

我正在尝试将彩色图像从.raw格式转换为.jpg或.png格式,我将ImageMagick与以下命令提示符代码一起使用:

convert -size 768X576 -depth 8 rgb:my_image.raw my_image.jpeg

成功将图像转换为jpeg格式,但是存在一些问题: 1-结果图像为灰色且未着色。 2-生成的图像被细分为9个图像,作为重复的小图像网格。

当我将rgb更改为gray时,请给我3张分离的灰度图像,其光照条件从较暗到较亮。 我需要转换图像格式,任何人都可以帮助我如何编辑代码或其他能够打开图像的软件,我尝试过非常软件,但是它们很有用,我使用Windows 10。 >

1 个答案:

答案 0 :(得分:2)

我用自己的原始输入图像对其进行了测试,并且工作正常。

您可能使用了错误的ImageMagick版本。
我从https://imagemagick.org/script/download.php下载了版本:ImageMagick-7.0.8-49-Q8-x64-static.exe

在我下载的版本中,转换命令是magick.exe而不是convert

以下命令正在运行:
magick.exe -size 768x576 -depth 8 rgb:my_image.raw my_image.jpeg

我更喜欢使用FFmpeg进行格式转换。
您可以从https://ffmpeg.zeranoe.com/builds/下载它
选择:
版本:稳定(当前版本为4.1.3)。
架构:Windows 64位
链接:静态。

解压缩zip文件,只需要ffmpeg.exe
要使用rawjpeg文件转换为FFmpeg,可以使用以下命令:

ffmpeg -y -video_size 768x576 -pix_fmt rgb24 -i my_image.raw -pix_fmt yuvj444p my_image.jpeg

假设您的原始文件格式为“矮胖” RGB(顺序:r,g,b,r,g,b,r,g,b ...),请确保文件大小为768*576*3 = 1,327,104字节。


只需确保问题不存在于您的输入文件中...

您可以使用raw创建合成输入FFmpeg图像,并将结果转换为jpeg

创建综合输入:
ffmpeg -y -f lavfi -i testsrc=duration=1:size=768x576:rate=1 -pix_fmt rgb24 -f image2 test_image.raw

转换合成输入:
ffmpeg -y -video_size 768x576 -pix_fmt rgb24 -i test_image.raw -pix_fmt yuvj444p test_image.jpeg

结果(test_image.jpeg):
test_image


我找到了解决方法:

显然原始图像格式是“平面” RGB:

RRRRR
RRRRR
RRRRR
GGGGG
GGGGG
GGGGG
BBBBB
BBBBB
BBBBB

将其转换为jpeg(使用FFmpeg)是一个复杂的问题:

ffmpeg -y -video_size 768x576 -pix_fmt gbrp -i m-001-1.raw -filter_complex "extractplanes=g+b+r[g][b][r],[r][g][b]mergeplanes=0x001020:gbrp[v]" -map "[v]" m-001-1.jpeg

FFmpeg不支持原始的“平面” RGB格式。
唯一接近RGB的“平面”是GBR(绿色平面在前)。
我使用extractplanesmergeplanes重新排列颜色通道。

ImageMagick有一个更简单的解决方案:
magick.exe -depth 8 -interlace plane -size 768x576 rgb:image.raw image.jpeg


示例:
由于stackoverflow不允许上传raw个文件,因此我以png格式上传了一个grayscale图像,该图像模拟了“平面” RGB:

planar RGB

要测试该解决方案,请执行以下步骤:

  1. 下载image(imgur命名为:D5IUp.png)。
  2. 从“ pngraw转换为“平面” RGB”(扩展名.y):
    ffmpeg -y -i D5IUp.png -c:v rawvideo -pix_fmt gray D5IUp.y
  3. raw转换为jpeg
    ffmpeg -y -video_size 128x96 -pix_fmt gbrp -i D5IUp.y -filter_complex "extractplanes=g+b+r[g][b][r],[r][g][b]mergeplanes=0x001020:gbrp[v]" -map "[v]" D5IUp.jpeg

结果:
rgb


使用ImageMagick进行批量转换的示例:
for %%f in (*.raw) do (magick.exe -depth 8 -interlace plane -size 768x576 rgb:"%%f" "%%~nf.jpeg")