我试图通过C语言处理每通道RGBA TIFF图像的16位,我无法在规范中找到大量有关16位图像的信息。TIFF图像:16bits-RGBA图像像素是如何交错的?
在每个通道8位RGBA图像的情况下,我知道一个像素存储为uint32,并且可以通过将32位分组为4个组(R,G,B,A)8位。 然后处理每个通道RGBA图像8位时,我做以下(也参见封闭源代码here):
- 我存储图像数据作为UINT32标签(使用TIFFReadRGBAImageOriented),我打电话
data_tiff
- 我去隔行像素使用以下命令:
(uint8) TIFFGetR(*data_tiff)
,(uint8) TIFFGetG(*data_tiff)
,(uint8) TIFFGetB(*data_tiff)
&(uint8) TIFFGetA(*data_tiff)
在每信道RGBA图像的16位的情况下,你能告诉我怎么我可以去隔行像素吗? 如果我能retreive图像数据作为UINT64选项卡,然后我可以做到以下几点:
#define TIFF16GetR(abgr) ((abgr) & 0xffff)
#define TIFF16GetG(abgr) (((abgr) >> 16) & 0xffff)
#define TIFF16GetB(abgr) (((abgr) >> 32) & 0xffff)
#define TIFF16GetA(abgr) (((abgr) >> 48) & 0xffff)`
- 我使用
(uint16) TIFF16GetR(*data_tiff)
,(uint16) TIFF16GetG(*data_tiff)
读取图像数据作为UINT64标签 - 我去隔行像素,
(uint16) TIFF16GetB(*data_tiff)
&(uint16) TIFF16GetA(*data_tiff)
但似乎数据并非本地存储在uint64选项卡,所以我不知道如何隔行扫描16位每通道图像到一个uin t32像素选项卡。
处理16位,我也面临着困难灰度化(使用TIFFReadRGBAImageOriented
得到的图像数据,并试图每个像素转换成UINT16)
更普遍地以同样的方式的图像,你有任何一块有关16位灰度和彩色图像的文档?
谢谢 最好的问候,
雷米A.
你是什么意思的上面的单词“选项卡”?我无法解析......应该是“桌子”,也许吧? – unwind
我的意思是一个指针:uint32 * –