【发布时间】:2013-12-22 02:24:57
【问题描述】:
我有一个二维浮点值数组:
float values[1024][1024];
我想存储为图像。
值在范围内:[-range,+range]。
我想使用从红色(-范围)到白色(0)到黑色(+范围)的颜色表。
到目前为止,我一直使用 BMP 文件格式将每个像素存储为 32 位 RGBA。存储我的数组的总内存是 1024*1024*4 字节 = 4MB。
知道我的颜色表是“一维”而 32 RGBA 是“四维”,这似乎非常广泛。
明白我的意思;假设我的颜色表从黑色(-范围)变为蓝色(+范围)。 在这种情况下,唯一变化的组件显然是 B,所有其他组件都是固定的。 所以我只得到了 8 位的精度,而我“支付”了 32 位:-(。
因此,我正在寻找一种基于“调色板”的文件格式。 理想情况下,我希望每个像素都是一个 16 位索引(无符号短整数)到一个由 2^16 个 RGBA 值组成的“调色板”中。 在这种情况下,用于存储我的数组的总内存为:1024*1024*2 字节 + 2^16*4 字节 = 2.25 MB。 所以我会以几乎一半的“价格”获得两倍的精度!
哪些图像格式支持此功能?
目前我正在使用 Qt 的 QImage 将数组作为图像写入文件。 QImage 具有内部 8 位索引(“调色板”)格式。我想要一个16位的。我也没有从 Qt 的文档中了解哪些文件格式支持 8 位索引内部格式。
【问题讨论】:
-
根据to this wiki page,所有常见格式都不会索引超过 8 位。
标签: c++ c qt image-processing