我试图对付每通道RGBA TIFF图像16位通过C语言,我无法找到一个关于规范16位图像大量的信息。
在每个通道RGBA图像的8位的情况下,我明白,一个像素被存储为UINT32,并且可以由32位分组为8个比特的4个组(R,G,B,A)被隔行扫描。 然后,处理每信道RGBA图像8位,我做了以下(另见封闭源代码这里 ):
- 我的图像数据存储为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)`
- 我读的图像数据作为UINT64标签
- 我使用反交错像素
(uint16) TIFF16GetR(*data_tiff)
(uint16) TIFF16GetG(*data_tiff)
(uint16) TIFF16GetB(*data_tiff)
(uint16) TIFF16GetA(*data_tiff)
但似乎数据本身不存储在UINT64选项卡,所以不知道如何被交织每个通道图像16位成UINT32像素标签。
我也面临着处理16位困难灰度化以同样的方式图像(使用TIFFReadRGBAImageOriented
得到的图像数据,并试图每个像素转换成UINT16)
更一般地,你有任何一块文档中关于16位灰度和彩色图像的?
谢谢您最好的问候,
雷米A.