Ich versuche, mit 16-Bit-RGBA-TIFF-Bildern pro Kanal durch C Sprache umzugehen, konnte ich nicht viel Information über 16-Bit-Bilder in den Spezifikationen finden.TIFF-Bilder: Wie werden 16-Bit-RGBA-Bildpixel verschachtelt?
Im Falle eines RGBA-Bildes mit 8 Bits pro Kanal verstehe ich, dass ein Pixel als uint32 gespeichert wird und durch Gruppierung der 32 Bits in 4 Gruppen (R, G, B, A) von 8 deinterlaced werden kann Bits. dann mit 8 Bit pro Kanal RGBA Bilder zu beschäftigen, ich tue das folgende (siehe auch Quellcode here eingeschlossen):
- ich die Bilddaten als Uint32 Register (mit TIFFReadRGBAImageOriented), die ich nennen
data_tiff
- I Deinterlacing Pixel mit den folgenden Befehlen:
(uint8) TIFFGetR(*data_tiff)
,(uint8) TIFFGetG(*data_tiff)
,(uint8) TIFFGetB(*data_tiff)
&(uint8) TIFFGetA(*data_tiff)
Bei einem 16 Bit pro Kanal RGBA Bild, können Sie mir sagen, wie kann ich Pixel deinterlacen? wenn ich Bilddaten als uint64 Registerkarte retreive könnte, dann könnte ich folgendes tun:
#define TIFF16GetR(abgr) ((abgr) & 0xffff)
#define TIFF16GetG(abgr) (((abgr) >> 16) & 0xffff)
#define TIFF16GetB(abgr) (((abgr) >> 32) & 0xffff)
#define TIFF16GetA(abgr) (((abgr) >> 48) & 0xffff)`
- ich die Bilddaten als uint64 Register lesen
- I Deinterlacing Pixel mit
(uint16) TIFF16GetR(*data_tiff)
,(uint16) TIFF16GetG(*data_tiff)
,(uint16) TIFF16GetB(*data_tiff)
&(uint16) TIFF16GetA(*data_tiff)
aber es scheint, dass die Daten nicht nativ in einem uint64 Register gespeichert, so dass ich frage mich, wie verschachtelt sind 16-Bit pro Kanal Bilder in eine uin t32-Pixel-Tab.
Ich bin auch mit Schwierigkeiten zu kämpfen Umgang mit 16-Bit-Graustufen-Bildern in der gleichen Art und Weise (mit TIFFReadRGBAImageOriented
Bilddaten zu erhalten und zu versuchen, jedes Pixel in ein uint16 zu konvertieren)
Generell haben Sie jedes Stück Dokumentation über 16 Bit Graustufen- und Farbbilder?
Danke, Mit besten Grüßen,
Rémy A.
Was meinst du mit dem Wort "Tab", oben? Ich kann das nicht analysieren ... Sollte es "Tisch" sein, vielleicht? – unwind
Ich meine einen Zeiger: uint32 * –