位流图像的转换

技术笔记

位流图像的转换

2012年5月5日

在本技术说明中,我们将介绍三种将RAW(比特流)图像转换为常规图像文件格式的方法。在此,我们将RAW图像定义为一串比特。 .RAW 文件仅包含有关图像像素值的信息,没有头信息,也没有包含任何附加信息(这与相机 RAW 文件(例如 CR2、NEF、ARW、ORF、RAF 等)不同)。

RAW文件

作为示例图像,我们考虑一张 1280×800 的灰度图像(8 位)。由于没有附加信息,每个字节代表一个 pixel 的灰度值。在十六进制编辑器中打开的 .RAW 文件将如下所示。

figure 1: .raw file opend in hex editor

在编辑器中,该文件由 1,024,000(=1280*800)个十六进制值表示。 由于计数从 0x00000 开始,最后一个值 03 位于 0xF9FFF 位置(十六进制形式为 1,023,999)。位按行排序。

如何转换 RAW 图像

转换比特流图像的方法多种多样,我们至少要介绍三种。要转换这些 .RAW 文件,必须知道两点:图像的宽度和高度以及位深度。如前所述,我们的文件是一张 1280×800 的灰度图像(8 位)。

通过Photoshop / Image

fig 2: Adobe Photoshop raw
图2:Adobe Photoshop RAW
   fig 3: ImageJ raw import
图 3:ImageJ RAW 导入

通过 Adobe Photoshop 和 ImageJ 进行转换的方法类似。我们需要输入图像尺寸和位深度。在 Photoshop 中,需在单独的编辑框中输入通道数;而在 ImageJ 中,“图像类型”下拉菜单则将位深度和通道数合并在一起。 如果 RAW 文件包含文件头,您可以选择几字节的偏移量来访问图像数据。之后,图像可以保存为任何受支持的格式。

通过 ImageMagick

fig 4: ImageMagick  convert via comandline

ImageMagick 提供简单的命令行处理功能来转换 RAW 文件。可执行文件“convert.exe”需要一些参数:

-size 1280x800(我们的图像尺寸)

-depth 8(每通道 8 位)

GRAY: <RAW图像路径/文件名> <转换后图像路径/文件名>

“显式图像格式” GRAY 将我们的图像识别为灰度图像,因为 .RAW 扩展名未指定已知格式且没有头信息。输出格式可按需选择,本例中我们选择 TIF。(输入 type –help 可获取更多信息)

转换后的图像

fig 5: original image (left), crop (right)

转换后的图像将如图 5 左侧所示。如果我们从图像中提取一些样本值(例如第 96 行、第 584 至 586 列),就可以检查 .RAW 文件中的字节是否具有相同的值。

fig 6: .raw file in hex editor

这些样本值在十六进制代码中的位置为 0x1E248 至 0x1E24A(<宽度> <当前行> + <当前列> = 128096+584...585...586)。 如我们所见,这些值是相同的:

(十六进制 → 十进制)
4E → 78
AB → 171
52 → 82

ck

准备好实现您的愿景了吗?

需要帮助吗?

图像质量测试?

Phone (DE): +49 2273 99 99 1-0
Phone (USA): +1 408 386 1496
Phone (China): +86 158 8961 9096
Office Hours: Mon–Fri, 9–5 PM (CET)