我試圖通過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 * –