Fiche technique | |
---|---|
Type | Bitmap |
Méthode de compression | PackBits |
Nombre de couleurs | 1 à 64 bits |
Auteur | Aldus (Adobe) |
Introduction
L'extension de fichier «.TIF» ou «.TIFF» est un format d'image TIFF, soit un format d'image d'excellente qualité ayant été conçu surtout pour les numériseurs à balayage d'images (ou scanneur). L'algorithme est relativement simple, mais les nombreux entête qu'il exploite en font inévitablement un format très lourd et gros en dimensions de fichiers final. Le format été développé en 1986 par Aldus Corporation laquelle a été racheté par Adobe Systems en 1994; le format est donc la propriété d'Adobe pour le moment.
Structure du fichier
Le mot décrivant le mieux le format TIFF est balise. Il est utile de penser à une étiquette dans un sens physique littéral. Une bonne analogie est fournie par les étiquettes en fil de fer et papier manille que l'on trouve attachées aux articles dans les quincailleries et les ateliers de réparation. Une balise dans cette instance est une étiquette identifiant l'objet auquel elle est attachée. Une balise TIFF est utilisée à peu près dans le même sens. Comme spécifié dans le format, une balise est un nombre non signé de 16 bits indiquant ce qu'est un objet de données contient. Par exemple, supposons que nous ayons un champ entier non signé avec la valeur 32773. En soi, le nombre ne contient rien. Si, cependant, sa balise est 259, alors nous savons que le nombre indique des types de compression, car 259 est l'identificateur de balise pour le type de compression, et une valeur de 32773 indique une compression PackBits. En utilisation réelle, une balise est un élément d'une structure de 12 octets appelée entrée de répertoire de fichier image ou entrée IFD. La définition de cette structure est donnée dans la structure IFDENTRY. En plus d'une balise, l'entrée IFD indique un type de données (tel qu'un unsigned short du langage de programmation C), un nombre indiquant la taille de l'objet de données et un déplacement utilisé pour localiser l'objet de données spécifié dans le fichier TIFF. Les entrées IFD sont des éléments d'une structure plus large, soit l'IFD lui-même. Un répertoire de fichiers image se compose d'un champ de comptage indiquant le nombre d'entrées, suivi d'un tableau de ce nombre d'entrées IFD, suivi d'un déplacement vers l'IFD suivant. Un fichier TIFF doit contenir au moins un IFD mais peut en contenir plus. S'il en contient plus, chaque IFD et les données qu'il décrit sont appelés sous-fichiers TIFF. Ce mécanisme permet de combiner plusieurs images en un seul fichier TIFF. Une application typique de cette fonction consiste à combiner les images de chaque page de télécopieur à multi-page en un seul fichier. Un fichier TIFF commence par un bref entête de 8 octets contenant trois champs. Le premier champ indique l'ordre des octets utilisé dans le fichier, pouvant être de style Intel ou de style Motorola. Un ordre sur deux octets utilisé dans le fichier, pouvant être Intel avec le petit-boutiste (Little Endian) et le gros-boutiste (Big Endian), respectivement. Le champ suivant est un nombre magique (aussi appelé signature) pouvant être utilisé pour valider le fichier en tant que fichier TIFF. Il se compose d'un entier de 16 bits avec la valeur 42. Le troisième champ est un déplacement utilisé pour localiser le premier IFD. Un concept important adopté par le format TIFF est que les divers composantes composant un fichier sont localisés à l'aide de déplacement explicites depuis le début du fichier. Il n'y a pas d'ordre physique par défaut et vous ne devez jamais faire d'hypothèses sur l'ordre des composantes physiques. La seule position réservée est pour l'entête du fichier, étant toujours dans les 8 premiers octets du fichier. Une fois que ceux-ci sont lu, tous les accès aux objets suivants sont réalisés par des déplacement dans le fichier, en commençant par le déplacement vers le premier IFD. En pratique, cela peut être physiquement localisé immédiatement après l'entête ou à la toute fin du fichier. Encore une fois, ne supposez jamais, utilisez les déplacements. La seule convention de classement que vous pouvez supposer est que les entrées dans un IFD sont présentées par ordre numérique croissant par valeur de balise. Certaines balises sont facultatives et ont des valeurs implicites implicites. Si le lecteur rencontre une étiquette avec un nombre supérieur avant de rencontrer une autre étiquette de numéro inférieur, il peut supposer que l'étiquette de numéro inférieur n'est pas présente. Si la balise manquante a des valeurs implicites par défaut, elles sont appliquées. Jusqu'à présent, nous n'avons rien dit sur la Bitmap d'image réelle d'un fichier TIFF. Il y a fort à parier qu'un fichier TIFF en a un, et c'est la dernière généralisation que vous pouvez faire sur les Bitmaps. Pratiquement n'importe quelle organisation de pixel ou schéma de compression peut être utilisé. Les spécificités de l'image (ou des images) d'un fichier donné ne peuvent traiter que les balises du fichier. Notez également que les images peuvent être présentées sous la forme d'une série de bandes ou de bandes. Dans ces cas, l'ensemble de bandes doit être concaténé pour obtenir une image complète. De plus, comme vous pouvez vous en douter, vous ne pouvez pas supposer que les bandes seront situées physiquement dans un fichier dans un ordre particulier. Avec ce bref aperçu, passons maintenant à une inspection plus détaillée du format. Nous commencerons par examiner plus en détail l'entête TIFF, l'IFD et l'entrée IFD. Ensuite, une discussion sur les types de données et les balises spécifiques et leur interprétation, puis un aperçu de plusieurs catégories d'images et des ensembles de balises associés à chaque catégorie.
Structure d'entête du fichier
L'entête TIFF a une longueur de 8 octets et contient trois champs. Il occupe toujours les 8 premiers octets d'un fichier de format TIFF. Il n'y a aucun moyen fiable de décoder un fichier TIFF sans inspecter d'abord l'entête, donc la lecture de l'entête devrait toujours être la première tâche d'un décodeur. Voici la structure d'entête du fichier «.TIF» ou «.TIFF» :
Déplacement | Taille | Description | |
---|---|---|---|
0 | 2 octets | Ce champ permet d'indiquer le format de signature. Voici la chaîne de caractères de 2 octets correspondant aux formats possibles : | |
Valeur | Description | ||
"II" | Cette valeur permet d'indiquer le format des nombres Intel. | ||
"MM" | Cette valeur permet d'indiquer le format des nombres Motorola. | ||
2 | 2 octets | Ce champ permet d'indiquer la version du format TIFF. | |
4 | 4 octets | Ce champ permet d'indiquer le déplacement a effectuer vers le premier bloc «IFD». |
Structure du corps du fichier (Entrée IFD)
Le corps du fichier est constitué d'une suite de bloc de données de taille variable. Normalement, un peu passer d'un bloc à l'autre en utilisant le troisième champ de ses blocs. Voici la structure des blocs des données :
Déplacement | Taille | Description | ||
---|---|---|---|---|
0 | 2 octets | Ce champ permet d'indiquer le code de balise. Voici les valeurs reconnus : | ||
Valeur | Nom | Description | ||
254 (00FEh) | NewSubfileType | Cette valeur permet d'indiquer le nouvel identificateur général du type de données contenues dans un sous-fichier. | ||
255 (00FFh) | SubfileType | Cette valeur permet d'indiquer l'identificateur général du type de données contenues dans un sous-fichier. | ||
256 (0100h) | ImageWidth | Cette valeur permet d'indiquer le nombre de pixels que contient l'image par ligne. | ||
257 (0101h) | ImageLength | Cette valeur permet d'indiquer le nombre de lignes que contient l'image. | ||
258 (0102h) | BitsPerSample | Cette valeur permet d'indiquer le nombre de bits par composante. | ||
259 (0103h) | Compression | Cette valeur permet d'indiquer le schéma de compression qu'utilise les données de l'image. | ||
262 (0106h) | PhotometricInterpretation | Cette valeur permet d'indiquer l'espace de couleur des données de l'image. | ||
263 (0107h) | Threshholding | Cette valeur permet d'indiquer que les fichiers TIFF en noir et blanc doivent être représenté sous formes de nuance de gris. | ||
264 (0108h) | CellWidth | Cette valeur permet d'indiquer que la largeur de la matrice de tramage ou le tramage utilisé afin de créer un fichier tramé ou un tramage à double niveau. | ||
265 (0109h) | CellLength | Cette valeur permet d'indiquer que la longueur de la matrice de tramage ou le tramage utilisé afin de créer un fichier tramé ou un tramage à double niveau. | ||
266 (010Ah) | FillOrder | Cette valeur permet d'indiquer l'ordre logique des bits dans un octet. | ||
270 (010Eh) | ImageDescription | Cette valeur permet d'indiquer une chaîne de caractères décrivant le sujet de l'image. | ||
271 (010Fh) | Make | Cette valeur permet d'indiquer un manufacturier de numériseur à balayage (scanneur). | ||
272 (0110h) | Model | Cette valeur permet d'indiquer le nom du modèle de numériseur à balayage ou le numéro. | ||
273 (0111h) | StripOffsets | Cette valeur permet d'indiquer pour chaque bande, l'octet de déplacement de cette bande. | ||
274 (0112h) | Orientation | Cette valeur permet d'indiquer l'orientation de l'image avec le respect des lignes et des colonnes. | ||
277 (0115h) | SamplesPerPixel | Cette valeur permet d'indiquer le nombre de composante par pixel. | ||
278 (0116h) | RowsPerStrip | Cette valeur permet d'indiquer le nombre de lignes par bande. | ||
279 (0117h) | StripByteCounts | Cette valeur permet d'indiquer, pour chaque bande, le nombre d'octets dans une bande après compression. | ||
280 (0118h) | MinSampleValue | Cette valeur permet d'indiquer la valeur minimum de composante utilisé. | ||
281 (0119h) | MaxSampleValue | Cette valeur permet d'indiquer la valeur maximum de composante utilisé. | ||
282 (011Ah) | XResolution | Cette valeur permet d'indiquer le nombre de pixels par unité de résolution dans la direction de la largeur de l'image. | ||
283 (011Bh) | YResolution | Cette valeur permet d'indiquer le nombre de pixels par unité de résolution dans la direction de la longueur de l'image. | ||
284 (011Ch) | PlanarConfiguration | Cette valeur permet d'indiquer comment la composante entrepose chaque pixel. | ||
288 (0120h) | FreeOffsets | Cette valeur permet d'indiquer une chaîne de caractères continue inutilisé dans le fichier TIFF, soit le déplacement d'octets de la chaîne de caractères. | ||
289 (0121h) | FreeByteCounts | Cette valeur permet d'indiquer une chaîne de caractères continue inutilisé dans le fichier TIFF, soit le nombre d'octets de la chaîne de caractères. | ||
290 (0122h) | GrayResponseUnit | Cette valeur permet d'indiquer la précision de l'information contenu dans le GrayResponseCurve. | ||
291 (0123h) | GrayResponseCurve | Cette valeur permet d'indiquer la densité optique possible de chaque valeur de pixel pour les nuances de gris. | ||
296 (0128h) | ResolutionUnit | Cette valeur permet d'indiquer l'unité de mesure pour le XResolution et le YResolution. | ||
305 (0131h) | Software | Cette valeur permet d'indiquer le nom et le numéro de version des paquets logiciels utilisé pour créer l'image. | ||
306 (0132h) | DateTime | Cette valeur permet d'indiquer la date et l'heure de création de l'image. | ||
315 (013Bh) | Artist | Cette valeur permet d'indiquer la personne qui à créé l'image. | ||
316 (013Ch) | HostComputer | Cette valeur permet d'indiquer l'ordinateur ou le système d'exploitation utilisé pour la création de l'image. | ||
320 (0140h) | ColorMap | Cette valeur permet d'indiquer une carte de couleur pour la palette de couleur des images. | ||
338 (0152h) | ExtraSamples | Cette valeur permet d'indiquer une description de composantes supplémentaires. | ||
33432 (8298h) | Copyright | Cette valeur permet d'indiquer les informations de droits d'auteur. | ||
2 | 2 octets | Ce champ permet d'indiquer le type de données. | ||
4 | 4 octets | Ce champ permet d'indiquer la longueur des données. | ||
8 | 4 octets | Ce champ permet d'indiquer le déplacement à effectuer pour atteindre les données. |
Voir également
Langage de programmation - Traitement d'image - Accueil