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

hh *_* tt 3 image-processing image-formats

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

convert -size 768X576 -depth 8 rgb:my_image.raw my_image.jpeg
Run Code Online (Sandbox Code Playgroud)

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

当我更改rgb为 时gray,返回 3 个分离的灰色图像,其照明条件从较暗到较亮不同。我需要转换图像格式,任何人都可以帮助我如何编辑代码或任何其他能够打开图像的软件,我尝试了很多软件,但它们很有用,我使用 Windows 10。

Rot*_*tem 5

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

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

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

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

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



解压 zip 文件,您只需要ffmpeg.exe.
要将raw文件转换为jpeg使用,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*31,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):
测试图像


我找到了解决方案:

显然原始图像格式是“平面”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文件,我上传了模拟“平面”RGB 格式的 png图像:grayscale

平面RGB

要测试该解决方案,请使用以下步骤:

  1. 下载图像(imgur 将其命名为:)D5IUp.png
  2. 转换pngraw“平面”RGB”(.y扩展名):
    ffmpeg -y -i D5IUp.png -c:v rawvideo -pix_fmt gray D5IUp.y
  3. 从 转换rawjpeg:
    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")