我正在尝试用LibTIFF写入10,12位RGB TIFF文件.
像素数据本地保存在unsigned short
缓冲区(16位)
1)如果设置TIFFTAG_BITSPERSAMPLE
为10或12,则从缓冲区中读取的位数不足,输出不正确.(我知道它只是读取每个组件10或12位,而不是16,这是问题)
2)我尝试将缓冲区中的位打包,因此它实际上是12-R,12-G,12-B.在这种情况下,我认为文件正确写入,但我找不到的查看器可以正确显示此图像.
3)如果我设置TIFFTAG_BITSPERSAMPLE
为16,观众可以显示TIFF图像,但是我有一个问题,我不知道图像最初是10位还是12位(如果我想稍后用LibTIFF读取它).此外,观众期望动态范围是16位而不是10或12,也导致视图不良.
4)最烦人的部分是我在网上找不到10,12或14位TIFF图像,看看标题应该是什么样子.
最后,将10或12位图像数据写入TIFF文件的正确方法是什么?
Mic*_*sen 10
TIFF规范未指定在图像中每个通道存储10,12或14位的方法.根据编码器和解码器,仍然可以使用这些图像,但它实际上是一个实现细节,因为它们不需要这样做.
如果你想要一个TIFF超过8位的精度,你唯一的选择是16(或浮点,但这是一个不同的故事).
我不知道任何具有这些bitdepth特定支持的图像格式,因此如果你必须使用特定的bitdepth存储图像,观众可能会成为一个问题.我能想到的最简单的解决方法是将每个像素存储为16位并将原始bitdepth作为元数据(例如,在ImageDescription标记中),但这一切都取决于图像的用途以及为什么需要此信息.