JTIP(Images Pyramidales en Tuiles JPEG)


JTIP

(JPEG Tiled Image Pyramid)
Image Pyramidale en Mosaïque JPEG
Toutes les tailles d'images ...
...vers tous les écrans
AVELEM

La maîtrise des images

* : "La Billardière" - 36190 Gargilesse - France

Tél. : (33) 54 47 86 72 - Fax : (33) 54 47 77 99

JTIP, toutes les tailles d'images vers tous les écrans

Introduction
La norme JPEG pour la compression des images fixes connaît un succès grandissant, avec l'arrivée sur le marché des cartes SVGA pour l'affichage en 64000 et 16 millions de couleurs. C'est donc tout naturellement que la demande d'exploitation de banques d'images s'accroît avec des exigences de qualité et que l'échange d'images impose un recours au standard.
JPEG est généralement utilisé pour des images de format courant, principalement parce-que le décodage nécessite une mémoire tampon de la taille de l'image, pour recueillir le résultat des calculs. Le groupe JPEG avait inscrit, pour les images de grande taille, le découpage mosaïque (tiling) au programme des extensions en juillet 1993. Après une première présentation en Floride à Boca Raton lors de la réunion de mars 1994, la solution JTIP, étudiée par AVELEM, a été adoptée par le groupe de travail qui en a confirmé les spécifications et rédigé les recommandations d'application, grâce notamment à une démonstration très complète à la réunion de Bordeaux (11-15 juillet 94).
JTIP (JPEG Tiled Image Pyramid ou Image Pyramidale en Mosaïque JPEG) constitue donc une extension de la norme JPEG pour le traitement des images de toutes dimensions, sur proposition de la délégation française à l'ISO ; le concept d'images pyramidales développé par AVELEM fait maintenant partie de la norme 10918-3 qui doit être définitivement adoptée en novembre 94 à Singapour.
Cet article s'attache à expliquer pourquoi et comment est effectué le découpage mosaïque des images avec, pour exemple, l'exploitation d'un Photo-CD de Kodak.

1 / Principe du découpage mosaïque
Le découpage mosaïque ou tuilage des images
Le découpage mosaïque peut être utilisé pour différentes raisons :
1. Découper une grande image en un certain nombre de plus petites
sous-images adjacentes pour faciliter les transferts et les
manipulations (accès plus rapide).
2. S'affranchir des limitations du système utilisé, telle que la dimension
des mémoires-tampon pour la décompression ou de la mémoire
allouée à l'affichage.
3. Permettre à des images de provenances et de tailles diverses d'être
réunies dans une application commune.
4. Fournir à un hypertexte ou à d'autres applications des morceaux
d'une image destinés à être traités séparément dans le contexte
de la grande image.
Les tuiles d'un découpage simple sont de même taille, à l'exception de la fin de rangée et du bas de l'image ; chaque tuile est repérée soit par un numéro, soit par un système de coordonnées conventionnel (par exemple, indexé sur la position de la tuile dans l'image).
Undisplayed Graphic

2 / Mosaïque pyramidale
Dans la mosaïque pyramidale, non seulement l'image est découpée, mais elle est ensuite réduite puis redécoupée pour former un ensemble d'images de résolutions diverses.
Un exemple d'image mosaïque pyramidale utilisant JPEG pour la compression, appelée JTIP (JPEG Tiled Image Pyramid) est décrit ci-dessous.
Au sommet de la pyramide se trouve la "vignette", dont le format occupe
1/16ème de l'espace de présentation ; on l'utilise principalement pour le
feuilletage (browsing). Sa taille est adaptée pour occuper la plus grande
surface dans la fonction de feuilletage.
Immédiatement au-dessous de la vignette se trouve l'"imagette", qui occupe
le quart de l'écran. De taille quatre fois supérieure à la vignette, l'imagette
est utilisée pour une des fonctions les plus utiles, la comparaison d'images,
avec le plus grand format permettant l'affichage simultané de 2 à 4 images.
Sous l'imagette, il y a l'"image plein écran", la plus grande représentation de
l'image en une seule fois sur un écran donné.
Tous les niveaux en-dessous de l'image plein écran sont découpés en
mosaïque avec, pour taille de tuile, la taille de l'écran ; ainsi, l'examen d'un
détail quelconque d'une grande image ne requiert pas plus de 4 tuiles. Ce
procédé peut être repris pour augmenter la résolution dans une région
particulièrement intéressante de l'image ou pour l'image toute entière.
Undisplayed Graphic
Reste le problème de l'adaptation de la taille de l'image numérisée, dépendante de la résolution et du cadrage conservé, avec la définition de l'écran, même en tenant compte des tailles multiples d'écran. On s'affranchit de cette difficulté en adaptant la première réduction pour obtenir une image dont la taille est une puissance de 2 de celle de l'écran.
Undisplayed Graphic
Principe des réductions écran successives
Remarque : La première réduction doit s'accompagner d'un filtrage pour éviter
tous les artefacts. En général, ce filtrage est reconduit dans toutes
les réductions.

3 / Constitution d'une image en mosaïque pyramidale
Pour coder une image en mode mosaïque pyramidal, on peut suivre les étapes suivantes :
1. Choisir la taille de l'écran-cible d'utilisation et prendre cette taille
comme taille de tuile. Par exemple, une définition de l'écran de
640x480, 720x576, 800x600 en points et x lignes avec une préférence
pour 720x576, en raison de son utilisation pour MPEG, la visiophonie
en format réduit et la télévision numérique.
2. Selon que l'image est en format portrait ou paysage, c'est à dire
plutôt large ou plutôt haute, calculer le rapport "R" de la taille de
l'image à la taille de l'écran.
3. Utiliser "R" en le décomposant comme suit :
R = R1 x 2n
ou R1 est une valeur comprise entre 1,5 et 3 et 2n une puissance de
2 ; R1 sera le premier rapport de réduction, tous les autres rapports
étant égaux à 2 (voir § 2).
4. Découper l'image originale, compresser et stocker tous les morceaux
de taille de écran dans l'ordre du balayage, de gauche à droite et de
haut en bas. Toutes les tuiles de la mosaïque ont la même taille, sauf
la dernière à droite et la rangée du bas.
5. Réduire l'image en appliquant le facteur R1 à l'image originale, avec
un filtrage approprié pour éviter les artefacts de réduction.
Découper alors l'image résultante et procéder comme indiqué au (4).
6. Appliquer ensuite une réduction par 2 en horizontal et vertical à l'image
obtenue en (5) et répéter l'opération du (4).
7. Continuer les réductions par 2 jusqu'à l'obtention de l'image "plein
écran", c'est à dire qu'il n'y a plus qu'une seule tuile.
8. Réduire pas 2 une fois de plus, pour obtenir l'"imagette", dont la taille
est le quart d'écran, compresser et stocker.
9. Effectuer la dernière réduction par 2 pour créer la "vignette", qui est
également stockée comme une tuile.
10. Si le fichier image créé doit être unique et contenir toutes les tuiles
(mode "tuilage interne"), construire le fichier "image" total en
commençant par l'en-tête défini par la norme JPEG, suivi par les
tuiles dans l'ordre :
- vignette
- imagette
- image plein écran
- les quatre tuiles de la haute définition
- les seize tuiles de très haute définition
- .....
- les tuiles de l'image originale.
11. Si le mode "identifiant externe" est utilisé, les tuiles sont alors
considérées comme des fichiers indépendants, on génère autant
de fichiers qu'il y a de tuiles, en leur donnant par exemple à toutes le
même nom et une extension différente spécifiant leur place dans la
pyramide. Chaque fichier contient alors un en-tête permettant son
décodage dans le contexte applicatif.
Notons qu'il existe un certain nombre de types de codage à structure pyramide, tel que le Photo CD, qui n'utilisent pas JPEG et/ou ne sont pas découpés en mosaïque. On peut transcoder ces images vers un format respectant la présente norme par deux méthodes :
a- Utiliser seulement le niveau de définition le plus élevé comme image
originale et suivre les recommandations données ci-dessus.
b- Transcoder chaque niveau de la pyramide existante en respectant
les principes contenus ci-dessus pour le découpage.
La méthode (a) peut donner de meilleurs résultats selon le procédé utilisé pour la réduction de taille des images dans la pyramide originale.
On trouvera page suivante un exemple d'application pour une image Photo CD de type paysage.
Undisplayed Graphic

NOM

ID TUILE

TAILLE TUILE

ID FICHIER

TAILLE MOYENNE FICHIER

FICHIER MOYENNE FICHIER


Vignette

A

168 x 112

.PYA

8 Ko

Imagette

B

336 x 224

.PYB

25 Ko

Image écran

C

672 x 448

.PYC

80 Ko

Tuile

D

720 x 576

.PYD

90 Ko

E

624 x 576

.PYE

80 Ko

F

720 x 318

.PYF

55 Ko

G

624 x 318

.PYG

50 Ko

H à S

720 x 576

.PYH à .PYS

80 Ko

T à W

720 x 320

.PYT à .PYW

50 Ko

ZF, ZH, ZJ

192 x 576

.PZF .PZH .PZJ

30 Ko

ZL

192 x 320

.PZL

15 Ko

Remarque : Pour accélérer les calculs, les réductions R1 sont faites modulo 1/16
dans cet exemple. Cela donne 11 coefficients discrets :
15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5 (seizièmes), ici 7/16.

4 / Fichier image
Il existe deux modes de stockage pour un fichier d'image pyramidale : l'identifiant interne des morceaux ou tuiles (un seul fichier) et l'identifiant externe (fichiers multiples).
4.1 - Identifiant interne
Chaque image est constituée par un seul fichier dans lequel on trouve tous
les morceaux ou tuiles associés sous un seul en-tête de fichier, et séparés
par des marqueurs. Pour faciliter l'exploitation, on range les morceaux dans
l'ordre de la consultation avec la vignette d'abord, puis les tailles croissantes
et les étages découpés en tuiles dans l'ordre du balayage de gauche à droite
par rangée et de haut en bas pour les rangées.
L'en-tête peut être suivi d'une table pointant les débuts de tuiles à l'intérieur
du flot de données représentant l'image et le logiciel de consultation fait son
affaire de trouver les bons morceaux nécessaires à la visualisation
demandée.
A partir d'une image en identifiant interne, on peut constituer des images
partielles (par exemple limitées en résolution pour protéger la propriété de
l'image), ou extraire un niveau partiellement ou totalement, par exemple pour
l'impression.
4.2 - Identifiant externe
Dans ce cas, toutes les tuiles sont stockées comme des fichiers indépendants
et comportent un en-tête permettant leur décodage isolé.
L'ordre dans lequel les fichiers sont stockés est indifférent ; l'accès à un
morceau de l'image requiert 1, 2, ou 4 morceaux mais l'intérêt est que
seulement ces morceaux sont consultés : il en résulte un gain considérable
en temps de transmission.
En revanche, ce procédé oblige à un morcellement des images d'une base
en de multiples répertoires et sous-répertoires, pour éviter les temps de
recherche trop longs dans un même répertoire.
4.3 - Critères de choix
Le point principal est la conversion possible d'un mode d'identification des
tuiles dans l'autre et réciproquement. Le choix qui sera fait aura donc pour
critère principal l'optimisation de l'exploitation et non de l'archivage.
Il est clair qu'un fichier unique ne comportant qu'un seul en-tête avec les
tables sera plus court que l'ensemble des fichiers séparés de quelques pour
cent. En revanche, il faut l'exporter en entier si on veut mettre un niveau
quelconque à disposition en réseau.
L'identifiant externe conduit à une manipulation de fichiers plus nombreux
mais le filtrage par niveau et la recherche dans un niveau est beaucoup plus
simple. L'avantage principal de l'identifiant externe est qu'il peut intégrer des
images existantes non pyramidales puisqu'il utilise un décodeur standard
et accepte les en-têtes simples du type JFIF.
Une image appelée IMAGE se présentera donc sous forme :
- Identifiant interne : d'un grand fichier IMAGE.JTP contenant tous les
niveaux et tous les morceaux de la pyramide
- Identifiant externe : d'un ensemble d'images
IMAGE.PYA (vignette)
IMAGE.PYB (imagette)
IMAGE .PYC (image écran)
(voir l'exemple SCOPYR) et, pour les niveaux supérieurs à 7, un problème
d'identification des morceaux qui sera résolu dans le cadre de l'application.
Remarque : Le concept d'image pyramidale s'applique principalement aux
images dépassant la haute définition ; il est donc souhaitable
de conserver les extensions PYA, PYB et PYC dans tous les
cas, et même de convenir de l'utilisation de PYD, PYE, PYF et
PYG pour le 4ème niveau. A partir du niveau suivant, il peut se
faire que le format soit déjà en dehors du chemin 2x2x2 (voir
chapitre 2).
Exemple de fichier JTIP : en-tête de vignette

0000 (0000) FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 C4

0016 (0010) 00 C4 00 00 FF FE 00 4D 4A 54 49 50 00 01 00 11

0032 (0020) 11 00 04 08 00 0C 00 22 22 00 04 02 D0 02 40 33

0048 (0030) 33 00 30 53 43 4F 50 59 52 2D 41 56 45 4C 45 4D

0064 (0040) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0080 (0050) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0096 (0060) 00 00 00 FF DB 00 84 00 05 03 04 04 04 03 05 04

0112 (0070) 04 04 05 05 05 06 07 0C 08 07 07 07 07 0F 0B 0B

0128 (0080) 09 0C 11 0F 12 12 11 0F 11 11 13 16 1C 17 13 14

0144 (0090) 1A 15 11 11 18 21 18 1A 1D 1D 1F 1F 1F 13 17 22

0160 (00A0) 24 22 1E 24 1C 1E 1F 1E 01 05 05 05 07 06 07 0E

0176 (00B0) 08 08 0E 1E 14 11 14 1E 1E 1E 1E 1E 1E 1E 1E 1E

0192 (00C0) 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E

0208 (00D0) 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E

0224 (00E0) 1E 1E 1E 1E 1E 1E 1E 1E 1E FF C0 00 11 08 00 90

0240 (00F0) 00 60 03 01 21 00 02 11 01 03 11 01 FF C4 01 A2
La zone commentaire (FF FE) contient les informations spécifiques JTIP : taille image originale, taille écran (tuile), identifiant de l'origine du fichier
(ici SCOPYR/AVELEM).

5 / Exploitation de JTIP
Indépendamment du mode de codage des images en identifiant interne ou externe, le programme d'exploitation présentera les étapes suivantes :
1. Feuilletage à 16 vignettes par écran (browsing)
2. Comparaison pour choix d'image entre deux, trois ou quatre imagettes
3. Consultation d'une image entière en occupant au mieux l'écran
4. Sélection d'accès à un niveau de résolution supérieur par l'incrustation
d'un rectangle représentant l'écran projeté dans un autre niveau
(plusieurs tailles de rectangle) et choix du positionnement.
5. Appel du contenu du rectangle choisi, en général avec le décodage de
4 morceaux.
6. Retour au point 4, pour changement de choix, ou décision de
sauvegarder ou d'exporter le contenu de l'écran.
7. Commande d'impression ou d'exportation d'un cadrage donné dans
un niveau donné de résolution.
Bien sûr, à chaque étape, on peut appliquer à l'image des opérations de traitement simple (retournement, conversion positif / négatif, découpe...), ou complexe (renforcement de contour, filtrage, colorimétrie...). Enfin, une fonction pochette complètera les actions de l'opérateur pour la mise de côté des images ayant présenté un intérêt lors de la consultation, pour examen ultérieur.

6 / Intégration de JTIP
La partie génération JTIP peut fonctionner autonome ou en réseau, pour la création des fichiers image à partir des documents à intégrer dans la banque d'images. En revanche, JTIP peut être un programme autonome de consultation d'images, dans la mesure où le nombre d'images et leur mode d'accès est simple (par exemple, les noms significatifs). En général, JTIP est appelé par un programme documentaire textuel indiquant dans un mode DDE par exemple le ou les numéros d'images à consulter et attendant le code de retour en fin de consultation.
Les fonctions de JTIP peuvent aussi être commandées directement par le programme appelant, en utilisant les DLL ou toute autre forme de librairie de fonctions élémentaires écrites en langage C.

7 / Exemple de réalisation
7.1 - Génération des images JTIP
La génération JTIP fait appel au traitement itératif du fichier image bit-map
d'origine ; il est donc souhaitable de disposer d'une mémoire RAM pouvant
contenir toute l'image par accélérer le processus.
D'autre part, le filtrage, en particulier dans la première réduction, nécessite
un temps de calcul dépendant très largement du processeur utilisé. Un
processeur 486-DX4 ou pentium est donc souhaitable sur la station de
génération. De même, un accélérateur JPEG est nécessaire.
La coexistence de l'image en cours de traitement et du programme
d'assistance, l'examen nécessaire de la qualité de l'image, avant décision
de conserver tel ou tel niveau de définition, impose également une structure
à deux écrans, l'écran image étant piloté par une carte 24 bits (vraies
couleurs) et une définition égale à celle de l'exploitation (exemple : 720x576
pour la télévision numérique).
7.2 - Poste de consultation
La consultation fait appel à un calcul simple pour la décision du choix des
morceaux à utiliser ; en revanche, un usage constant est fait de l'automate
de décompression, de la vignette au détail. Il sera donc très utile de disposer
d'un accélérateur matériel donnant un rapport de vitesse de 1 à 10 par
rapport au décompresseur logiciel avec des processeurs courants.
Toutefois, ce rapport tend vers la réduction, du fait de l'utilisation de
puissance de calcul de plus en plus importante au niveau des postes de
consultation.
Le deuxième choix à faire concerne la structure à un ou deux écrans, cette
dernière étant évidemment plus coûteuse, mais aussi beaucoup plus
confortable, l'image étant installée sur un écran sans cadre ni icônes, et le
texte associé pouvant, de même que les fonctions disponibles, être
consulté sur l'autre écran ; tout ceci peut bien sûr être exploité en mono écran
par superposition de fenêtres, avec la contrainte d'une image au minimum de
32 ou 64K couleurs (carte écran 1Mo ou plus) dans une définition adaptée à
la taille et à la qualité de l'écran (par exemple 800x600, 17" et pitch de 0,26
pour une exploitation à 80 cm de distance).
Nous contacter

This document was produced using an evaluation version of HTML Transit