Vous êtes sur la page 1sur 192

UNION INTERNATIONALE DES TÉLÉCOMMUNICATIONS

CCITT T.81
COMITÉ CONSULTATIF (09/92)
INTERNATIONAL
TÉLÉGRAPHIQUE ET TÉLÉPHONIQUE

ÉQUIPEMENTS TERMINAUX ET PROTOCOLES


POUR LES SERVICES DE TÉLÉMATIQUE

TECHNOLOGIE DE L'INFORMATION –
COMPRESSION NUMÉRIQUE
ET CODAGE DES IMAGES FIXES
DE NATURE PHOTOGRAPHIQUE –
PRESCRIPTIONS ET LIGNES DIRECTRICES

Recommandation T.81
Avant-propos

L'UIT (Union internationale des télécommunications) est une Institution spécialisée des Nations Unies dans le domaine
des Télécommunications. Le CCITT (Comité consultatif international télégraphique et téléphonique) est un organe
permanent de l'UIT. Au sein du CCITT, qui est l'entité qui établit les normes mondiales (Recommandations) sur les
télécommunications, participent quelque 166 pays membres, 68 exploitations privées reconnues, 163 organisations
scientifiques et industrielles et 39 organisations internationales.

L'approbation des Recommandations par les membres du CCITT s'effectue selon la procédure définie dans la Réso-
lution n° 2 du CCITT (Melbourne, 1988). De plus, l'Assemblée plénière du CCITT, qui se réunit tous les quatre ans,
approuve les Recommandations qui lui sont soumises et établit le programme d'études pour la période suivante.

Dans certains secteurs de la technologie de l'information qui correspondent à la sphère de compétence du CCITT,
les normes nécessaires se préparent en collaboration avec l'ISO et la CEI. Le texte de la Recommandation T.81 du
CCITT a été approuvé le 18 septembre 1992. Son texte est publié, sous forme identique, comme Norme interna-
tionale ISO/CEI 10918-1.

Ce fichier électronique a été republié en mars 2004 sans modification du contenu technique pour des questions liées au
format retraitable, le texte d'origine ayant été composé en Winword 2.0 et les équations étant souvent devenues illisibles.
De plus, des tableaux ont été centrés et la lisibilité des légendes de la figure B.17 a été améliorée.

___________________

NOTE DU CCITT

Dans cette Recommandation, l'expression «Administration» est utilisée pour désigner de façon abrégée aussi bien une
administration de télécommunications qu'une exploitation privée reconnue.

 UIT 2004

Droits de reproduction réservés. Aucune partie de cette publication ne peut être reproduite ni utilisée sous quelque forme
que ce soit et par aucun procédé, électronique ou mécanique, y compris la photocopie et les microfilms, sans l'accord
écrit de l'UIT.
Table des matières
Page
Introduction ............................................................................................................................................................... iii
1 Domaine d'application.................................................................................................................................... 1
2 Références normatives ................................................................................................................................... 1
3 Définitions, abréviations et symboles ............................................................................................................ 1
4 Considérations générales................................................................................................................................ 15
5 Spécifications du format de transfert.............................................................................................................. 24
6 Spécifications du codeur ................................................................................................................................ 25
7 Spécifications du décodeur............................................................................................................................. 26
Annexe A – Définitions mathématiques.................................................................................................................. 27
Annexe B – Formats de données comprimées......................................................................................................... 34
Annexe C – Spécification des tables de Huffman ................................................................................................... 54
Annexe D – Codage arithmétique ........................................................................................................................... 58
Annexe E – Procédures de contrôle du codeur et du décodeur ............................................................................... 81
Annexe F – Mode de fonctionnement basé DCT séquentiel .................................................................................. 91
Annexe G – Mode de fonctionnement basé DCT progressif.................................................................................. 121
Annexe H – Mode de fonctionnement sans perte................................................................................................... 134
Annexe J – Mode de fonctionnement hiérarchique ................................................................................................ 139
Annexe K – Exemples et directives........................................................................................................................ 145
Annexe L – Brevets ................................................................................................................................................ 181
Annexe M – Bibliographie ..................................................................................................................................... 183

Rec. T.81 du CCITT (1992 F) i


Introduction
La présente Recommandation du CCITT | Norme internationale ISO/CEI a été élaborée par le Groupe d'études VIII du
CCITT et le Groupe commun d'experts en photographie (JPEG) de l'ISO/CEI JTC 1/SC 29/GT 10. Ce groupe d'experts
fut créé en 1986 afin d'élaborer une norme relative au codage séquentiel progressif des images de nature photographique
en niveaux de gris et en couleurs.
Compression numérique et codage des images fixes de nature photographique est publié en deux parties:
– Prescriptions et lignes directrices;
– Test de conformité.
La présente Partie 1 établit les prescriptions et les lignes directrices relatives à la mise en oeuvre des processus de codage
et de décodage des images fixes de nature photographique, et à la représentation codée des données d'image pour les
échanges entre applications. Ces processus et ces représentations ont été conçus pour être génériques, c'est-à-dire pour
être applicables à une vaste gamme d'applications de systèmes informatiques ou de communications destinées aux
images fixes de nature photographique en niveaux de gris ou en couleurs. La Partie 2 définit des tests servant à
déterminer si les applications sont conformes aux prescriptions des différents processus de codage et de décodage
spécifiés dans la Partie 1.
L'utilisateur devra être attentif au fait que, pour certains des processus de codage spécifiés ci-après, la conformité avec la
présente Recommandation | Norme internationale peut exiger l'utilisation d'une invention protégée par des brevets. Pour
plus d'information, se référer à l'Annexe L.
Les prescriptions auxquelles ces processus doivent satisfaire pour être utilisables dans des applications spécifiques de
communication d'images, telles que la télécopie, le vidéotex ou la conférence audiographique sont définies dans la
Recommandation T.80 du CCITT. Il est prévu d'inclure les processus génériques de la Recommandation T.80 dans les
différentes Recommandations du CCITT relatives aux équipements terminaux desdites applications.
En plus des applications étudiées par le CCITT et l'ISO/CEI, le comité JPEG a également élaboré une norme de
compression afin de couvrir également les besoins d'autres applications, telles que la publication assistée par ordinateur,
les arts graphiques, l'imagerie médicale et scientifique.
Les Annexes A, B, C, D, E, F, G, H et J sont normatives et forment donc partie intégrante de la présente Spécification.
Les Annexes K, L et M sont informatives et ne forment donc pas partie intégrante de la présente Spécification.
La présente Spécification tend à suivre les lignes directrices du CCITT et de l'ISO/CEI JTC 1 précisées dans les Règles
de présentation des textes communs CCITT | ISO/CEI.

Rec. T.81 du CCITT (1992 F) iii


ISO/CEI 10918-1 : 1993(F)

NORME INTERNATIONALE
ISO/CEI 10918-1 : 1993(F)
Rec. T.81 du CCITT (1992 F)

RECOMMANDATION DU CCITT

TECHNOLOGIE DE L'INFORMATION – COMPRESSION NUMÉRIQUE


ET CODAGE DES IMAGES FIXES DE NATURE PHOTOGRAPHIQUE –
PRESCRIPTIONS ET LIGNES DIRECTRICES

1 Domaine d'application
La présente Recommandation | Norme internationale est applicable aux données d'images fixes numériques de nature
photographique, en niveaux de gris ou en couleurs. Elle est applicable à une large gamme d'applications nécessitant
l'utilisation d'images comprimées. Elle ne s'applique pas aux données d'images en deux tons.

La présente Spécification
– spécifie les processus de conversion de données d'image source en données d'image comprimées;
– spécifie les processus de conversion de données d'image comprimées en données d'image reconstruite;
– donne des directives de réalisation pratique de ces processus;
– spécifie des représentations codées de données d'image comprimées.
NOTE – La présente Spécification ne définit pas une représentation complète des images codées – qui devrait inclure des
paramètres dépendant de l'application, tels que le facteur d'aspect, la disposition des échantillons de chaque composante et la
définition de l'espace des couleurs.

2 Références normatives
Les Recommandations du CCITT et Normes internationales suivantes contiennent des dispositions qui, par suite de la
référence qui y est faite, constituent des dispositions variables pour la présente Recommandation du CCITT | Norme
internationale. Au moment de la publication, les éditions indiquées étaient en vigueur. Toute Recommandation et Norme
sont sujettes à révision et les parties prenantes aux accords fondés sur la présente Recommandation du CCITT | Norme
internationale sont invitées à rechercher la possibilité d'appliquer les éditions les plus récentes des Recommandations et
Normes indiquées ci-après. Les membres de la CEI et de l'ISO possèdent le registre des Normes internationales en
vigueur. Le Secrétariat du CCITT tient à jour une liste des Recommandations du CCITT en vigueur.
– Recommandation T.80 du CCITT (1992), Composantes communes pour la compression et la communica-
tion d'images – Principes de base.

3 Définitions, abréviations et symboles

3.1 Définitions et abréviations


Pour les besoins de la présente Spécification, les définitions suivantes s'appliquent:

3.1.1 format abrégé (abbreviated format): Représentation de données d'image comprimées dans laquelle manquent
certaines ou toutes les spécifications de tables nécessaires pour le décodage, ou représentation de données de
spécification de tables sans en-tête de trame, en-tête de balayage ni segment à codage entropique.

3.1.2 coefficient AC (AC coefficient): Tout coefficient DCT de fréquence non nulle dans au moins une dimension.

3.1.3 décodage arithmétique (adaptatif) (binaire) ((adaptive) (binary) arithmetic decoding): Procédure de
décodage entropique, rétablissant la séquence de symboles à partir de la séquence binaire produite par le codeur
arithmétique.

Rec. T.81 du CCITT (1992 F) 1


ISO/CEI 10918-1 : 1993(F)

3.1.4 codage arithmétique (adaptatif) (binaire) ((adaptive) (binary) arithmetic encoding): Procédure de codage
entropique, opérant par subdivision récursive de la probabilité de la séquence de symboles déjà codée.

3.1.5 environnement d'application (application environment): Les normes de représentation, communication et


stockage établies pour une application particulière.
3.1.6 décodeur arithmétique (arithmetic decoder): Dispositif réalisant une procédure de décodage arithmétique.

3.1.7 codeur arithmétique (arithmetic encoder): Dispositif réalisant une procédure de codage arithmétique.
3.1.8 (séquentiel) de base (baseline (sequential)): Processus déterminé de codage et de décodage séquentiel basé
DCT, spécifié dans la présente Spécification et requis pour tous les processus de décodage basés DCT.

3.1.9 décision binaire (binary decision): Choix entre deux possibilités.


3.1.10 train binaire (bit stream): Séquence binaire partiellement codée ou décodée, comprenant un segment à
codage entropique.

3.1.11 bloc (block): Tableau 8 × 8 d'échantillons ou tableau 8 × 8 de valeurs des coefficients DCT, d'une
composante.

3.1.12 rangée de blocs (block-row): Suite de huit lignes d'une composante, divisée en blocs 8 × 8.
3.1.13 octet (byte): Groupe de 8 bits.
3.1.14 bourrage d'octets (byte stuffing): Procédure par laquelle le codeur de Huffman ou le codeur arithmétique
insère un octet zéro dans le segment à codage entropique, après avoir généré un octet à codage hexadécimal X’FF’.
3.1.15 bit de retenue (carry bit): Bit du registre de code du codeur arithmétique, positionné si une retenue indique le
dépassement des 8 bits réservés, dans ce registre, à l'octet de sortie.
3.1.16 fonction plafond (ceiling function): Procédure mathématique consistant à remplacer un nombre réel par le
plus proche entier supérieur ou égal.
3.1.17 classe (de processus de codage) (class (of coding process)): Processus de codage avec perte ou sans perte.
3.1.18 registre de code (code register): Registre du codeur arithmétique contenant les bits de plus faible poids d'un
segment dont le codage entropique a été partiellement réalisé. Ou bien, registre du décodeur arithmétique contenant les
bits de plus fort poids d'un segment dont le décodage entropique a été partiellement réalisé.
3.1.19 codeur (coder): Réalisation d'un processus de codage.
3.1.20 codage (coding): Codage ou décodage.
3.1.21 modèle de codage (coding model): Procédure de conversion des données d'entrée en symboles à coder.
3.1.22 processus (de codage) ((coding) process): Terme général désignant un processus de codage, un processus de
décodage, ou les deux.
3.1.23 image en couleurs (colour image): Image de nature photographique, à plusieurs composantes.
3.1.24 colonnes (columns): Echantillons d'une composante, disposés par lignes.
3.1.25 composante (component): Un des tableaux bidimensionnels constituant une image.
3.1.26 données comprimées (compressed data): Données d'image comprimées ou données de spécification de tables
comprimées, ou les deux.
3.1.27 données d'image comprimées (compressed image data): Représentation codée d'une image, telle que
spécifiée dans la présente Spécification.
3.1.28 compression (compression): Réduction du nombre de bits utilisés pour représenter des données d'image
source.
3.1.29 permutation conditionnelle (conditional exchange): Permutation des intervalles de probabilité du MPS et du
LPS chaque fois que la taille de l'intervalle du LPS est supérieure à la taille de l'intervalle du MPS (en codage
arithmétique).
3.1.30 estimation de probabilité (conditionnelle) ((conditional) probability estimate): Valeur de probabilité
affectée au LPS par la machine à états d'estimation de probabilité (en codage arithmétique).

2 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

3.1.31 table décisionnelle (conditioning table): Ensemble de paramètres déterminant la sélection d'une des relations
définies entre des décisions de codage antérieures et les estimations de probabilité conditionnelles utilisées en codage
arithmétique.
3.1.32 contexte (context): Ensemble des décisions binaires codées auparavant, utilisé pour créer l'indice de la
machine à états d'estimation de probabilité (en codage arithmétique).
3.1.33 image de nature photographique (continuous-tone image): Image dont les composantes ont plus d'un bit par
échantillon.
3.1.34 unité de données (data unit): Un bloc 8 × 8 d'échantillons d'une composante, dans les processus basés DCT;
un échantillon, dans les processus sans perte.
3.1.35 coefficient DC (DC coefficient): Coefficient DCT de fréquence nulle dans les deux dimensions.
3.1.36 prédiction DC (DC prediction): Procédure utilisée par les codeurs basés DCT, par laquelle le coefficient DC
quantifié du bloc 8 × 8 précédemment codé dans la même composante est soustrait du coefficient DC quantifié courant.
3.1.37 coefficient (DCT) ((DCT) coefficient): Amplitude d'une fonction spécifique à base cosinus – peut se référer à
un coefficient DCT d'origine, à un coefficient DCT quantifié ou à un coefficient DCT déquantifié.
3.1.38 décodeur (decoder): Dispositif réalisant un processus de décodage.
3.1.39 processus de décodage (decoding process): Processus qui génère une image de nature photographique, à
partir de données d'image comprimées d'entrée.
3.1.40 valeurs décisionnelles par défaut (default conditioning): Valeurs définies pour les tables décisionnelles de
codage arithmétique, au début du codage d'une image.
3.1.41 déquantification (dequantization): Procédure inverse de la quantification, par laquelle le décodeur rétablit
une représentation des coefficients DCT.
3.1.42 composante différentielle (differential component): Différence entre une composante d'entrée dérivée de
l'image source, et la composante de référence correspondante dérivée de la trame précédente dans cette composante (en
mode de codage hiérarchique).
3.1.43 trame différentielle (differential frame): Trame, dans un processus hiérarchique, dont les composantes
différentielles sont codées ou décodées.
3.1.44 (données) (numériques) d'image reconstruite ((digital) reconstructed image (data)): Image de nature
photographique, en sortie d'un décodeur défini dans la présente Spécification.
3.1.45 (données) (numériques) d'image source ((digital) source image (data)): Image de nature photographique, en
entrée d'un codeur défini dans la présente Spécification.
3.1.46 image (fixe) (numérique) ((digital) (still) image): Ensemble de tableaux bidimensionnels de données
entières.
3.1.47 transformation en cosinus discrète (DCT) (discrete cosine transform): Transformation en cosinus discrète
directe ou transformation en cosinus discrète inverse.
3.1.48 (filtre de) sous-échantillonnage (downsampling (filter)): Procédure de réduction de la résolution spatiale
d'une image (en mode de codage hiérarchique).
3.1.49 codeur (encoder): Dispositif réalisant un processus de codage.
3.1.50 processus de codage (encoding process): Processus produisant à partir d'une image de nature
photographique, des données d'image comprimées.
3.1.51 segment (de données) à codage entropique (entropy-coded (data) segment): Séquence indépendamment
décodable d'octets de données d'image comprimées, à codage entropique.
3.1.52 pointeur (de segment à codage entropique) ((entropy-coded segment) pointer): Variable pointant vers le
dernier octet mis en place (ou appelé) dans le segment à codage entropique.
3.1.53 décodeur entropique (entropy decoder): Dispositif réalisant une procédure de décodage entropique.
3.1.54 décodage entropique (entropy decoding): Procédure sans perte rétablissant la séquence de symboles à partir
de la séquence binaire produite par le codeur entropique.
3.1.55 codeur entropique (entropy encoder): Dispositif réalisant une procédure de codage entropique.

Rec. T.81 du CCITT (1992 F) 3


ISO/CEI 10918-1 : 1993(F)

3.1.56 codage entropique (entropy encoding): Procédure sans perte convertissant une séquence de symboles
d'entrée en une séquence binaire telle que le nombre moyen de bits par symbole tende vers l'entropie des symboles
d'entrée.

3.1.57 processus (basé DCT) étendu (extended (DCT-based) process): Terme désignant des processus de codage et
de décodage basés DCT, dans lesquels des capacités additionnelles sont ajoutées au processus séquentiel de base.

3.1.58 transformation en cosinus discrète directe (FDCT) (forward discrete cosine transform): Transformation
mathématique utilisant des fonctions à base cosinus, qui convertit un bloc d'échantillons en un bloc correspondant de
coefficients DCT d'origine.

3.1.59 trame (frame): Groupe d'un ou plusieurs balayages (utilisant tous le même processus basé DCT ou sans perte)
au travers des données d'une ou plusieurs composantes d'une image.

3.1.60 en-tête de trame (frame header): Segment marqueur contenant un marqueur de début de trame et les
paramètres de trame associés, codés au début d'une trame.

3.1.61 fréquence (frequency): Indice dans le tableau bidimensionnel des coefficients DCT.

3.1.62 bande (de fréquences) ((frequency) band): Suite de coefficients de la séquence en zigzag (en mode de codage
progressif).

3.1.63 pleine progression (full progression): Processus utilisant la sélection spectrale et les approximations
successives (en mode de codage progressif).

3.1.64 image en niveaux de gris (grayscale image): Image de nature photographique à une seule composante.

3.1.65 hiérarchique (hierarchical): Mode de fonctionnement pour le codage d'une image, dans lequel la première
trame d'une composante donnée est suivie de trames qui codent les différences entre les données source et les données
reconstruites à partir de la trame précédente dans cette composante. Des changements de résolution sont autorisés entre
trames.

3.1.66 décodeur hiérarchique (hierarchical decoder): Séquence de processus de décodage dans laquelle la première
trame dans chaque composante est suivie de trames qui décodent un tableau de différences dans chaque composante et
l'ajoutent aux données reconstruites à partir de la trame précédente dans cette composante.

3.1.67 codeur hiérarchique (hierarchical encoder): Mode de fonctionnement dans lequel la première trame dans
chaque composante est suivie de trames qui codent le tableau des différences entre les données source et les données
reconstruites à partir de la trame précédente dans cette composante.

3.1.68 facteur d'échantillonnage horizontal (horizontal sampling factor): Nombre relatif d'unités de données
horizontales dans une composante particulière, exprimé par rapport au nombre d'unités de données horizontales dans les
autres composantes.

3.1.69 décodeur de Huffman (Huffman decoder): Dispositif réalisant une procédure de décodage de Huffman.

3.1.70 décodage de Huffman (Huffman decoding): Procédure de décodage entropique, rétablissant le symbole à
partir de chaque code de longueur variable produit par le codeur de Huffman.

3.1.71 codeur de Huffman (Huffman encoder): Dispositif réalisant une procédure de codage de Huffman.

3.1.72 codage de Huffman (Huffman encoding): Procédure de codage entropique affectant un code de longueur
variable à chaque symbole d'entrée.

3.1.73 table de Huffman (Huffman table): Ensemble des codes de longueur variable requis dans un codeur de
Huffman et dans un décodeur de Huffman.

3.1.74 données d'image (image data): Données d'image source ou données d'image reconstruite.

3.1.75 format de transfert (interchange format): Représentation de données d'image comprimées pour transfert
entre environnements d'application.

3.1.76 entrelacé (interleaved): Terme qualifiant le multiplexage répétitif de petits groupes d'unités de données de
chacune des composantes d'un balayage, dans un ordre spécifique.

3.1.77 transformation en cosinus discrète inverse (IDCT) (inverse discrete cosine transform): Transformation
mathématique utilisant des fonctions à base cosinus, convertissant un bloc de coefficients DCT déquantifiés en un bloc
correspondant d'échantillons.

4 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

3.1.78 groupe commun d'experts sur la compression des images de nature photographique (JPEG) (joint
photographic experts group): Nom informel du goupe qui a élaboré la présente Spécification, résultant de la
collaboration entre le CCITT et l'ISO/CEI.

3.1.79 sortie latente (latent output): Sortie du décodeur arithmétique, conservée en attente de résolution de retenue
(en codage arithmétique).

3.1.80 symbole le moins probable (LPS) (less probable symbol): Valeur la moins probable d'une décision binaire.

3.1.81 décalage de niveau (level shift): Procédure utilisée par les codeurs et décodeurs basés DCT, et où chaque
échantillon d'entrée est converti soit d'une représentation non signée en une représentation en complément à deux, soit
d'une représentation en complément à deux en une représentation non signée.

3.1.82 sans perte (lossless): Terme qualifiant des processus et procédures de codage et de décodage, dont la sortie du
décodage est identique à l'entrée du codage.

3.1.83 codage sans perte (lossless coding): Mode de fonctionnement se référant à un des processus de codage
définis dans la présente Spécification, et dont toutes les procédures sont «sans perte» (voir l'Annexe H).

3.1.84 avec perte (lossy): Terme qualifiant les processus de codage et de décodage qui ne sont pas «sans perte».

3.1.85 marqueur (marker): Code de deux octets dont le premier octet est l'hexadécimal FF (X’FF’) et le second
octet une valeur entre 1 et l'hexadécimal FE (X’FE’).

3.1.86 segment marqueur (marker segment): Marqueur suivi de l'ensemble de paramètres associés.

3.1.87 rangée de MCU (MCU-row): Plus petite séquence de MCU (unités codées minimales) contenant au moins
une ligne d'échantillons ou une rangée de blocs de chaque composante du balayage.

3.1.88 unité codée minimale (MCU) (minimum coded unit): Plus petit groupe d'unités de données codées.

3.1.89 modes (de fonctionnement) (modes (of operation)): Les quatre grandes catégories de processus de codage
d'image définies dans la présente Spécification.

3.1.90 symbole le plus probable (MPS) (more probable symbol): Valeur la plus probable d'une décision binaire.

3.1.91 trame non différentielle (non-differential frame): Dans un codeur ou un décodeur hiérarchique, première
trame de toute composante, dans laquelle les composantes sont codées ou décodées sans soustraction d'une composante
de référence. Dans les modes autres que hiérarchiques, toute trame.

3.1.92 non entrelacé (non-interleaved): Terme qualifiant la séquence de traitement des unités de données lorsque le
balayage n'a qu'une seule composante.

3.1.93 paramètres (parameters): Entiers de longueur fixe 4 bits, 8 bits ou 16 bits, utilisés dans les formats de
données comprimées.

3.1.94 transformation point (point transform): Changement d'échelle d'un échantillon ou d'un coefficient DCT.

3.1.95 précision (precision): Nombre de bits affectés à un échantillon ou à un coefficient DCT.

3.1.96 prédicteur (predictor): Combinaison linéaire de valeurs reconstruites antérieurement (en mode de codage
sans perte).

3.1.97 machine à états d'estimation de probabilité (probability estimation state machine): Table chaînée de
valeurs de probabilités et d'indices, utilisée pour l'estimation de la probabilité du LPS (en codage arithmétique).

3.1.98 intervalle de probabilité (probability interval): Probabilité d'une suite particulière de décisions binaires, dans
l'ensemble ordonné de toutes les suites possibles (en codage arithmétique).

3.1.99 sous-intervalle (de probabilité) ((probability) sub-interval): Partie d'un intervalle de probabilité affecté à
l'une des deux valeurs de décision binaire possibles (en codage arithmétique).

3.1.100 procédure (procedure): Ensemble d'étapes de traitement, accomplissant une des tâches d'un processus de
codage ou de décodage.

Rec. T.81 du CCITT (1992 F) 5


ISO/CEI 10918-1 : 1993(F)

3.1.101 processus (process): Voir processus de codage.


3.1.102 (codage) progressif (progressive (coding)): Un des processus basés DCT définis dans la présente
Spécification, dans lequel chaque balayage améliore normalement la qualité de l'image reconstruite.
3.1.103 basé DCT progressif (progressive DCT-based): Mode de fonctionnement de l'un des processus définis dans
l'Annexe G.
3.1.104 table de quantification (quantization table): Ensemble des 64 valeurs utilisées pour la quantification des
coefficients DCT.
3.1.105 valeur de quantification (quantization value): Valeur entière utilisée dans la procédure de quantification.
3.1.106 quantifier (quantize): Exécuter la procédure de quantification d'un coefficient DCT.
3.1.107 composante de référence (reconstruite) (reference (reconstructed) component): Données de la composante
reconstruite, utilisées dans une trame subséquente d'un processus de codage ou de décodage hiérarchique (en mode de
codage hiérarchique).
3.1.108 renormalisation (renormalization): Doublement de l'intervalle de probabilité et de la valeur du registre de
code, répété jusqu'à ce que l'intervalle de probabilité dépasse une valeur minimale fixée.
3.1.109 intervalle de reprise (restart interval): Nombre entier de MCU traitées comme une séquence indépendante
dans un balayage.
3.1.110 marqueur de reprise (restart marker): Marqueur séparant deux intervalles de reprise dans un balayage.
3.1.111 (longueur de) plage (run (length)): Nombre de symboles consécutifs de même valeur.
3.1.112 échantillon (sample): Elément du tableau bidimensionnel constituant une composante.
3.1.113 entrelacé par échantillons (sample-interleaved): Terme qualifiant le multiplexage répétitif d'un petit groupe
d'échantillons de chaque composante d'un balayage, dans un ordre spécifique.
3.1.114 balayage (scan): Passage au travers des données d'une ou plusieurs composantes d'une image.
3.1.115 en-tête de balayage (scan header): Segment marqueur, contenant un marqueur de début de balayage, suivi
des paramètres de balayage codés en début de balayage.
3.1.116 (codage) séquentiel (sequential (coding)): Un des processus de codage sans perte ou basés DCT définis dans
la présente Spécification, dans lequel chaque composante de l'image est codée en un seul balayage.
3.1.117 basé DCT séquentiel (sequential DCT-based): Mode de fonctionnement de l'un des processus définis dans
l'Annexe F.
3.1.118 sélection spectrale (spectral selection): Processus de codage progressif dans lequel la séquence en zigzag est
divisée en bandes d'un coefficient ou de plusieurs coefficients consécutifs, chaque bande étant codée en un seul
balayage.
3.1.119 compteur de pile (stack counter): Nombre d'octets X’FF’ conservés dans le codeur arithmétique, en attente
de résolution de retenue.
3.1.120 conditionnement statistique (statistical conditioning): Sélection, fondée sur des décisions de codage
antérieures, d'une estimation dans un ensemble d'estimations de probabilité conditionnelles (en codage arithmétique).
3.1.121 modèle statistique (statistical model): Affectation d'une estimation de probabilité conditionnelle à chacune
des décisions de codage arithmétique binaire.
3.1.122 zone statistique (statistics area): Tableau des registres statistiques nécessaires pour un processus de codage
utilisant le codage arithmétique.
3.1.123 registre statistique (statistics bin): Emplacement où est stocké un indice identifiant la valeur de l'estimation
de probabilité conditionnelle utilisée pour une décision binaire de codage arithmétique particulière.
3.1.124 approximations successives (successive approximation): Processus de codage progressif dans lequel les
coefficients sont codés avec une précision réduite au premier balayage, puis augmentée d'un bit à chaque balayage
successif.
3.1.125 données de spécification de table (table specification data): Représentation codée, à partir de laquelle sont
générées les tables utilisées dans le codeur et dans le décodeur, et leurs destinations spécifiées.

6 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

3.1.126 transcodeur (transcoder): Procédure de conversion des données d'image comprimées d'un processus de
codage en données d'image comprimées d'un autre processus de codage.
3.1.127 quantification (uniforme) ((uniform) quantization): Procédure d'application d'une loi linéaire aux
coefficients DCT pour réaliser la compression.
3.1.128 (filtre de) suréchantillonnage (upsampling (filter)): Procédure d'augmentation de la résolution spatiale d'une
image.
3.1.129 facteur d'échantillonnage vertical (vertical sampling factor): Nombre relatif d'unités de données verticales
d'une composante, exprimé par rapport au nombre d'unités de données verticales des autres composantes.
3.1.130 octet nul (zero byte): Octet X’00’.
3.1.131 séquence en zigzag (zig-zag sequence): Ordre séquentiel spécifique des coefficients DCT, allant
(approximativement) des fréquences spatiales les plus basses aux plus élevées.
3.1.132 prédicteur à 3 échantillons (3-sample predictor): Combinaison linéaire des 3 échantillons reconstruits les
plus proches, situés à gauche et au-dessus (en mode de codage sans perte).

3.2 Symboles
Les symboles utilisés dans la présente Spécification sont donnés ci-après.
A Intervalle de probabilité (probability interval)
AC Coefficient DCT AC (AC DCT coefficient)
ACji Coefficient AC prédit à partir de valeurs DC (AC coefficient predicted from DC values)
Ah Paramètre de position binaire en approximations successives (haut) (successive
approximation bit position, high)
Al Paramètre de position binaire en approximations successives (bas) ou de transformation point
(successive approximation bit position, low)
Api ième paramètre de 8 bits du segment APPn (ith 8-bit parameter in APPn segment)
APPn Marqueur réservé aux segments d'application (marker reserved for application segments)
B Octet courant dans les données comprimées (current byte in compressed data)

B2 Octet suivant dans les données comprimées lorsque B = X’FF’ (next byte in compressed data
when B = X’FF’)
BE Compteur des bits de correction en mémoire tampon, en vue du codage de Huffman, dans le
processus par approximations successives (counter for buffered correction bits for Huffman
coding in the successive approximation process)
BITS Liste de 16 octets contenant le nombre de codes de Huffman de chaque longueur (16-byte list
containing number of Huffman codes of each length)
BP Pointeur vers les données comprimées (pointer to compressed data)
BPST Pointeur vers l'octet précédant le début du segment à codage entropique (pointer to byte
before start of entropy-coded segment)
BR Compteur des bits de correction en mémoire tampon, en vue du codage de Huffman, dans le
processus par approximations successives (counter for buffered correction bits for Huffman
coding in the successive approximation process)
Bx Bit modifié par une retenue (byte modified by a carry-over)
C Valeur instantanée du train binaire contenu dans le registre de code (value of bit stream in
code register)
Ci Identificateur de composante de trame (component identifier for frame)
Cu Facteur d'échelle de la DCT, dépendant de la fréquence horizontale (horizontal frequency
dependent scaling factor in DCT)

Rec. T.81 du CCITT (1992 F) 7


ISO/CEI 10918-1 : 1993(F)

Cv Facteur d'échelle de la DCT, dépendant de la fréquence verticale (vertical frequency


dependent scaling factor in DCT)

CE Permutation conditionnelle (conditional exchange)

C-low 16 bits de plus faible poids du registre de code du décodeur arithmétique (low order 16 bits of
the arithmetic decoder code register)

Cmi ième paramètre de 8 bits du segment COM (ith 8-bit parameter in COM segment)

CNT Compteur binaire de la procédure NEXTBYTE (bit counter in NEXTBYTE procedure)

CODE Valeur du code de Huffman (Huffman code value)

CODESIZE(V) Taille du code du symbole V (code size for symbol V)

COM Marqueur de commentaire (comment marker)

Cs Valeur de la table de conditionnement (conditioning table value)

Csi Identificateur de composante pour le balayage (component identifier for scan)

CT Compteur de décalage de renormalisation (renormalization shift counter)

Cx 16 bits de plus fort poids du registre de code du décodeur arithmétique (high order 16 bits of
arithmetic decoder code register)

CX Permutation conditionnelle (conditional exchange)

dji Unité de données de position horizontale i et de position verticale j (data unit from horizontal
position i, vertical position j)

djik dji de la composante k (dji for component k)

D Décision décodée (decision decoded)

Da En codage DC, différence codée pour le précédent bloc de la même composante; en codage
sans perte, différence codée pour l'échantillon se trouvant immédiatement à gauche (in DC
coding, the DC difference coded for the previous block from the same component; in lossless
coding, the difference coded for the sample immediately to the left)

DAC Marqueur de conditionnement de définition du codage arithmétique (define-arithmetic-


coding-conditioning marker)

Db Différence codée pour l'échantillon immédiatement supérieur (the difference coded for the
sample immediately above)

DC Coefficient DCT DC (DC DCT coefficient)

DCi Coefficient DC du ième bloc d'une composante (DC coefficient for ith block in component)

DCk kième valeur DC utilisée dans la prédiction des coefficients alternatifs (kth DC value used in
prediction of AC coefficients)

DHP Marqueur de définition de progression hiérarchique (define hierarchical progression marker)

DHT Marqueur de définition des tables de Huffman (define-Huffman-tables marker)

DIFF Différence entre le coefficient DC quantifié et la prédiction (difference between quantized DC


and prediction)

DNL Marqueur de définition du nombre de lignes (define-number-of-lines marker)

DQT Marqueur de définition de table de quantification (define-quantization-tables marker)

DRI Marqueur de définition d'intervalle de reprise (define restart interval marker)

8 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

E Exposant de la limite supérieure de la catégorie de valeur absolue (exponent in magnitude


category upper bound)

EC Compteur d'événements (event counter)

ECS Abréviation de segment à codage entropique (entropy-coded segment)

ECSi ième segment à codage entropique (ith entropy-coded segment)

Eh Paramètre d'expansion horizontale du segment EXP (horizontal expansion parameter in


EXP segment)

EHUFCO Table de codage Huffman du codeur (Huffman code table for encoder)

EHUFSI Table du codeur, contenant les tailles des codes de Huffman (encoder table of Huffman code
sizes)

EOB Fin de bloc en codage séquentiel; fin de bande en codage progressif (end-of-block for
sequential; end-of-band for progressive)

EOBn Catégorie de longueur des plages d'EOB (run length category for EOB runs)

EOBx Position de l'EOB dans le balayage précédent, en approximations successives (position of


EOB in previous successive approximation scan)

EOB0, EOB1, ... EOB14 Catégories de longueur des plages d'EOB (run length categories for EOB runs)

EOI Marqueur de fin d'image (end-of-image marker)

Ev Paramètre d'expansion verticale du segment EXP (vertical expansion parameter in EXP


segment)

EXP Marqueur d'expansion des composantes de référence (expand reference components marker)

FREQ(V) Fréquence d'occurrence du symbole V (frequency of occurrence of symbol V)

Hi Facteur d'échantillonnage vertical de la ième composante (horizontal sampling factor for


ith component)

Hmax Plus grand facteur d'échantillonnage horizontal (largest horizontal sampling factor)

HUFFCODE Liste des codes de Huffman correspondant aux longueurs dans HUFFSIZE (list of Huffman
codes corresponding to lengths in HUFFSIZE)

HUFFSIZE Liste des longueurs de code (list of code lengths)

HUFFVAL Liste des valeurs affectées à chaque code de Huffman (list of values assigned to each
Huffman code)

i Indice inférieur (subscript index)

I Variable entière (integer variable)

Index(S) Entrée de la machine à états d'estimation de probabilité, pour l'indice de contexte S (index to
probability estimation state machine table for context index S)

j Indice inférieur (subscript index)

J Variable entière (integer variable)

JPG Marqueur réservé aux extensions JPEG (marker reserved for JPEG extensions)

JPGn Marqueur réservé aux extensions JPEG (marker reserved for JPEG extensions)

k Indice inférieur (subscript index)

K Variable entière (integer variable)

Rec. T.81 du CCITT (1992 F) 9


ISO/CEI 10918-1 : 1993(F)

Kmin Indice du premier coefficient AC d'une bande (1 en DCT séquentiel) (index of 1st AC
coefficient in band (1 for sequential DCT))

Kx Paramètre du modèle de codage arithmétique DC (conditioning parameter for AC arithmetic


coding model)

L Paramètre de limite inférieure des valeurs décisionnelles pour le codage du coefficient DC et


en codage sans perte (DC and lossless coding conditioning lower bound parameter)

Li Elément de la liste BITS du segment DHT (element in BITS list in DHT segment)

Li(t) Elément de la liste BITS du segment DHT pour la table de Huffman t (element in BITS list in
the DHT segment for Huffman table t)

La Longueur des paramètres du segment APPn (length of parameters in APPn segment)

LASTK Plus grande valeur de K (largest value of K)

Lc Longueur des paramètres du segment COM (length of parameters in COM segment)

Ld Longueur des paramètres du segment DNL (length of parameters in DNL segment)

Le Longueur des paramètres du segment EXP (length of parameters in EXP segment)

Lf Longueur des paramètres d'en-tête de trame (length of frame header parameters)

Lh Longueur des paramètres du segment DHT (length of parameters in DHT segment)

Lp Longueur des paramètres du segment DAC (length of parameters in DAC segment)

LPS Symbole le moins probable (less probable symbol (in arithmetic coding))

Lq Longueur des paramètres du segment DQT (length of parameters in DQT segment)

Lr Longueur des paramètres du segment DRI (length of parameters in DRI segment)

Ls Longueur des paramètres d'en-tête de balayage (length of scan header parameters)

LSB Bit de plus faible poids (least significant bit)

m Compteur modulo 8 associé au marqueur RSTm (modulo 8 counter for RSTm marker)

mt Nombre de paramètres Vi,j dans la table de Huffman t (number of Vi,j parameters for Huffman
table t)

M Masque binaire utilisé pour le codage de la valeur absolue de V (bit mask used in coding
magnitude of V)

Mn nième registre statistique utilisé pour le codage de la catégorie de configuration binaire de la


valeur absolue (nth statistics bin for coding magnitude bit pattern category)

MAXCODE Table contenant la valeur maximale du code de Huffman correspondant à chaque longueur
de code (table with maximum value of Huffman code for each code length)

MCU Unité codée minimale (minimum coded unit)

MCUi ième MCU (ith MCU)

MCUR Nombre de MCU nécessaires pour constituer une rangée de MCU (number of MCU required
to make up one MCU-row)

MINCODE Table contenant la valeur minimale du code de Huffman correspondant à chaque longueur de
code (table with minimum value of Huffman code for each code length)

MPS Symbole le plus probable (en codage arithmétique) (more probable symbol (in arithmetic
coding))

MPS(S) Symbole le plus probable pour l'indice de contexte S (more probable symbol for context-
index S)

10 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

MSB Bit de plus fort poids (most significant bit)

M2, M3, M4, ... M15 Désignation des indices de contexte, pour le codage des bits de valeur absolue dans les
modèles de codage arithmétique (designation of context-indices for coding of magnitude bits
in the arithmetic coding models)

n Variable entière (integer variable)

N Compteur d'unités de données pour le codage des MCU (data unit counter for MCU coding)

N/A Non applicable (not applicable)

Nb Nombre d'unités de données dans une MCU (number of data units in MCU)

Next_Index_LPS Nouvelle valeur d'Index(S) après renormalisation du LPS (new value of Index(S) after a LPS
renormalization)

Next_Index_MPS Nouvelle valeur d'Index(S) après renormalisation du MPS (new value of Index(S) after a MPS
renormalization)

Nf Nombre de composantes par trame (number of components in frame)

NL Nombre de lignes défini dans un segment DNL (number of lines defined in DNL segment)

Ns Nombre de composantes d'un balayage (number of components in scan)

OTHERS(V) Indice du symbole suivant de la chaîne (index to next symbol in chain)

P Précision d'échantillon (sample precision)

Pq Paramètre de précision de quantification du segment DQT (quantizer precision parameter in


DQT segment)

Pq(t) Paramètre de précision de quantification du segment DQT pour la table de quantification t


(quantizer precision parameter in DQT segment for quantization table t)

PRED Coefficient DC quantifié du bloc le plus récemment codé de la composante (quantized DC


coefficient from the most recently coded block of the component)

Pt Paramètre de transformation point (point transform parameter)

Px Valeur calculée de l'échantillon (calculated value of sample)

Qji Valeur de quantification du coefficient ACji (quantizer value for coefficient ACji)

Qvu Valeur de quantification du coefficient DCT Svu (quantization value for DCT coefficient Svu)

Q00 Valeur de quantification du coefficient DC (quantizer value for DC coefficient)

QACji Coefficient AC quantifié prédit d'après les valeurs DC (quantized AC coefficient predicted
from DC values)

QDCk kième valeur DC quantifiée utilisée dans la prédiction des coefficients AC (kth quantized DC
value used in prediction of AC coefficients)

Qe Estimation de probabilité du LPS (LPS probability estimate)

Qe(S) Estimation de probabilité du LPS pour l'indice de contexte S (LPS probability estimate for
context index S)

Qk kième élément des 64 éléments de quantification du segment DQT (kth element of


64 quantization elements in DQT segment)

rvu Echantillon d'image reconstruite (reconstructed image sample)

R Longueur d'une plage de coefficients AC d'amplitude nulle (length of run of zero amplitude
AC coefficients)

Rvu Coefficient DCT déquantifié (dequantized DCT coefficient)

Rec. T.81 du CCITT (1992 F) 11


ISO/CEI 10918-1 : 1993(F)

Ra Valeur d'échantillon reconstruite (reconstructed sample value)

Rb Valeur d'échantillon reconstruite (reconstructed sample value)

Rc Valeur d'échantillon reconstruite (reconstructed sample value)

Rd Arrondi dans le calcul de prédiction (rounding in prediction calculation)

RES Marqueurs réservés (reserved markers)

Ri Intervalle de reprise du segment DRI (restart interval in DRI segment)

RRRR Valeur sur 4 bits de la longueur d'une plage de coefficients AC nuls (4-bit value of run length
of zero AC coefficients)

RS Valeur composite utilisée dans le codage de Huffman des coefficients AC (composite value
used in Huffman coding of AC coefficients)

RSTm Marqueur de reprise (restart marker number m)

syx Valeur reconstruite à partir de l'IDCT (reconstructed value from IDCT)

S Indice de contexte (context index)

Svu Coefficient DCT de fréquence horizontale u, et de fréquence verticale v (DCT coefficient at


horizontal frequency u, vertical frequency v)

SC Indice de contexte de codage du bit de correction en codage par approximations successives


(context-index for coding of correction bit in successive approximation coding)

Se Fin de la bande de sélection spectrale de la séquence en zigzag (end of spectral selection band
in zig-zag sequence)

SE Indice de contexte de codage de fin de bloc ou de fin de bande (context-index for coding of
end-of-block or end-of-band)

SI Taille du code de Huffman (Huffman code size)

SIGN 1 si le signe décodé est négatif; 0 si le signe décodé est positif (1 if decoded sense of sign is
negative and 0 if decoded sense of sign is positive)

SIZE Longueur d'un code de Huffman (length of a Huffman code)

SLL Opération logique de décalage à gauche (shift left logical operation)

SLL α β Décalage logique de α à gauche, de β bits (logical shift left of α by β bits)

SN Indice de contexte pour le codage de la première catégorie de valeur absolue lorsque V est
négatif (context-index for coding of first magnitude category when V is negative)

SOF0 Marqueur de trame en processus DCT de base (baseline DCT process frame marker)

SOF1 Marqueur de trame en DCT séquentiel étendu, codage de Huffman (extended sequential DCT
frame marker, Huffman coding)

SOF2 Marqueur de trame en DCT progressif, codage de Huffman (progressive DCT frame marker,
Huffman coding)

SOF3 Marqueur de trame en processus sans perte, codage de Huffman (lossless process frame
marker, Huffman coding)

SOF5 Marqueur de trame en DCT séquentiel différentiel, codage de Huffman (differential


sequential DCT frame marker, Huffman coding)

SOF6 Marqueur de trame en DCT progressif différentiel, codage de Huffman (differential


progressive DCT frame marker, Huffman coding)

SOF7 Marqueur de trame en processus sans perte différentiel, codage de Huffman (differential
lossless process frame marker, Huffman coding)

12 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

SOF9 Marqueur de trame en DCT séquentiel, codage arithmétique (sequential DCT frame marker,
arithmetic coding)

SOF10 Marqueur de trame en DCT progressif, codage arithmétique (progressive DCT frame marker,
arithmetic coding)

SOF11 Marqueur de trame en processus sans perte, codage arithmétique (lossless process frame
marker, arithmetic coding)

SOF13 Marqueur de trame en DCT séquentiel différentiel, codage arithmétique (differential


sequential DCT frame marker, arithmetic coding)

SOF14 Marqueur de trame en DCT progressif différentiel, codage arithmétique (differential


progressive DCT frame marker, arithmetic coding)

SOF15 Marqueur de trame en processus sans perte différentiel, codage arithmétique (differential
lossless process frame marker, arithmetic coding)

SOI Marqueur de début d'image (start-of-image marker)

SOS Marqueur de début de balayage (start-of-scan marker)

SP Indice de contexte de codage de la première catégorie de valeur absolue lorsque V est positif
(context-index for coding of first magnitude category when V is positive)

Sqvu Coefficient DCT quantifié (quantized DCT coefficient)

SRL Opération logique de décalage à droite (shift right logical operation)

SRL α β Décalage logique de α à droite, de β bits (logical shift right of α by β bits)

Ss Début de la bande de sélection spectrale d'une séquence en zigzag (start of spectral selection
band in zig-zag sequence)

SS Indice de contexte pour le codage de la décision de signe (context-index for coding of sign
decision)

SSSS Catégorie de grandeur, sur 4 bits, de différence DC ou d'amplitude de coefficient AC (4-bit


size category of DC difference or AC coefficient amplitude)

ST Compteur de pile (stack counter)

Switch_MPS Paramètre contrôlant la permutation des valeurs du MPS (parameter controlling inversion of
sense of MPS)

Sz Paramètre utilisé dans le codage de la valeur absolue de V (parameter used in coding


magnitude of V)

S0 Indice de contexte pour le codage de la décision V = 0 (context-index for coding of V = 0


decision)

t Indice de sommation pour le calcul des limites d'un paramètre (summation index for
parameter limits computation)

T Variable temporaire (temporary variable)

Taj Sélecteur de destination de table de coefficients entropiques AC pour la jème composante d'un
balayage (AC entropy table destination selector for jth component in scan)

Tb Identificateur de destination de table décisionnelle arithmétique (arithmetic conditioning table


destination identifier)

Tc Classe de table de codage de Huffman ou de table de codage arithmétique (Huffman coding or


arithmetic coding table class)

Tdj Sélecteur de destination de table de coefficients entropiques DC pour la jème composante d'un
balayage (DC entropy table destination selector for jth component in scan)

TEM Marqueur temporaire (temporary marker)

Rec. T.81 du CCITT (1992 F) 13


ISO/CEI 10918-1 : 1993(F)

Th Identificateur de destination de table de Huffman dans le segment DHT (Huffman table


destination identifier in DHT segment)

Tq Identificateur de destination de table de quantification dans le segment DQT (quantization


table destination identifier in DQT segment)

Tqi Sélecteur de destination de table de quantification pour la ième composante d'une trame
(quantization table destination selector for ith component in frame)

U Paramètre de limite supérieure des valeurs décisionnelles pour le codage du coefficient DC et


sans perte (DC and lossless coding conditioning upper bound parameter)

V Symbole ou valeur en cours de codage ou de décodage (symbol or value being either encoded
or decoded)

Vi Facteur d'échantillonnage vertical de la ième composante (vertical sampling factor for


ith component)

Vi,j jème valeur pour la longueur i dans HUFFVAL (jth value for length i in HUFFVAL)

Vmax Plus grand facteur d'échantillonnage vertical (largest vertical sampling factor)

Vt Variable temporaire (temporary variable)

VALPTR Liste des indices de la première valeur dans HUFFVAL pour chaque longueur de code
(list of indices for first value in HUFFVAL for each code length)

V1 Valeur de symbole (symbol value)

V2 Valeur de symbole (symbol value)

xi Nombre de colonnes de la ième composante (number of columns in ith component)

X Nombre d'échantillons par ligne de la composante de plus grande dimension horizontale


(number of samples per line in component with largest horizontal dimension)

Xi ième registre statistique de codage de catégorie de valeur absolue (ith statistics bin for coding
magnitude category decision)

X1, X2, X3,... X15 Désignation des indices de contexte de codage des catégories de valeur absolue dans les
modèles à codage arithmétique (designation of context-indices for coding of magnitude
categories in the arithmetic coding models)

XHUFCO Table de codage de Huffman étendue (extended Huffman code table)

XHUFSI Table des tailles des codes de Huffman étendue (table of sizes of extended Huffman codes)

X’valeurs’ Les valeurs entre guillemets simples sont en hexadécimal (values within the quotes are
hexadecimal)

yi Nombre de lignes de la ième composante (number of lines in ith component)

Y Nombre de lignes de la composante de plus grande dimension verticale (number of lines in


component with largest vertical dimension)

ZRL Valeur affectée dans HUFFVAL, à une plage de 16 coefficients nuls (value in HUFFVAL
assigned to run of 16 zero coefficients)

ZZ(k) kième élément d'une séquence en zigzag de coefficients DCT quantifiés (kth element in zig-zag
sequence of quantized DCT coefficients)

ZZ(0) Coefficient DC quantifié d'une séquence en zigzag (quantized DC coefficient in zig-zag


sequence order)

14 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

4 Considérations générales

Le présent article donne une présentation générale informative des éléments définis dans la présente Spécification. Sont
introduits de nombreux termes définis à l'article 3. Ces termes sont en italiques lorsqu'ils apparaissent pour la première
fois.

4.1 Eléments définis dans la présente Spécification

Trois éléments sont définis dans la présente Spécification:

a) Un codeur est un dispositif réalisant un processus de codage. Comme représenté à la Figure 1, un codeur
reçoit en entrée des données numériques d'image source et des spécifications de tables, et génère en
sortie, au moyen d'un ensemble spécifié de procédures, des données d'image comprimées.

b) Un décodeur est un dispositif réalisant un processus de décodage. Comme représenté à la Figure 2, un


décodeur reçoit en entrée des données d'image comprimées et des spécifications de tables, et génère en
sortie, au moyen d'un ensemble spécifié de procédures, des données d'image numérique reconstruite.

c) Le format de transfert représenté à la Figure 3 est une représentation de données d'image comprimées qui
inclut toutes les spécifications de tables utilisées dans le processus de codage. Le format de transfert
concerne des transferts entre des environnements d'application.

Codeur

TISO0650-93/d001

Données Spécifications Données d'image


d'image source de tables comprimées

Figure 1 – Codeur

Décodeur

TISO0660-93/d002

Données d'image Spécifications Données d'image


comprimées de tables reconstruite

Figure 2 – Décodeur

Rec. T.81 du CCITT (1992 F) 15


ISO/CEI 10918-1 : 1993(F)

Les Figures 1 et 2 illustrent le cas général dans lequel les données des images source et reconstruite, de nature
photographique, ont plusieurs composantes. (Une image en couleurs a plusieurs composantes, une image en niveaux de
gris une seule composante.) Une partie significative de la présente Spécification concerne la façon de manipuler des
images à plusieurs composantes d'une façon souple et indépendante de l'application.

Environnement d'application
A

Données d'image comprimées incluant les spécifications de tables

Environnement d'application
B

TISO0670-93/d003

Figure 3 – Format de transfert de données d'image comprimées

Ces figures sont également destinées à montrer que les tables spécifiées pour la compression par un codeur d'une image
déterminée, et pour la reconstruction de cette image par un décodeur, sont les mêmes. Toutefois, la présente
Spécification ne spécifie pas comment des applications doivent associer des tables à des données d'images comprimées,
ni comment elles doivent représenter des données d'image source, généralement dans leurs environnements spécifiques.

La présente Spécification spécifie également le format d'échange représenté à la Figure 3, dans lequel les spécifications
de table sont incluses dans les données de l'image comprimée. Une image comprimée par un processus de codage
spécifié, dans un environnement d'application déterminé A, est communiquée à un environnement différent B, selon le
format de transfert. Le format de transfert ne spécifie pas une représentation complète de l'image codée. Les éléments
dépendant de l'application, par exemple l'espace des couleurs, ne sont pas concernés par la présente Spécification.

4.2 Compression avec perte et sans perte

La présente Spécification définit deux classes de processus de codage et de décodage, les processus avec perte et sans
perte. Les processus basés sur la transformation en cosinus discrète (DCT) (discrete cosine transform) sont avec perte,
permettant ainsi de réaliser une compression substantielle, tout en produisant une image reconstruite d'une haute fidélité
visuelle par rapport à l'image source du codeur.

Le processus de codage basé DCT le plus simple est le processus de codage séquentiel de base. Il offre une capacité
suffisante pour beaucoup d'applications, en termes d'échantillonnage de l'image source et de nombre de tables possible.
D'autres processus basés DCT étendent le processus séquentiel de base à une plus large gamme d'applications. Tout
décodeur utilisant des processus de décodage basés DCT étendus, doit comporter le processus de décodage de base, afin
d'assurer une capacité de décodage par défaut.

La seconde classe de processus de codage n'est pas basée DCT. Elle est destinée aux applications nécessitant une
compression sans perte. Les processus de codage et de décodage sans perte sont utilisés indépendamment de tout
processus basé DCT.

16 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Un tableau résumant les relations entre les processus de codage avec perte et sans perte figure en 4.11.

Le taux de compression réalisé par chacun des processus dépend des caractéristiques de l'image traitée, de la qualité
d'image désirée pour l'application, ainsi que des vitesses de compression et de décompression désirées.

4.3 Codage basé DCT

La Figure 4 présente les principales procédures de tous les processus de codage basés DCT. Elle représente le cas d'une
image à une seule composante: cette simplification convient à une vue d'ensemble, car tous les processus définis dans la
présente Spécification opèrent indépendamment sur chaque composante de l'image.

Codeur basé DCT


Blocs 8 × 8

FDCT Codeur
Quantificateur entropique

Données d'image Spécifications Spécifications Données d'image


source de tables de tables comprimées

TISO0680-93/d004

Figure 4 – Diagramme simplifié d'un codeur basé DCT

Dans le processus de codage, les échantillons de la composante d'entrée sont groupés en blocs 8 × 8, chaque bloc étant
transformé par la DCT directe (FDCT) (forward DCT) en un ensemble de 64 valeurs appelées coefficients DCT. Une de
ces valeurs est le coefficient DC, les 63 autres sont les coefficients AC.

Chacun des 64 coefficients est alors quantifié à l'aide d'une des 64 valeurs correspondantes d'une table de quantification
(déterminée par une des spécifications de table indiquées à la Figure 4). La présente Spécification ne définit aucune
valeur par défaut pour les tables de quantification; ces valeurs peuvent être spécifiées pour des applications, en sorte
d'adapter la qualité d'image à leurs caractéristiques d'image, dispositifs d'affichage et conditions de visualisations
particuliers.

Après quantification, le coefficient DC et les 63 coefficients AC sont préparés pour le codage entropique, comme
représenté à la Figure 5. Le coefficient DC quantifié précédent est utilisé comme prédiction du coefficient DC quantifié
courant, la différence étant codée. Les 63 coefficients AC quantifiés ne donnent pas lieu à un tel codage différentiel,
mais sont convertis en une séquence en zigzag unidimensionnelle, représentée à la Figure 5.

Les coefficients quantifiés sont alors communiqués à une procédure de codage entropique qui continue la compression
des données. Une des deux procédures de codage entropique est décrite en 4.6. En codage de Huffman, les spécifications
de la table de Huffman doivent être fournies au codeur. En codage arithmétique, les spécifications de la table
décisionnelle de codage arithmétique peuvent lui être fournies, ou en d'autres cas, les spécifications de la table
décisionnelle par défaut seront utilisées.

La Figure 6 indique les principales procédures mises en oeuvre dans tous les processus de décodage basés DCT. Chaque
étape représentée réalise essentiellement une fonction inverse de la procédure principale correspondante du codeur. Le
décodeur entropique décode la séquence en zigzag des coefficients DCT quantifiés. Après déquantification, les
coefficients DCT sont transformés en un bloc 8 × 8 d'échantillons par la DCT inverse (IDCT) (inverse DCT).

Rec. T.81 du CCITT (1992 F) 17


ISO/CEI 10918-1 : 1993(F)

4.4 Codage sans perte

La Figure 7 indique les principales procédures des processus de codage sans perte. Un prédicteur combine les valeurs
reconstruites jusqu'à trois échantillons voisins de positions a, b et c, pour former une prédiction de l'échantillon de
position x, comme représenté à la Figure 8. Cette prédiction est ensuite soustraite de la valeur effective de l'échantillon
de position x, la différence faisant l'objet d'un codage entropique sans perte, de type Huffman ou arithmétique.

Ce processus de codage peut également être utilisé sous une forme légèrement modifiée dans laquelle la précision des
échantillons d'entrée est réduite d'un ou plusieurs bits avant le codage. Ce processus modifié réalise une compression
plus forte que le processus sans perte (mais plus faible, à fidélité visuelle équivalente, que les processus basés DCT) et
limite, pour l'image reconstruite, l'erreur d'échantillonnage pire cas à la réduction de la précision d'entrée.

DC AC 01 AC 07

DC i - 1 DC i

Bloc i - 1 Bloc i

DIFF = DC i - DC i-1
TISO0690-93/d005

AC 70 AC 77
Codage DC différentiel Ordre en zigzag

Figure 5 – Préparation des coefficients quantifiés pour le codage entropique

Décodeur basé DCT

Décodeur Déquan-
IDCT
entropique tificateur

TISO0700-93/d006

Données d'image Spécifications Spécifications Données d'image


comprimées de tables de tables reconstruite

Figure 6 – Diagramme simplifié d'un décodeur basé DCT

18 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Codeur sans perte

Codeur
Prédicteur
entropique

TISO0710-93/d007

Données d'image Spécifications Données d'image


source de tables comprimées

Figure 7 – Diagramme simplifié d'un codeur sans perte

c b

a x

TISO0720-93/d008

Figure 8 – Voisinage de prédiction à trois échantillons

4.5 Modes de fonctionnement

Quatre modes de fonctionnement distincts sont définis pour les divers processus de codage: basé DCT séquentiel, basé
DCT progressif, sans perte et hiérarchique. (Il n'est pas imposé aux réalisations de réaliser ces quatre modes.) Le mode
de fonctionnement sans perte a été décrit en 4.4. Les autres modes de fonctionnement sont comparés ci-après.

Dans le mode basé DCT séquentiel, les blocs 8 × 8 d'échantillons sont généralement entrés bloc par bloc, de gauche à
droite, et rangée de blocs par rangée de blocs, de haut en bas. Quand un bloc a été transformé par la DCT directe,
quantifié et préparé pour le codage entropique, l'ensemble de ses 64 coefficients DCT quantifiés peut être immédia-
tement soumis au codage entropique et sorti comme partie des données d'image comprimées (comme décrit en 4.3),
réduisant ainsi au minimum les besoins en matière de stockage des coefficients.

Dans le mode basé DCT progressif, des blocs 8 × 8 sont normalement codés dans le même ordre, mais en plusieurs
balayages de l'image, ce qui est réalisé en ajoutant une mémoire tampon de coefficients, de la taille de l'image (non
représentée à la Figure 4), entre le quantificateur et le codeur entropique. Dès qu'un bloc a été transformé par la DCT
directe et quantifié, ses coefficients sont stockés dans la mémoire tampon. Les coefficients DCT ainsi stockés sont
ensuite partiellement codés à chaque balayage. Dans chacun des deux modes, séquentiel et progressif, la séquence des
images se présente généralement comme indiqué à la Figure 9.

Rec. T.81 du CCITT (1992 F) 19


ISO/CEI 10918-1 : 1993(F)

Deux procédures peuvent être utilisées pour coder partiellement les coefficients quantifiés en mémoire tampon. Dans la
première, seule une bande spécifiée de coefficients de la séquence en zigzag a besoin d'être codée: cette procédure est
appelée sélection spectrale, car chaque bande contient normalement des coefficients qui occupent la partie haute ou
basse d'un spectre de fréquence pour ce bloc 8 × 8. Dans la seconde procédure, les coefficients de la bande courante
n'ont pas besoin d'être codés à pleine précision (quantifiée) à chaque balayage. Un nombre spécifié des bits de plus fort
poids est d'abord traité lors d'un premier codage des coefficients, les bits de plus faible poids étant codés aux balayages
suivants. C'est la procédure par approximations successives. Ces deux procédures peuvent être utilisées séparément ou
dans toutes sortes de combinaisons.

En mode hiérarchique, une image est codée comme une séquence de trames. Ces trames donnent des composantes
reconstruites de référence, en général nécessaires pour la prédiction des trames suivantes. Sauf dans le cas de la
première trame d'une composante donnée, les trames différentielles codent la différence entre les composantes source et
les composantes reconstruites de référence. Le codage des différences peut être effectué dans des processus basés DCT,
dans des processus sans perte ou dans des processus basés DCT comportant un processus final sans perte pour chaque
composante. Des filtres de sous-échantillonnage et de suréchantillonnage peuvent être utilisés pour créer une pyramide
de résolutions spatiales, comme représenté à la Figure 10. Il est également possible d'utiliser le mode hiérarchique pour
améliorer la qualité des composantes reconstruites, à résolution spatiale donnée.

Avec une présentation progressive similaire à celle du mode basé DCT, le mode hiérarchique est utile dans les
environnements soumis à des impératifs de multirésolution. Le mode hiérarchique offre en outre une capacité de codage
progressif, jusqu'à un stade final sans perte.

4.6 Procédures de codage entropique


Deux procédures de codage entropique sont spécifiées: le codage de Huffman et le codage arithmétique. Les procédures
de codage de Huffman utilisent des tables de Huffman déterminées par une des spécifications de table indiquées aux
Figures 1 et 2. Les procédures de codage arithmétique utilisent des tables décisionnelles de codage arithmétique, qui
peuvent également être déterminées par une spécification de table. Aucune valeur par défaut n'est spécifiée pour les
tables de Huffman, de sorte de pouvoir choisir des tables appropriées à l'environnement propre à chaque application. Des
tables décisionnelles par défaut sont définies pour le codage arithmétique.

Le processus séquentiel de base utilise le codage de Huffman, alors que les processus étendus basés DCT sans perte
peuvent utiliser le codage de Huffman ou le codage arithmétique.

Progressif

TISO0730-93/d009
Séquentiel

Figure 9 – Présentation de la sortie en modes séquentiel et progressif

20 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

TISO0740-93/d010

Figure 10 – Codage multirésolution hiérarchique

4.7 Précision d'échantillonnage

Pour les processus basés DCT, deux précisions d'échantillon peuvent être spécifiées: 8 bits ou 12 bits. Les applications
qui travaillent avec d'autres précisions d'échantillon, peuvent utiliser la précision 8 bits ou 12 bits, en décalant de façon
appropriée leurs échantillons d'image source. Le processus de base utilise uniquement la précision 8 bits. Les réalisations
basées DCT utilisant des échantillons d'image source de 12 bits, devraient impliquer de plus importantes ressources de
calcul que celles utilisant uniquement des échantillons d'image source 8 bits. En conséquence, dans la présente
Spécification, des spécifications normatives séparées sont définies pour les processus basés DCT 8 bits et 12 bits.

Pour les processus sans perte, la précision d'échantillon est spécifiée devoir être de 2 bits à 16 bits.

4.8 Contrôle de composantes multiples

Les paragraphes 4.3 et 4.4 donnent une vue d'ensemble d'une partie essentielle des processus de codage et de décodage:
la compression des valeurs des échantillons. Autre partie importante de ces processus: les procédures de contrôle de
l'ordre dans lequel les données d'image de plusieurs composantes sont traitées pour créer des données comprimées, qui
garantissent que l'ensemble approprié de données de table est appliqué aux unités de données appropriées de l'image
(une unité de données est un échantillon pour les processus sans perte, un bloc 8 × 8 échantillons pour les processus
basés DCT).

4.8.1 Composantes multiples entrelacées

La Figure 11 donne un exemple de la façon dont un processus de codage choisit entre plusieurs composantes d'image
source et plusieurs ensembles de données de table, lors de l'exécution des procédures de codage. Dans cet exemple,
l'image source comprend les trois composantes A, B et C et il existe deux ensembles de spécifications de tables. (Cette
présentation simplifiée ne fait pas la distinction entre les tables de quantification et les tables de codage entropique.)

Rec. T.81 du CCITT (1992 F) 21


ISO/CEI 10918-1 : 1993(F)

B Processus
de codage

Données d'image Données d'image


source Spécif. Spécif. comprimées
table 1 table 2
TISO0750-93/d011

Figure 11 – Côntrole de l'entrelacement des composantes et de la commutation des tables

En mode séquentiel, le codage est non entrelacé si le codeur comprime toutes les unités de données d'image d'une
composante A avant de commencer le codage de la composante B, puis code toutes les unités de B avant celles de C.
Le codage est entrelacé si le codeur comprime une unité de données de A, une unité de données de B, une unité de
données de C, puis revient à A, etc. Ces différents modes sont représentés à la Figure 12, qui montre un cas dans lequel
les trois composantes d'image ont des dimensions identiques: X colonnes par Y lignes, soit un total de n unités de
données chacune.

X X X

A1 A2 B1 B2 C1 C2

Y Y Y

An Bn Cn
TISO0760-93/d012

A 1, A 2, ....A n, B 1, B 2, ....B n , C 1, C 2, ....C n

Balayage 1 Balayage 2 Balayage 3

Ordre de codage des unités de données, non entrelacé

A 1, B1 , C1 , A 2 , B 2, C 2, ....A n, B n, C n

Balayage 1
Ordre de codage des unités de données, entrelacé

Figure 12 – Ordre de codage en modes entrelacé et non entrelacé

Ces procédures de contrôle sont également capables de traiter des cas dans lesquels les composantes de l'image source
ont des dimensions différentes. La Figure 13 présente un cas dans lequel deux des composantes B et C ont un nombre
d'échantillons horizontaux qui est la moitié de celui de la composante A. Dans ce cas, deux unités de données de A sont
entrelacées avec une unité de données de B puis de C. Peuvent également être traités des cas dans lesquels les
composantes d'une image ont des relations plus complexes, par exemple quand des dimensions horizontales et verticales
sont différentes. (Voir l'Annexe A.)

22 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

X X/2 X/2

A1 A2 B1 B2 C1 C2

Y Y Y

An Bn/2 Cn/2

TISO0770-93/d013

A 1 , A 2, B 1, C 1, A 3, A 4, B 2, C 2, ....A n-1, A n, B n/2, C n/2

Balayage 1
Ordre de codage des unités de données, entrelacé

Figure 13 – Ordre entrelacé pour des composantes de dimensions différentes

4.8.2 Unités codées minimales

L'entrelacement de plusieurs composantes implique le concept d'unité codée minimale (MCU). Si les données d'image
comprimées ne sont pas entrelacées, la MCU est, par définition, une unité de données. Par exemple, sur la Figure 12,
la MCU du cas non entrelacé est une unité de données unique. Si les données comprimées sont entrelacées, la MCU
contient une ou plusieurs unités de données de chaque composante. Dans le cas entrelacé de la Figure 12, la (première)
MCU comprend les trois unités de données entrelacées, A1, B1, C1. Dans l'exemple de la Figure 13, la (première) MCU
comprend les quatre unités de données A1, A2, B1, C1.

4.9 Structure des données comprimées

Les Figures 1, 2 et 3 présentent des vues légèrement différentes des données d'image comprimées. La Figure 1 présente
ces données à la sortie du processus de codage, la Figure 2 les présente à l'entrée d'un processus de décodage et la
Figure 3 présente des données d'image comprimées dans le format de transfert, à l'interface entre des environnements
d'application.

Les données d'image comprimées sont décrites par une structure uniforme et un ensemble de paramètres pour les deux
classes de processus de codage (avec perte ou sans perte) et pour tous les modes de fonctionnement (séquentiel,
progressif, sans perte et hiérarchique). Les diverses parties des données d'image comprimées sont identifiées par des
codes spéciaux de deux octets appelés marqueurs. Certains marqueurs sont suivis de séquences déterminées de
paramètres, comme dans le cas des spécifications de tables, de l'en-tête de trame ou de l'en-tête de balayage. D'autres
sont utilisés sans paramètres pour des fonctions telles que le marquage de début d'image et le marquage de fin d'image.
Quand un marqueur est associé à une séquence particulière de paramètres, il constitue avec ses paramètres un segment
marqueur.

Les données créées par un codeur entropique sont également segmentées, un marqueur particulier, le marqueur de
reprise, étant utilisé pour isoler les segments de données à codage entropique. Le codeur pose les marqueurs de reprise
intercalés entre les données à codage entropique, à des intervalles de reprise réguliers dans les données d'image source.
Les marqueurs de reprise peuvent être identifiés et localisés sans décoder les données comprimées. Comme ils peuvent
être décodés indépendamment, ils ont des utilisations spécifiques à l'application, telles que le codage ou le décodage
parallèle, l'isolation de données altérées et l'accès semi-aléatoire à des segments à codage entropique.

Rec. T.81 du CCITT (1992 F) 23


ISO/CEI 10918-1 : 1993(F)

Trois formats de données comprimées sont définis:

a) le format de transfert;

b) le format abrégé de données d'image comprimées;

c) le format abrégé de données de spécification de tables.

4.9.1 Format de transfert

En plus de certains segments marqueurs obligatoires et des segments à codage entropique, le format de transfert doit
inclure les segments marqueurs de toutes les spécifications de tables de quantification et de codage entropique
nécessaires pour les processus de décodage. On a ainsi l'assurance qu'une image comprimée pourra traverser des
frontières entre environnements d'application, sans avoir à se préoccuper de la façon dont chaque environnement associe,
en interne, des tables aux données d'image comprimées.

4.9.2 Format abrégé de données d'image comprimées

Le format abrégé de données d'image comprimées est identique au format de transfert, sauf qu'il n'inclut pas toutes les
tables nécessaires pour le décodage (mais il peut en inclure certaines). Ce format est destiné aux applications où d'autres
mécanismes sont disponibles pour fournir certaines ou toutes les données de spécification de tables nécessaires pour le
décodage.

4.9.3 Format abrégé de données de spécification de tables

Le format abrégé contient uniquement des données de spécification de tables. Il permet à l'application de charger dans le
décodeur les tables requises pour la reconstruction ultérieure d'une ou plusieurs images.

4.10 Image, trame et balayage

Les données d'image comprimées comprennent une seule image. Une image contient une seule trame dans le cas des
processus de codage séquentiels et progressifs; elle contient plusieurs trames en mode hiérarchique.

Une trame contient un ou plusieurs balayages. Dans les processus séquentiels, un balayage contient un codage complet
d'une ou plusieurs composantes d'image. Aux Figures 12 et 13, la trame consiste en trois balayages dans le cas non
entrelacé et en un seul balayage dans le cas où les trois composantes sont entrelacées. La trame peut également
comprendre deux balayages: l'un avec une seule composante non entrelacée, l'autre avec deux composantes entrelacées.

Dans le cas des processus progressifs, un balayage contient un codage partiel de toutes les unités de données d'une ou
plusieurs composantes d'image. En mode progressif, les composantes ne doivent pas être entrelacées, sauf les
coefficients DC du premier balayage de chaque composante d'une trame progressive.

4.11 Résumé des processus de codage

Le Tableau 1 donne un résumé des caractéristiques essentielles des divers processus de codage définis dans la présente
Spécification. La spécification complète de ces processus est donnée dans les Annexes F, G, H et J.

5 Spécifications du format de transfert

Le format de transfert est la représentation codée des données d'image comprimées, pour leur transfert entre
environnements d'application.

Les spécifications d'un format de transfert sont que toute donnée d'image comprimée représentée dans ce format de
transfert doit être conforme à la syntaxe et aux affectations appropriées au processus de décodage choisi, comme spécifié
dans l'Annexe B.

Les tests destinés à déterminer si les données d'image comprimées sont conformes aux présentes prescriptions sont
définis dans la Partie 2 de la présente Spécification.

24 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau 1 – Résumé: Caractéristiques essentielles des processus de codage

Processus de base (requis pour tous les décodeurs basés DCT)

• Processus basé DCT


• Image source: échantillons de 8 bits dans chaque composante
• Séquentiel
• Codage de Huffman: deux tables AC et deux tables DC
• Les décodeurs doivent traiter des balayages comportant 1, 2, 3 et 4 composantes
• Balayages entrelacés et non entrelacés

Processus basés DCT étendus

• Processus basés DCT


• Image source: échantillons de 8 bits ou de 12 bits
• Séquentiels ou progressifs
• Codage de Huffman ou codage arithmétique: 4 tables AC et 4 tables DC
• Les décodeurs doivent traiter des balayages comportant 1, 2, 3 et 4 composantes
• Balayages entrelacés et non entrelacés

Processus sans perte

• Processus prédictifs (non basés DCT)


• Image source: échantillons de P bits (2 ≤ P ≤ 16)
• Séquentiels
• Codage de Huffman ou codage arithmétique: 4 tables DC
• Les décodeurs doivent traiter des balayages de 1, 2, 3 et 4 composantes
• Balayages entrelacés et non entrelacés

Processus hiérarchiques

• Plusieurs trames (non différentielles et différentielles)


• Utilisent des processus basés DCT étendus ou sans perte
• Les décodeurs doivent traiter des balayages de 1, 2, 3 et 4 composantes
• Balayages entrelacés et non entrelacés

6 Spécifications du codeur
Un processus de codage convertit des données d'image source en données d'image comprimées. Chacune des Annexes F,
G, H et J spécifie plusieurs processus de codage différents, correspondant à son mode de fonctionnement particulier.

Un codeur est un dispositif qui réalise un (ou plusieurs) des processus de codage spécifiés dans les Annexes F, G, H et J.
Pour être conforme à la présente Spécification, un codeur doit satisfaire au moins une des deux conditions suivantes.

Un codeur doit
a) convertir les données d'image source, avec une précision appropriée, en données d'image comprimées,
conformes à la syntaxe de format de transfert spécifiée dans l'Annexe B pour le ou les processus de
codage mis en oeuvre par le codeur;
b) convertir les données d'image source, avec une précision appropriée, en données d'image comprimées
conformes à la syntaxe du format abrégé de données d'image comprimées, spécifiée dans l'Annexe B pour
le ou les processus de codage mis en oeuvre par le codeur.

Rec. T.81 du CCITT (1992 F) 25


ISO/CEI 10918-1 : 1993(F)

Pour chacun des processus de codage spécifiés dans les Annexes F, G, H et J, les tests de conformité aux spécifications
ci-dessus sont spécifiés dans la Partie 2 de la présente Spécification.

NOTE – La présente Spécification n'impose aucune obligation quant à l'aptitude d'un codeur qui met en oeuvre l'un des
processus de codage spécifiés dans les Annexes F, G, H ou J, à fonctionner en utilisant toutes les gammes de paramètres autorisées
pour ce processus. Il est seulement requis qu'un décodeur satisfasse les tests de conformité spécifiés dans la Partie 2, et génère des
formats de données comprimées conformes à l'Annexe B, pour les valeurs de paramètres qu'il utilise effectivement.

7 Spécifications du décodeur

Un processus de décodage convertit des données d'image comprimées en données d'image reconstruite. Chacune des
Annexes F, G, H et J spécifie plusieurs processus de décodage distincts, pour ces modes de fonctionnement particuliers.

Un décodeur est un dispositif qui réalise un (ou plusieurs) des processus de décodage spécifiés dans les Annexes F, G, H
ou J. Pour être conforme à la présente Spécification, un décodeur doit satisfaire les trois conditions suivantes.

Un décodeur doit:

a) convertir en données d'image reconstruite, avec la précision appropriée, toutes données d'image
comprimées conformes à la syntaxe de format de transfert, spécifiée dans l'Annexe B pour le ou les
processus de codage mis en oeuvre par le décodeur;

b) accepter et stocker de façon appropriée toutes données de spécification de tables conformes à la syntaxe
abrégée de données de spécification de tables, spécifiée dans l'Annexe B pour le ou les processus de
décodage mis en oeuvre par le décodeur;

c) convertir en données d'image reconstruite, avec la précision appropriée, toutes données d'image
comprimées conformes à la syntaxe du format abrégé de données d'image comprimées, spécifiée dans
l'Annexe B pour le ou les processus de décodage mis en oeuvre par le décodeur, à condition que les
données de spécification de tables requises pour le décodage de l'image comprimée aient été auparavant
chargées dans le décodeur.

En outre, tout décodeur basé DCT doit, s'il réalise un processus de décodage basé DCT autre que le processus séquentiel
de base, réaliser également le processus de décodage séquentiel de base.

Pour chacun des processus de décodage spécifiés dans les Annexes F, G, H et J, les tests de conformité aux
spécifications ci-dessus sont spécifiés dans la Partie 2 de la présente Spécification.

26 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe A

Définitions mathématiques
(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)

A.1 Image source

Cette annexe définit les images source auxquelles les processus de codage spécifiés dans la présente Spécification
peuvent être appliqués.

A.1.1 Dimensions et facteurs d'échantillonnage

Comme représenté à la Figure A.1, une image source comprend, par définition, Nf composantes, dont chacune, d'iden-
tificateur unique Ci, consiste en un tableau rectangulaire d'échantillons, de xi colonnes par yi lignes. Les dimensions des
composantes sont données par deux paramètres, X et Y, X étant le maximum des valeurs de xi et Y le maximum des
valeurs de yi, pour toutes les composantes de la trame. Pour chaque composante, sont définis des facteurs
d'échantillonnage Hi et Vi, liés aux dimensions xi et yi des composantes et aux dimensions maximales X et Y, par les
expressions suivantes:

 Hi   Vi 
xi =  X ×  et yi Y × ,
 H max   Vmax 

où Hmax et Vmax sont les valeurs maximales des facteurs d'échantillonage pour toutes les composantes de la trame, et  
la fonction plafond.

Considérons, par exemple, une image ayant trois composantes de dimensions maximales 512 lignes et 512 échantillons
par ligne, avec les facteurs d'échantillonnage suivants:

Composante 0 H 0 = 4, V0 = 1
Composante 1 H 1 = 2, V1 = 2
Composante 2 H 2 = 1, V2 = 1

Alors: X = 512, Y = 512, Hmax = 4, Vmax = 2; et xi et yi sont donnés, pour chaque composante, par:

Composante 0 x 0 = 512, y 0 = 256


Composante 1 x 1 = 256, y 1 = 512
Composante 2 x 2 = 128, y 2 = 256

NOTE – Les paramètres X, Y, Hi et Vi sont contenus dans l'en-tête de trame du format de données d'image comprimées
(voir B.2.2), les dimensions xi et yi de chaque composante étant déterminées par le décodeur. Les images sources de dimensions xi
et yi ne satisfaisant pas les expressions ci-dessus ne peuvent pas être reconstruites correctement.

A.1.2 Précision d'échantillon

Un échantillon est un entier de précision P bits, de valeur appartenant à la plage 0 à 2P – 1. Tous les échantillons de toutes
les composantes d'une image doivent avoir la même précision P. Les restrictions portant sur les valeurs de P dépendent
du mode de fonctionnement, comme spécifié de B.2 à B.7.

A.1.3 Unité de données

Dans un processus sans perte, l'unité de données est l'échantillon; dans un processus basé DCT, l'unité de données est le
bloc de 8 × 8 échantillons. Les 8 échantillons de gauche de chacune des 8 rangées supérieures de la composante doivent
toujours constituer le bloc du coin supérieur gauche. En prenant ce bloc du coin supérieur gauche comme référence, la
composante est découpée en unités de données consécutives, de gauche à droite et de haut en bas (voir la Figure A.4).

Rec. T.81 du CCITT (1992 F) 27


ISO/CEI 10918-1 : 1993(F)

A.1.4 Orientation

La Figure A.1 montre comment l'orientation d'une composante d'image est indiquée par les termes «haut», «bas»,
«gauche», «droite». L'ordre d'entrée des unités de données d'une composante d'image dans les procédures de codage est,
par définition, de gauche à droite et de haut en bas dans la composante. (Cet ordre est défini avec précision en A.2.) Les
applications déterminent les bords de l'image source définis comme haut, bas, gauche et droit.

Ci Haut
Echantillons Ligne

yi
Gauche Droite

CNf
C Nf-1 xi

C2
C1 Bas TISO0780-93/d014

a) Image source à plusieurs composantes b) Caractéristiques d'une composante d'image

Figure A.1 – Caractéristiques d'une image source

A.2 Ordre de codage des données d'image source


L'en-tête de balayage (voir B.2.3) spécifie l'ordre dans lequel les unités de données d'image source doivent être codées et
placées dans les données d'image comprimées. Pour un balayage donné, si le paramètre d'en-tête de balayage Ns = 1,
seules les données d'une composante source – la composante spécifiée par le paramètre Cs1 – doivent figurer dans le
balayage. Par définition, ces données sont non entrelacées. Si Ns > 1, les données des Ns composantes, Cs1 à CsNs
doivent figurer dans le balayage. Ces données doivent toujours être entrelacées. L'ordre des composantes d'un balayage
doit être conforme à l'ordre spécifié dans l'en-tête de trame.

L'ordre des unités de données et la construction des unités codées minimales (MCU) sont définis comme suit.

A.2.1 Unité codée minimale (MCU)

Dans le cas de données non entrelacées, la MCU est l'unité de données. Dans le cas de données entrelacées, la MCU est
la séquence d'unités de données définie par les facteurs d'échantillonnage des composantes du balayage.

A.2.2 Ordre non entrelacé (Ns = 1)

Quand Ns = 1 (Ns étant le nombre de composantes d'un balayage), les unités de données d'un balayage doivent être
ordonnées de gauche à droite et de haut en bas, comme indiqué à la Figure A.2. Cet ordre s'applique chaque fois que
Ns = 1, quelles que soient les valeurs de H1 et de V1.

Haut

Gauche Droite

Bas TISO0790-93/d015

Figure A.2 – Ordre de données non entrelacées

28 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

A.2.3 Ordre entrelacé (Ns > 1)

Quand Ns > 1, chaque composante de balayage Csi est subdivisée en sous-tableaux rectangulaires d'unités de données de
dimension horizontale Hk et de dimension verticale Vk. Les indices k indiquent que Hk et Vk correspondent à la position
de la spécification de composante de l'en-tête de trame pour laquelle Ck = Csi. A l'intérieur de chaque sous-tableau Hk
par Vk, les unités de données sont ordonnées de gauche à droite et de haut en bas. Les sous-tableaux sont eux-mêmes
disposés en ordre, de gauche à droite et de haut en bas, dans chaque composante.

Comme montré sur l'exemple de la Figure A.3, Ns = 4 et MCU1 comprend des unités de données prises d'abord dans
la région la plus à gauche et la plus haute de Cs1, suivies des unités de données de la zone correspondante de Cs2,
puis de Cs3 puis de Cs4. MCU2 suit le même ordre, pour des données prises dans la zone suivante à droite, pour les
quatre composantes.

Cs 1: H 1 = 2, V1 = 2 Cs2 : H 2 = 2, V 2 = 1 Cs 3: H 3 = 1, V 3 = 2 Cs 4 : H 4 = 1, V4 = 1
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 0 1 2

0 0 0 0

1 1 1 1

2 2
TISO0800-93/d016
3 3

MCU 1 = d 100 1
d 01 1
d 10 1
d 11 2
d 200 d 01 3
d 00 3
d 10 4
d 00 ,
MCU 2 = d 102 1
d 03 1
d 12 1
d 13 2
d 202 d 03 3
d 01 d 311 d 401 ,
MCU 3 = d 104 1
d 05 1
d 14 1
d 15 2
d 204 d 05 3
d 02 d 312 d 402 ,
MCU 4 = d 120 1
d 21 1
d 30 1
d 31 2 2
d 10 d 11 3
d 20 3
d 30 4 ,
d 10

Unités de données CS 1 Cs 2 Cs 3 Cs 4

Figure A.3 – Exemple d'ordre de données entrelacées

A.2.4 Complètement des MCU partielles

Pour les processus basés DCT, l'unité de données est le bloc. Si xi n'est pas un multiple de 8, le processus de codage doit
étendre le nombre de colonnes pour compléter les blocs d'échantillons de droite. Si la composante doit être entrelacée, le
processus de codage doit également étendre le nombre d'échantillons d'un ou plusieurs blocs additionnels, si nécessaire,
en sorte que le nombre de blocs soit un entier multiple de Hi. De même, si yi n'est pas un multiple de 8, le processus de
codage doit étendre le nombre de lignes pour compléter la rangée de blocs du bas. Si la composante doit être entrelacée,
le processus de codage doit également étendre le nombre de lignes d'une ou plusieurs rangées additionnelles de blocs, si
nécessaire, en sorte que le nombre de rangées de blocs soit un entier multiple de Vi.

NOTE – Il est recommandé de compléter toutes les MCU incomplètes par répétition de la colonne de droite et de la ligne
du bas de chaque composante.

Pour les processus sans perte, l'unité de données est l'échantillon. Si la composante ne doit pas être entrelacée,
le processus de codage doit, si nécessaire, augmenter le nombre d'échantillons en sorte que ce nombre soit un multiple
de Hi. De même, le processus de codage doit, si nécessaire, augmenter le nombre de lignes en sorte que ce nombre soit
un multiple de Vi.

Tout échantillon ajouté par un processus de codage pour compléter des MCU partielles doit être supprimé par le
processus de décodage.

Rec. T.81 du CCITT (1992 F) 29


ISO/CEI 10918-1 : 1993(F)

A.3 Compression DCT

A.3.1 Décalage de niveau

Avant le calcul, par un processus de codage non différentiel, de la FDCT d'un bloc d'échantillons d'image source, le
niveau de ces échantillons doit être décalé pour leur donner une représentation signée, en soustrayant 2P – 1, où P est le
paramètre de précision spécifié en B.2.2. Ainsi, lorsque P = 8, le décalage de niveau est 128; lorsque P = 12, le décalage
de niveau est de 2048.

Après le calcul, par un processus de décodage non différentiel, de l'IDCT, et la production d'un bloc d'échantillons
d'image reconstruite, un décalage de niveau inverse doit rétablir la représentation non signée des échantillons, en
ajoutant 2P – 1 et en limitant les valeurs des résultats à la plage 0 à 2P – 1.

A.3.2 Orientation des échantillons pour le calcul de la FDCT

La Figure A.4 représente une composante d'image subdivisée en blocs 8 × 8 pour le calcul de la FDCT. La Figure A.4
définit également l'orientation des échantillons dans un bloc, en indiquant les indices utilisés dans l'équation FDCT
de A.3.3.

Les définitions de la subdivision en blocs et de l'orientation des échantillons s'appliquent également à tout processus de
décodage DCT et à l'image reconstruite de sortie. Tout échantillon ajouté par le processus de codage afin de compléter
des unités codées minimales incomplètes devra être supprimé par le processus de décodage.

Ci Haut
s 00 s 01 s 07

s 10 s 11 s 17

Droite Gauche

s 70 s 71 s 77
TISO0810-93/d017

Bas

Figure A.4 – Subdivision en blocs de 8 × 8 échantillons et orientation de ce découpage

A.3.3 FDCT et IDCT (informatif)

Les équations suivantes spécifient la définition fonctionnelle idéale de la FDCT et de l'IDCT.


NOTE – Ces équations contiennent des termes qui ne peuvent être représentés avec une précision parfaite par aucune
réalisation réelle. La précision des procédures combinées FDCT/quantification est spécifiée dans la Partie 2 de la présente
Spécification. La précision des procédures combinées déquantification/IDCT y est également spécifiée.

7 7
1 ( 2 x + 1) uπ ( 2 y + 1) vπ
FDCT: Svu = Cu Cv ∑ ∑ s yx cos cos
4 x =0 y=0 16 16

7 7
1 ( 2 x + 1 ) uπ ( 2 y + 1) vπ
IDCT: s yx = ∑ ∑ Cu Cv Svu cos cos
4 u=0 v =0 16 16

Cu , C v = 1 2 pour u , v = 0

Cu , Cv = 1 autrement.

30 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

A.3.4 Quantification (informatif) et déquantification (normatif) des coefficients DCT

Après le calcul de la FDCT pour un bloc, chacun des 64 coefficients DCT résultant donne lieu à une quantification
uniforme. La valeur du pas de quantification de chaque coefficient Svu est la valeur de l'élément correspondant Qvu de la
table de quantification spécifiée par le paramètre de trame Tqi (voir B.2.2).

La quantification uniforme est définie par l'équation suivante (l'arrondi est l'entier le plus proche):

S 
Sqvu = arrondi  vu 
 Qvu 

Sqvu est le coefficient DCT quantifié, normalisé par le pas de quantification.


NOTE – Cette équation contient un terme qui ne peut être représenté avec une exactitude parfaite dans aucune réalisation
réelle. La précision des procédures combinées FDCT/quantification est spécifiée dans la Partie 2 de la présente Spécification.

Au niveau du décodeur, cette normalisation est supprimée par l'équation suivante, qui définit la déquantification:

Rvu = Sq vu × Qvu

NOTE – Selon l'arrondi utilisé lors de la quantification, il est possible que le coefficient déquantifié soit en dehors de la
gamme attendue.

La relation entre les échantillons, les coefficients DCT et la quantification est représentée à la Figure A.5.

A.3.5 Codage DC différentiel

Après quantification, et en préparation du codage entropique, le coefficient quantifié DC Sq00 est traité séparément des
63 autres coefficients AC quantifiés. La valeur à coder est la différence (DIFF) entre le coefficient DC quantifié du bloc
courant (DCi, également désigné Sq00) et celui du bloc précédent dans la même composante (PRED):

DIFF = DCi − PRED

A.3.6 Séquence en zigzag

Après quantification, et en préparation du codage entropique, les coefficients AC quantifiés sont convertis en une
séquence en zigzag. Le coefficient DC quantifié (coefficient nul dans le tableau) est traité séparément, comme défini
en A.3.5. La séquence en zigzag est spécifiée à la Figure A.6.

A.4 Transformation point

Pour diverses procédures, les données peuvent être facultativement divisées par une puissance de 2, par une
transformation point appliquée avant codage. Trois processus de codage nécessitent une transformation point: le codage
sans perte, le codage de trame différentiel sans perte en mode hiérarchique, et le codage par approximations successives
en mode DCT progressif.

En mode de fonctionnement sans perte, la transformation point est appliquée aux échantillons d'entrée. Lors du codage
de la différence, en mode de fonctionnement hiérarchique, la transformation point est appliquée à la différence entre les
échantillons de la composante d'entrée et les échantillons de la composante de référence. Dans les deux cas, la
transformation point est une division entière par 2Pt, Pt étant la valeur du paramètre de transformation point (voir B.2.3).

En codage par approximations successives, la transformation point des coefficients AC est une division entière par 2Al,
Al étant le paramètre de position binaire en approximations successives et de transformation point (voir B.2.3).
La transformation point des coefficients DC est un décalage arithmétique à droite de Al bits – équivalant à une division
par 2Pt avant décalage de niveau (voir A.3.1).

La sortie du décodeur subit un décalage de niveau inverse 2Pt. Un exemple de transformation point est donné en K.10.

Rec. T.81 du CCITT (1992 F) 31


ISO/CEI 10918-1 : 1993(F)

FDCT Quantification
Haut
s00 s01 s07 S 00 S 01 S 07 Sq 00 Sq 01 Sq 07
s10 s11 s17 S10 S 11 S 17 Sq 10 Sq 11 Sq 17

Svu
Gauche Droite arrondi ( )= Sq
Qvu vu

s70 s71 s77 S 70 S 71 S 77 Sq 70 Sq 71 Sq 77


Bas
Echantillons d'image source Coefficients DTC Coefficients DCT quantifiés
(après décalage de niveau)

Q 00 Q 01 Q07

Q 10 Q 11 Q17

Transmission

Q 70 Q 71 Q77

Table de quantification

Haut
r 00 r 01 r 07 R 00 R 01 R 07 Sq 00 Sq 01 Sq 07
r 10 r 11 r 17 R 10 R 11 R 17 Sq 10 Sq 11 Sq 17

Rvu = Sq vu × Q vu
Gauche Droite

r 70 r 71 r 77 R 70 R 71 R 77 Sq 70 Sq 71 Sq 77
Bas TISO0820-93/d018
IDCT Déquantification
Echantillons d'image reconstruite Coefficients DCT Coefficients DCT quantifiés reçus
(avant décalage de niveau) déquantifiés

Figure A.5 – Relation entre les blocs 8 × 8 d'échantillons et les coefficients DTC

32 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

10 11 15 16 14 15 27 28

12 14 17 13 16 26 29 42

13 18 12 17 25 30 41 43

19 11 18 24 31 40 44 53

10 19 23 32 39 45 52 54

20 22 33 38 46 51 55 60

21 34 37 47 50 56 59 61

35 36 48 49 57 58 62 63

Figure A.6 – Séquence en zigzag de coefficients DCT quantifiés

A.5 Procédures arithmétiques en modes de fonctionnement sans perte et hiérarchique


En mode de fonctionnement sans perte, les prédictions sont calculées en pleine précision, sans troncature des
dépassements inférieurs ou supérieurs de la plage de valeurs permise par la précision de l'entrée. Toutefois, la division
par deux faisant partie de certains calculs de prédiction doit être remplacée par une approximation consistant en un
décalage arithmétique à droite d'un bit.

Les différences en complément à deux codées en mode de fonctionnement sans perte ou en codage de trame
différentielle en mode de fonctionnement hiérarchique, sont calculées modulo 65 536, ce qui restreint la précision de ces
différences à un maximum de 16 bits. Les valeurs modulo sont calculées par un ET logique de la différence en
complément à deux et de X’FFFF’. A des fins de codage, le résultat est encore interprété comme une différence en
complément à deux sur 16 bits. L'arithmétique modulo 65 536 est également utilisée dans le décodeur pour calculer la
sortie de la somme de la prédiction et de cette différence en complément à deux.

Rec. T.81 du CCITT (1992 F) 33


ISO/CEI 10918-1 : 1993(F)

Annexe B

Formats de données comprimées


(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)
ISO/CEI 10918-1 : 1993(F)

Rec. T.81 du CCITT (1992 F)

La présente annexe spécifie trois formats de données comprimées:

a) le format de transfert, spécifié en B.2 et B.3;


b) le format abrégé de données d'image comprimées, spécifié en B.4;
c) le format abrégé de données de spécification de tables, spécifié en B.5.

Le paragraphe B.1 décrit les constituants de ces formats. Les paragraphes B.1.3 et B.1.4 donnent les conventions
applicables aux symboles et figures utilisés dans les spécifications de format.

B.1 Aspects généraux des spécifications de format de données comprimées

Structurellement, les formats de données comprimées sont constitués d'un ensemble ordonné de paramètres, de
marqueurs et de segments de données à codage entropique. Les paramètres et les marqueurs sont à leur tour souvent
organisés en segments marqueurs. Comme la représentation codée de tous ces constituants est un alignement d'octets,
chaque format de données comprimées comprend une séquence ordonnée d'octets de 8 bits. Un bit de plus fort poids
(MSB) et un bit de plus faible poids (LSB) sont définis pour chaque octet.

B.1.1 Constituants

Ce paragraphe donne une description générale de chacun des constituants du format de données comprimées.

B.1.1.1 Paramètres

Les paramètres sont entiers, avec des valeurs spécifiques aux processus de codage, aux caractéristiques de l'image source
et à d'autres caractéristiques relevant de l'application. Des codes de 4 bits, 1 octet ou 2 octets sont affectés aux
paramètres. Sauf pour certains groupes de paramètres optionnels, les paramètres codent des informations critiques sans
lesquelles le processus de décodage ne pourrait pas correctement reconstruire l'image.

Le code d'un paramètre doit être un entier non signé, de la longueur en bits spécifiée, et ayant la valeur affectée à ce
paramètre.

Pour les paramètres de longueur 2 octets (16 bits), l'octet de plus fort poids doit venir en premier dans la séquence
ordonnée d'octets du format de données comprimées. Les paramètres de 4 bits de longueur viennent toujours par paires,
chacune de ces paires devant toujours être codée comme un octet unique. Le premier paramètre de 4 bits de la paire doit
occuper les 4 bits de plus fort poids de l'octet. Dans tous les paramètres de 16, 8 ou 4 bits, le MSB doit venir en premier
et le LSB en dernier.

B.1.1.2 Marqueurs

Les marqueurs servent à identifier les différentes parties structurelles des formats de données comprimées. La plupart
des marqueurs sont le début de segments marqueurs, comprenant un groupe de paramètres en relation. Certains
marqueurs se présentent seuls. Des codes de deux octets sont affectés à tous les marqueurs: un octet X’FF’ suivi d'un
octet qui n'est égal ni à zéro ni à X’FF’ (voir Tableau B.1). Tout marqueur peut optionnellement être précédé de
n'importe quel nombre d'octets de remplissage, auxquels est affecté le code X’FF’.
NOTE – Cette structure spéciale d'affectation de codes aux marqueurs permet à un décodeur de faire l'analyse syntaxique
du format de données comprimées et d'en extraire les diverses parties, sans décomprimer d'autres segments de données d'image.

B.1.1.3 Codes affectés aux marqueurs

Des codes de deux octets doivent être affectés à tous les marqueurs: un octet X’FF’ suivi d'un second octet qui n'est égal
ni à zéro ni à X’FF’. Le second octet est spécifié dans le Tableau B.1 pour chaque marqueur défini. Un astérisque (*)
signale un marqueur isolé, c'est-à-dire qui n'est pas le début d'un segment marqueur.

34 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau B.1 – Codes affectés aux marqueurs

Code affecté Symbole Description

Marqueurs de début de trame, codage de Huffman non différentiel

X’FFC0’ SOF0 DCT de base


X’FFC1’ SOF1 DCT séquentiel étendu
X’FFC2’ SOF2 DCT progressif
SOF3
X’FFC3’ Sans perte (séquentiel)

Marqueurs de début de trame, codage de Huffman différentiel

X’FFC5’ SOF5 DCT séquentiel différentiel


X’FFC6’ SOF6 DCT progressif différentiel
X’FFC7’ SOF7 Différentiel sans perte (séquentiel)

Marqueurs de début de trame, codage arithmétique non différentiel

X’FFC8’ JPG Réservé aux extensions JPEG


X’FFC9’ SOF9 DCT séquentiel étendu
X’FFCA’ SOF10 DCT progressif
SOF11
X’FFCB’ Sans perte (séquentiel)

Marqueurs de début de trame, codage arithmétique différentiel

X’FFCD’ SOF13 DCT séquentiel différentiel


X’FFCE’ SOF14 DCT progressif différentiel
X’FFCF’ SOF15 Différentiel sans perte (séquentiel)

Spécifications de table de Huffman

X’FFC4’ DHT Définition de table(s) de Huffman

Spécifications de tables décisionnelles de codage arithmétique

X’FFCC’ DAC Définition de table(s) décisionnelle de codage arithmétique

Reprise (terminaison d'intervalle)

X’FFD0’ à X’FFD7’ RSTm* Resynchronisation à la reprise avec compteur


à «m» modulo 8

Autres marqueurs

X’FFD8’ SOI* Début d'image


X’FFD9’ EOI* Fin d'image
X’FFDA’ SOS Début de balayage
X’FFDB’ DQT Définition de table(s) de quantification
X’FFDC’ DNL Définition du nombre de lignes
X’FFDD’ DRI Définition d'intervalle de reprise
X’FFDE’ DHP Définition de progression hiérarchique
X’FFDF’ EXP Expansion de la ou des composante(s) de référence
X’FFE0’ à X’FFEF’ APPn Réservés aux segments d'application
X’FFF0’ à X’FFFD’ JPGn Réservés aux extensions JPEG
X’FFFE’ COM Commentaire

Marqueurs réservés

X’FF01’ TEM* Pour utilisation privée temporaire lors du codage


arithmétique
X’FF02’ à X’FFBF’ RES Réservés

Rec. T.81 du CCITT (1992 F) 35


ISO/CEI 10918-1 : 1993(F)

B.1.1.4 Segments marqueurs

Un segment marqueur comprend un marqueur suivi d'une séquence de paramètres associés. Le premier paramètre d'un
segment marqueur est un paramètre «longueur», de deux octets. Ce paramètre longueur code le nombre d'octets du
segment marqueur, y compris le paramètre longueur et non compris le marqueur de deux octets. Deux des segments
marqueurs sont désignés comme en-têtes: l'en-tête de trame et l'en-tête de balayage.

B.1.1.5 Segment de données à codage entropique

Un segment de données à codage entropique contient la sortie d'une procédure à codage entropique. Il comprend un
nombre entier d'octets si la procédure à codage entropique utilisée est le codage de Huffman ou le codage arithmétique.
NOTES

1 La procédure d'extension des segments à codage entropique à un nombre entier d'octets est la suivante: en codage de
Huffman, des bits 1 sont bourrés, si nécessaire, à la fin des données comprimées, pour compléter le dernier octet du segment. En
codage arithmétique, le calage à l'octet est réalisé dans la procédure de terminaison du segment à codage entropique (voir D.1.8).

2 Pour garantir qu'aucun marqueur ne se présentera dans un segment à codage entropique, tout octet X’FF’ généré par
un codeur de Huffman ou arithmétique, ou généré par le bourrage de bits 1 décrit dans la NOTE 1 ci-dessus, est suivi d'un octet zéro,
également «bourré» (voir D.1.6 et F.1.2.3).

B.1.2 Syntaxe

La syntaxe du format de transfert est spécifiée en B.2 et B.3. Pour les applications de la présente Spécification, la
spécification de la syntaxe inclut:

– l'ordre requis des marqueurs, paramètres et segments à codage entropique;


– l'identification des constituants optionnels ou conditionnels;
– le nom, le symbole et la définition de chaque marqueur et paramètre;
– les valeurs permises pour chaque paramètre;
– les éventuelles restrictions aux spécifications ci-dessus, spécifiques aux divers processus de codage.

L'ordre des constituants et leur caractère optionnel ou conditionnel, sont spécifiés sur les figures de présentation de
syntaxe de B.2 et B.3. Les noms, symboles, définitions, valeurs autorisées et restrictions sont spécifiés immédiatement
après la figure de présentation de syntaxe.

B.1.3 Conventions des figures de présentation de syntaxe

Les figures de présentation de syntaxe de B.2 et B.3 font partie de la spécification du format de transfert. Les
conventions suivantes, représentées Figure B.1, s'appliquent à ces figures:

– indicateur de paramètre/marqueur: un rectangle entouré d'un trait fin contient un marqueur ou un


paramètre unique;

– indicateur de segment: un rectangle entouré d'un trait épais contient un segment marqueur, un segment
de données à codage entropique, ou la combinaison des deux;

– indicateur de longueur de paramètre: la largeur d'un rectangle entouré d'un trait fin est proportionnelle
à la longueur du code (4, 8 ou 16 bits comme montré en E, B et D de la Figure B.1) du marqueur ou du
paramètre qu'il contient; la largeur d'un rectangle entouré d'un trait épais n'a pas de signification
particulière;

– indicateur optionnel/conditionnel: des crochets indiquent qu'un marqueur ou un segment de marqueur


ne figure qu'à titre optionnel ou conditionnel dans les données d'image comprimées;

– ordre: dans le format de transfert, un paramètre ou un marqueur représenté sur une figure précède tous
ceux qui se trouvent à sa droite et suit tous ceux représentés à sa gauche;

– indicateur de données à codage entropique: les crochets anguleux indiquent que l'entité entre crochets
est à codage entropique.

36 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Segment [ Segment [
[B] D E F
optionnel

TISO0830-93/d019

Figure B.1 – Conventions de notation de syntaxe

B.1.4 Conventions relatives aux symboles, longueurs de code et valeurs

A la suite de chaque figure de présentation de syntaxe de B.2 et B.3, sont spécifiés le symbole, le nom et la définition de
chaque marqueur et paramètre présentés sur la figure. Pour chaque paramètre, la longueur de code et les valeurs
autorisées sont également spécifiées sous forme de tableau.

Les conventions suivantes s'appliquent aux symboles des marqueurs et paramètres:


– tous les symboles de marqueur comprennent trois lettres majuscules, certains comportant également un
indice. Exemples: SOI, SOFn;
– tous les symboles de paramètre ont une lettre majuscule, suivie pour certains d'une lettre minuscule;
certains ont un ou des indices. Exemples: Y, Nf, Hi, Tqi.

B.2 Syntaxe générale des processus séquentiels et progressifs


Ce paragraphe spécifie la syntaxe du format de transfert s'appliquant à tous les processus de codage basés DCT
séquentiels, basés DCT progressifs et aux modes de fonctionnement sans perte.

B.2.1 Syntaxe de haut niveau

La Figure B.2 spécifie l'ordre des constituants de haut niveau du format de transfert, pour tous les processus de codage
non hiérarchique spécifiés dans la présente Spécification.

Données d'image comprimées

SOI Trame EOI

Trame

En-tête Segment
[ Tables/
divers
[
de trame
Balayage 1 [ DNL
[ [Balay2 ] [Balay der ]

Balayage

[ Tables/ [ En-tête de [ECS 0 RST0 ECS der-1 RST der-1 ] ECSder


divers balayage

Segment à codage entropique 0 Segment à codage entropique der

<MCU 1 >, <MCU 2>, ··· <MCU Ri > <MCU n>, <MCU n + 1 >, ··· <MCUder >

TISO0840-93/d020

Figure B.2 – Syntaxe du format de transfert s'appliquant à tous les processus de codage
basés DCT séquentiels, DCT progressifs et mode de fonctionnement sans perte

Rec. T.81 du CCITT (1992 F) 37


ISO/CEI 10918-1 : 1993(F)

Les trois marqueurs de la Figure B.2 sont définis comme suit:


SOI: marqueur de début d'image – Marque le début d'une image comprimée représentée dans le format de
transfert.
EOI: marqueur de fin d'image – Marque la fin d'une image comprimée représentée dans le format de transfert.
RSTm: marqueur de reprise – Marqueur conditionnel, placé entre des segments de données comprimées,
uniquement si la reprise est activée. Il existe huit marqueurs de reprise uniques (m = 0 à 7) se répétant dans
l'ordre 0 à 7, en reprenant à 0 pour chaque balayage, en sorte de doter l'intervalle de reprise d'un compteur
modulo 8.

Le niveau supérieur de la Figure B.2 spécifie que le format de transfert non hiérarchique doit commencer par un
marqueur SOI, contenir exactement une trame et se terminer par un marqueur EOI.

Le second niveau de la Figure B.2 spécifie qu'une trame doit commencer par un en-tête de trame et contenir un ou
plusieurs balayages. Un en-tête de trame peut être précédé d'une ou plusieurs spécifications de tables ou segments
marqueurs divers, comme spécifié en B.2.4. Si un segment DNL figure (voir B.2.5), il doit suivre immédiatement le
premier balayage.

Pour les processus basés DCT séquentiels et les processus sans perte, chaque balayage doit contenir de une à quatre
composantes d'image. Si un balayage contient de deux à quatre composantes, elles doivent être entrelacées à l'intérieur
de ce balayage. Pour les processus basés DCT progressifs, chaque composante d'image n'est contenue que partiellement
dans un balayage. Seuls le ou les premiers balayages des composantes (qui ne contiennent que des données de
coefficients DC) peuvent être entrelacés.

Le troisième niveau de la Figure B.2 spécifie qu'un balayage doit commencer par un en-tête de balayage et contenir un
ou plusieurs segments de données à codage entropique. Chaque en-tête de balayage peut être précédé d'une ou plusieurs
spécifications de tables ou de divers segments marqueurs. Si la reprise n'est pas activée, un seul segment à codage
entropique doit figurer (celui libellé «dernier» ou «der») et aucun marqueur de reprise ne doit figurer. Si la reprise est
activée, le nombre de segments à codage entropique est défini par la taille de l'image et l'intervalle de reprise. Dans ce
cas, un marqueur de reprise doit suivre chaque segment à codage entropique, sauf le dernier.

Le quatrième niveau de la Figure B.2 spécifie que chaque segment à codage entropique comprend une séquence de
MCU à codage entropique. Si la reprise est activée et que l'intervalle de reprise est défini comme Ri, chaque segment à
codage entropique, sauf le dernier, doit contenir Ri MCU. Le dernier doit contenir le nombre de MCU (quel qu'il soit)
nécessaire pour compléter le balayage.

La Figure B.2 spécifie les emplacements où des segments de spécification de tables peuvent figurer. Toutefois, la
présente Spécification spécifie que le format de transfert doit contenir toutes les données de spécification de tables
nécessaires pour le décodage de l'image comprimée. En conséquence, les données de spécification de tables requises
doivent figurer à un ou plusieurs des emplacements autorisés.

B.2.2 Syntaxe d'en-tête de trame

La Figure B.3 spécifie que l'en-tête de trame doit figurer en début de trame. Cet en-tête spécifie les caractéristiques de
l'image source (voir A.1), les composantes de la trame et les facteurs d'échantillonnage de chaque composante, ainsi que
les destinations où seront retrouvées les tables de quantification à utiliser pour chaque composante.

En-tête de trame

Paramètres
SOFn Lf P Y X Nf
spécif.-composante

Paramètres spécifiques à la composante de trame

C1 H1 V1 Tq 1 C2 H 2 V2 Tq 2 CNf H Nf VNf Tq Nf

TISO0850-93/d021

Figure B.3 – Syntaxe de l'en-tête de trame

38 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Les marqueurs et les paramètres de la Figure B.3 sont définis ci-après. Les tailles et valeurs permises pour chaque
paramètre sont données dans le Tableau B.2. Dans le Tableau B.2 (et dans les tableaux similaires qui suivent), les choix
de valeurs sont séparés par des virgules (par exemple 8, 12) et les limites de plage sont séparées par un tiret (par
exemple 0-3).

SOFn: marqueur de début de trame – Marque le début des paramètres de trame. L'indice n identifie le
processus de codage: séquentiel de base, séquentiel étendu, progressif ou sans perte – ainsi que la procédure de
codage entropique utilisée.

SOF0: DCT de base

SOF1: DCT séquentiel étendu, codage de Huffman

SOF2: DCT progressif, codage de Huffman

SOF3: sans perte (séquentiel), codage de Huffman

SOF9: DCT séquentiel étendu, codage arithmétique

SOF10: DCT progressif, codage arithmétique

SOF11: sans perte (séquentiel), codage arithmétique

Lf: longueur d'en-tête de trame – Spécifie la longueur de l'en-tête de trame indiqué Figure B.3 (voir B.1.1.4).

P: précision d'échantillon – Spécifie en bits, la précision des échantillons des composantes de la trame.

Y: nombre de lignes – Spécifie le nombre maximal de lignes de l'image source. Doit être égal au nombre de
lignes de la composante ayant verticalement le plus grand nombre d'échantillons (voir A.1.1). La valeur 0
indique que le nombre de lignes doit être défini par le marqueur DNL et des paramètres situés à la fin du
premier balayage (voir B.2.5).

X: nombre d'échantillons par ligne – Spécifie le nombre maximal d'échantillons par ligne de l'image source.
Doit être égal au nombre d'échantillons par ligne de la composante ayant horizontalement le plus grand nombre
d'échantillons (voir A.1.1).

Nf: nombre de composantes d'image de la trame – Spécifie le nombre de composantes d'image source de la
trame. La valeur de Nf doit être égale au nombre d'ensembles de paramètres de spécification de composantes
de trame figurant dans l'en-tête de la trame (Ci, Hi, Vi et Tqi).

Ci: identificateur de composante – Affecte un label unique à la ième composante de la séquence de paramètres
de spécification de composante de trame. Doit être utilisé dans les en-têtes de balayage pour identifier les
composantes de la trame. La valeur de Ci doit être différente des valeurs de C1 à Ci – 1.

Hi: facteur d'échantillonnage horizontal – Spécifie la relation entre la dimension de la composante horizontale
et la dimension maximale de l'image X (voir A.1.1); spécifie également le nombre d'unités de données
horizontales de la composante Ci de chaque MCU, quand plusieurs composantes sont codées dans un balayage.

Vi: facteur d'échantillonnage vertical – Spécifie la relation entre la dimension de la composante verticale et la
dimension maximale de l'image Y (voir A.1.1); spécifie également le nombre d'unités de données verticales de
la composante Ci dans chaque MCU quand plusieurs composantes sont codées dans un balayage.

Tqi: sélecteur de destination de table de quantification – Spécifie une des quatre destinations de table de
quantification possibles, où sera retrouvée la table à utiliser pour la déquantification des coefficients DCT de la
composante Ci. Si le processus de décodage utilise la procédure de déquantification, cette table devra avoir été
installée à cette destination lorsque le décodeur sera sur le point de décoder le ou les balayages contenant la
composante Ci. Cette destination ne doit pas être respécifiée, ni son contenu modifié, avant la fin de tous les
balayages contenant la composante Ci.

Rec. T.81 du CCITT (1992 F) 39


ISO/CEI 10918-1 : 1993(F)

Tableau B.2 – Tailles et valeurs des paramètres de l'en-tête de trame

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Lf 16 8 + 3 × Nf

P 18 8-255 8, 12 8, 12 2-165

Y 16 0-65 535

X 16 1-65 535

Nf 18 1-255 1-255 1-4 1-255

Ci 18 0-25535

Hi 14 1-43550

Vi 14 1-43550

Tqi 18 0-312 0-355 0-3 0-125

B.2.3 Syntaxe de l'en-tête de balayage

La Figure B.4 spécifie l'en-tête de balayage, devant figurer au début d'un balayage. Cet en-tête spécifie la ou les
composantes contenues dans le balayage, les destinations auxquelles seront retrouvées les tables de codage entropique à
utiliser pour chaque composante du balayage et, en DCT progressif, la partie des données du coefficient quantifié DCT
contenue dans le balayage. Pour les processus sans perte, les paramètres de balayage spécifient le prédicteur et la
transformation point.
NOTE – Si une seule composante d'image figure dans un balayage, cette composante est, par définition, non entrelacée. Si
plusieurs composantes d'image figurent dans un balayage, elles sont, par définition, entrelacées.

En-tête de balayage

SOS Ls Ns Paramètres de spécif. Ss Se Ah Al


des composantes

Paramètres de spécification de composante de balayage

Cs 1 Td 1 Ta 1 Cs2 Td 2 Ta 2 CsNs

TISO0860-93/d022
Td Ns Ta Ns

Figure B.4 – Syntaxe de l'en-tête de balayage

Le marqueur et les paramètres représentés Figure B.4 sont définis comme suit. Les tailles et valeurs permises pour
chaque paramètre sont données dans le Tableau B.3.

SOS: marqueur de début de balayage – Marque le début des paramètres de balayage.

Ls: longueur de l'en-tête de balayage – Spécifie la longueur de l'en-tête de balayage représenté Figure B.4
(voir B.1.1.4).

40 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Ns: nombre de composantes d'image du balayage – Spécifie le nombre de composantes d'image source du
balayage. La valeur de Ns doit être égale au nombre d'ensembles de paramètres de spécification de
composantes de balayage (Csj, Tdj et Taj) figurant dans l'en-tête de balayage.

Csj: sélecteur de composante de balayage – Détermine la jème composante du balayage, parmi les
Nf composantes d'image spécifiées dans les paramètres de trame. Chaque Csj doit correspondre à une des
Ci valeurs spécifiées dans l'en-tête de trame, et l'ordre de l'en-tête de balayage doit suivre l'ordre de l'en-tête de
trame. Si Ns > 1, l'ordre des composantes entrelacées de la MCU est: première, Cs1; deuxième, Cs2; etc.
Si Ns > 1, les restrictions suivantes s'appliquent aux composantes d'image contenues dans le balayage:

Ns
∑ H j × V j ≤ 10,
j =1

où Hj et Vj sont les facteurs d'échantillonnage horizontal et vertical de la composante de balayage j. Ces


facteurs d'échantillonnage sont spécifiés dans l'en-tête de trame pour la composante i, où i est l'indice de
spécification de composante de trame, dont l'identificateur de composante de trame Ci correspond au sélecteur
de composante de balayage Csj.

Considérons, par exemple, une image ayant trois composantes, de dimensions maximales 512 lignes et
512 échantillons par ligne, avec les facteurs d'échantillonnage suivants:

Composante 0 H 0 = 4, V0 = 1
Composante 1 H1 = 1, V1 = 2
Composante 2 H 2 = 2, V2 = 2

La somme des Hj × Vj est alors (4 × 1) + (1 × 2) + (2 × 2) = 10.

La valeur de Csj doit être différente des valeurs de Cs1 à Csj – 1.

Tdj: sélecteur de destination de table de codage entropique DC – Spécifie l'une des quatre destinations de
table de codage entropique DC possibles, à laquelle sera retrouvée la table de codage nécessaire pour le
décodage des coefficients DC de la composante Csj. La table de codage entropique DC doit avoir été installée
à cette destination (voir B.2.4.2 et B.2.4.3) lorsque le décodeur est prêt à décoder le balayage courant. Ce
paramètre spécifie la destination de table de codage entropique pour les processus sans perte.

Taj: sélecteur de destination de table de codage entropique AC – Spécifie l'une des quatre destinations de
table de codage entropique AC possibles, à laquelle sera retrouvée la table de codage nécessaire pour le
décodage des coefficients AC de la composante Csj. La table de codage entropique AC doit avoir été installée
à cette destination (voir B.2.4.2 et B.2.4.3) lorsque le décodeur est prêt à décoder le balayage courant. Ce
paramètre est nul pour les processus sans perte.

Ss: début de la sélection spectrale ou de sélection de prédicteur – Dans les modes de fonctionnement DCT, ce
paramètre spécifie le premier coefficient DCT de chaque bloc de la séquence en zigzag à coder dans le
balayage. Ce paramètre doit être mis à zéro pour les processus basés DCT séquentiels. Dans les modes de
fonctionnement sans perte, ce paramètre est utilisé pour choisir le prédicteur.

Se: fin de sélection spectrale – Spécifie le dernier coefficient de chaque bloc de la séquence en zigzag à coder
dans un balayage. Ce paramètre doit être mis à 63 pour les processus DCT séquentiels, il doit être nul pour les
processus sans perte.

Ah: paramètre de position binaire en approximations successives (haut) – Il spécifie la transformation point
utilisée dans le précédent balayage (c'est-à-dire le paramètre Al de position binaire de l'approximation dans le
précédent balayage) pour la bande de coefficients spécifiée par Ss et Se. Ce paramètre doit être mis à zéro pour
le premier balayage de chaque bande de coefficients. En mode de fonctionnement sans perte, ce paramètre est
dénué de signification, il doit être mis à zéro.

Al: paramètre de position binaire en approximations successives (bas) ou de transformation point – Dans les
modes de fonctionnement basés DCT, ce paramètre spécifie la transformation point, c'est-à-dire la position
binaire inférieure avant codage de la bande de coefficients spécifiés par Ss et Se. Ce paramètre doit être mis à
zéro pour les processus basés DCT séquentiels. En mode de fonctionnement sans perte, il spécifie la
transformation point Pt.

Rec. T.81 du CCITT (1992 F) 41


ISO/CEI 10918-1 : 1993(F)

Les sélecteurs de destination de table de codage entropique Tdj et Taj spécifient soit les tables de Huffman (dans les
trames utilisant le codage de Huffman), soit les tables de codage arithmétique (dans les trames utilisant le codage
arithmétique). Dans le dernier cas, le sélecteur de destination de table de codage entropique spécifie une destination de
table décisionnelle de codage arithmétique et la zone statistique associée.

Tableau B.3 – Tailles et valeurs des paramètres d'en-tête de balayage

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Ls 16 6 + 2 × Ns

Ns 18 1-4

Csj 18 0-255a)

Tdj 14 0-1 0-3 0-3 0-3

Taj 14 0-1 0-3 0-3 0

Ss 18 0-1 0-1 0-63 1-7b)

Se 18 63- 63- Ss-63c) 0

Ah 14 0-1 0-1 0-13 0

Al 14 0-1 0-1 0-13 0-15


a) Csj doit appartenir à l'ensemble des Ci spécifiés dans l'en-tête de trame.
b) 0 pour les trames différentielles sans perte en mode hiérarchique (voir B.3).
c) 0 si Ss = 0.

B.2.4 Syntaxe des spécifications de tables et segments marqueurs divers

La Figure B.5 spécifie qu'aux emplacements indiqués sur la Figure B.2, tous les segments de spécification de tables ou
les segments marqueurs divers spécifiés de B.2.4.1 à B.2.4.6 doivent figurer dans n'importe quel ordre, et sans limite
quant au nombre de segments.

Tables ou segments marqueurs divers

Segment Segment
[ ] [ ] [ Segment ]
marqueur 1 marqueur 2 marqueur der
TISO0870-93/d023

Spécification de table de quantification


ou
Spécification de table de Huffman
ou
Spécification de table décisionnelle arithmétique
Segment marqueur ou
Définition de reprise
ou
Commentaire
ou
Données d'application

Figure B.5 – Syntaxe de tables et segments marqueurs divers

42 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Si une spécification de table se présente, pour une destination particulière, dans les données d'image comprimées, elle
doit remplacer toute spécification antérieure et doit être utilisée chaque fois que cette destination est spécifiée dans les
balayages restants de la trame. Si une spécification de table, pour une destination donnée, se présente plusieurs fois dans
les données d'image comprimées, chaque spécification doit remplacer la spécification précédente. Les spécifications de
tables de quantification ne doivent pas être altérées entre les balayages DCT progressifs d'une composante donnée.

B.2.4.1 Syntaxe de spécification de table de quantification

La Figure B.6 spécifie le segment marqueur définissant une ou plusieurs tables de quantification.

Segment de définition de table de quantification

DQT Lq Pq Tq Q0 Q1 Q63

TISO0880-93/d024
Multiple (t = 1, ..., n)

Figure B.6 – Syntaxe de spécification de table de quantification

Les marqueurs et paramètres de la Figure B.6 sont définis comme suit. La taille et les valeurs permises pour chaque
paramètre sont données dans le Tableau B.4.
DQT: marqueur de définition de table de quantification – Marque le début des paramètres de spécification de
table de quantification.
Lq: longueur de définition de table de quantification – Spécifie la longueur de tous les paramètres de table de
quantification indiqués Figure B.6 (voir B.1.1.4).
Pq: précision des éléments de la table de quantification – Spécifie la précision des valeurs Qk. La valeur 0
indique la valeur 8 bits pour Qk; la valeur 1 indique des valeurs 16 bits pour Qk. Pq doit être nul pour la
précision d'échantillon 8 bits (voir B.2.2).
Tq: identificateur de destination de table de quantification – Spécifie une des quatre destinations possibles,
dans le décodeur où la table de quantification doit être installée.
Qk: élément de table de quantification – Spécifie le kième élément, parmi 64 éléments, où k est l'indice dans la
séquence en zigzag des coefficients DCT. Les éléments de quantification doivent être spécifiés dans l'ordre de
balayage en zigzag.

Tableau B.4 – Tailles et valeurs des paramètres de spécification de table de quantification

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Lq 16 16 n Non défini
2 + ∑ (65 + 64 × Pq(t ) )
t =1

Pq 14 16 0 0, 1 0, 1 Non défini

Tq 14 16 0-3 Non défini

Qk 18, 16 1-255, 1-65 535 Non défini

La valeur n du Tableau B.4 est le nombre de tables de quantification spécifié dans le segment marqueur DQT.

Rec. T.81 du CCITT (1992 F) 43


ISO/CEI 10918-1 : 1993(F)

Lorsqu'une table de quantification a été définie pour une destination particulière, elle remplace les tables précédemment
stockées pour cette destination et elle doit être utilisée, lorsqu'elle est référencée, dans les balayages restants de l'image
courante et dans les images suivantes représentées dans le format abrégé des données d'images comprimées. Si aucune
table n'a été définie pour une destination particulière, et que cette destination est spécifiée dans un en-tête de trame, les
résultats sont imprévisibles.

Un processus basé DCT 8 bits ne doit pas utiliser une table de quantification de précision 16 bits.

B.2.4.2 Syntaxe de spécification de tables de Huffman

La Figure B.7 spécifie le segment marqueur définissant une ou plusieurs spécifications de table de Huffman.

Segment de définition de table de Huffman

Affect. longueurs
DHT Lh Tc Th L1 L2 L16
symboles

Multiple (t = 1, ..., n)
Paramètres d'affectation de longueurs des symboles

V1,1 V1,2 V1,L V 2,1 V 2,2 V2,L V16,1 V16,2 V16,L


1 2 16

TISO0890-93/d025

Figure B.7 – Syntaxe de spécification de tables de Huffman

Les marqueurs et paramètres de la Figure B.7 sont définis ci-après. Les tailles et valeurs permises pour chaque paramètre
sont données dans le Tableau B.5.
DHT: définition de marqueur de table de Huffman – Marque le début des paramètres de définition de tables
de Huffman.
Lh: longueur de la définition de tables de Huffman – Spécifie la longueur de tous les paramètres de tables de
Huffman de la Figure B.7 (voir B.1.1.4).
Tc: classe de table – 0 = table DC ou table sans perte; 1 = table AC.
Th: identificateur de destination de table de Huffman – Spécifie une des quatre destinations possibles, dans le
décodeur où la table de Huffman doit être installée.
Li: nombre de codes de Huffman de longueur i – Spécifie le nombre de codes de Huffman de chacune des
16 longueurs possibles autorisées par la présente Spécification. Les Li sont des éléments de la liste BITS.
Vij: valeur associée à chaque code de Huffman – Spécifie, pour chaque i, la valeur associée à chaque code de
Huffman de longueur i. La signification de chaque valeur est déterminée par le modèle de codage de Huffman.
Les Vij sont des éléments de la liste HUFFVAL.

La valeur n du Tableau B.5 est le nombre de tables de Huffman spécifié dans le segment marqueur DHT. La valeur mt,
nombre de paramètres qui suivent les 16 Li(t) paramètres pour la table de Huffman t, est donnée par:

16
m t = ∑ Li
i =1

En général, mt est différente pour chaque table.

Lorsqu'une table de Huffman a été définie pour une destination particulière, elle remplace les tables précédemment
stockées pour cette destination et elle doit être utilisée, lorsqu'elle est référencée, dans les balayages restants de l'image
courante et dans les images suivantes représentées dans le format abrégé des données d'images comprimées. Si aucune
table n'a été définie pour une destination particulière, et que cette destination est spécifiée dans un en-tête de balayage,
les résultats sont imprévisibles.

44 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau B.5 – Tailles et valeurs des paramètres de spécification de table de Huffman

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

n
Lh 16 2 + ∑ (17 + mt )
t =1

Tc 14 0, 1 0

Th 14 0, 1 0-3

Li 18 0-255

Vi, j 18 0-255

B.2.4.3 Syntaxe des tables décisionnelles arithmétiques

La Figure B.8 spécifie le segment marqueur définissant une ou plusieurs spécifications de tables décisionnelles
arithmétiques. Elles remplacent les tables décisionnelles de codage arithmétique par défaut, instaurées par le marqueur
SOI pour les processus de codage arithmétique. (Voir F.1.4.4.1.4 et F.1.4.4.2.1.)

Segment de définition de tables décisionnelles arithmétiques

DAC La Tc Tb Cs
TISO0900-93/d026

Multiple (t = 1, ..., n)

Figure B.8 – Syntaxe de spécification de tables décisionnelles arithmétiques

Les marqueurs et paramètres de la Figure B.8 sont définis ci-après. Les tailles et valeurs permises pour chaque paramètre
sont données dans le Tableau B.6.

DAC: marqueur de définition de table décisionnelle – Marque le début de la définition de paramètres


décisionnels de codage arithmétique.

La: longueur de la définition des paramètres décisionnels de codage arithmétique – Spécifie la longueur de
tous les paramètres décisionnels de codage arithmétique de la Figure B.8 (voir B.1.1.4).

Tc: classe de table – 0 = table DC ou table sans perte; 1 = table AC.

Tb: identificateur de destination de table décisionnelle de codage arithmétique – Spécifie une des quatre
destinations possibles dans le décodeur où la table décisionnelle de codage arithmétique doit être installée.

Cs: valeur de table décisionnelle – Table décisionnelle AC ou table décisionnelle DC (et sans perte). Une
valeur unique de Cs doit suivre chaque valeur de Tb. Pour les tables décisionnelles AC, Tc doit être égal à 1
et Cs doit contenir une valeur de Kx dans la plage 1 ≤ Kx ≤ 63. Pour les tables décisionnelles DC (et sans
perte), Tc doit être nul, et Cs contenir deux paramètres de 4 bits, L et U, tels que 0 ≤ L ≤ U ≤€15, avec
Cs = L + 16 × U.

Rec. T.81 du CCITT (1992 F) 45


ISO/CEI 10918-1 : 1993(F)

La valeur n du Tableau B.6 est le nombre de tables décisionnelles spécifié dans le segment marqueur DAC. Les
paramètres L et U sont les limites inférieure et supérieure des valeurs décisionnelles, utilisées dans les procédures de
codage arithmétique définies pour le codage de coefficients DC et le codage sans perte. La plage séparée de valeurs 1
à 63, indiquée pour le codage DCT, concerne le paramètre décisionnel Kx utilisé dans le codage des coefficients AC.

Tableau B.6 – Tailles et valeurs des paramètres de spécification de tables décisionnelles

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

La 16 Non défini 2+2×n

Tc 14 Non défini 0, 1 0-255

Tb 14 Non défini 0-3

Cs 18 Non défini 0-255 (Tc = 0), 1-63 (Tc = 1) 0-255

B.2.4.4 Syntaxe de définition de l'intervalle de reprise

La Figure B.9 spécifie le segment marqueur définissant l'intervalle de reprise.

Segment de définition de l'intervalle de reprise

DRI Lr Ri

TISO0910-93/d027

Figure B.9 – Syntaxe de définition de l'intervalle de reprise

Les marqueurs et paramètres de la Figure B.9 sont définis ci-après. Les tailles et les valeurs permises pour chaque
paramètre sont données dans le Tableau B.7.

DRI: définition du marqueur d'intervalle de reprise – Marque le début des paramètres définissant l'intervalle
de reprise.

Lr: définition de la longueur du segment intervalle de reprise – Spécifie la longueur des paramètres du
segment DRI représenté Figure B.9 (voir B.1.1.4).

Ri: intervalle de reprise – Spécifie le nombre de MCU de l'intervalle de reprise.

Dans le Tableau B.7, la valeur n est le nombre de rangées de MCU dans l'intervalle de reprise. Le paramètre MCUR est
le nombre de MCU requis pour constituer une rangée d'échantillons de chaque composante du balayage. Le marqueur
SOI désactive les intervalles de reprise. Un segment marqueur DRI avec Ri non nul doit figurer pour activer le
traitement des intervalles de reprise dans les balayages suivants. Un segment marqueur DRI où Ri est égal à zéro
désactive les intervalles de reprise dans les balayages suivants.

B.2.4.5 Syntaxe de commentaire

La Figure B.10 spécifie la structure d'un segment marqueur commentaire.

46 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau B.7 – Tailles et valeurs des paramètres de définition du segment intervalle de reprise

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Lr 16 4

Ri 16 0-65 535 n × MCUR

Segment commentaire

COM Lc Cm . . . Cm
1 Lc-2

TISO00920-93/d028

Figure B.10 – Syntaxe du segment commentaire

Les marqueurs et paramètres de la Figure B.10 sont définis ci-après. Les tailles et valeurs permises pour chaque
paramètre sont données dans le Tableau B.8.
COM: marqueur commentaire – Marque le début d'un commentaire.
Lc: longueur du segment commentaire – Spécifie la longueur du segment commentaire représenté Figure B.10
(voir B.1.1.4).
Cmi: octet de commentaire – Son interprétation est laissée à l'application.

Tableau B.8 – Tailles et valeurs des paramètres du segment commentaire

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Lc 16 2-65 535

Cmi 18 0-25522

B.2.4.6 Syntaxe des données d'application

La Figure B.11 spécifie la structure d'un segment marqueur données d'application.

Segment de données d'application

APPn Lp Ap 1 . . . ApLp-2

TISO0930-93/d029

Figure B.11 – Syntaxe des données d'application

Rec. T.81 du CCITT (1992 F) 47


ISO/CEI 10918-1 : 1993(F)

Le marqueur et les paramètres de la Figure B.11 sont définis ci-après. Les tailles et valeurs pour chaque paramètre sont
données dans le Tableau B.9.

APPn: marqueur de données d'application – Marque le début d'un segment de données d'application.

Lp: longueur d'un segment de données d'application – Spécifie la longueur du segment de données
d'application représenté Figure B.11 (voir B.1.1.4).

Api: octet de données d'application – Son interprétation est laissée à l'application.

Les segments APPn (application) sont réservés pour utilisation par l'application. Comme ces segments peuvent être
définis différemment pour des applications différentes, ils doivent être supprimés lors des transferts de données entre des
environnements d'application différents.

Tableau B.9 – Tailles et valeurs du paramètre segment de données d'application

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Lp 16 2-65 535

Api 18 0-25522

B.2.5 Syntaxe de définition du nombre de lignes

La Figure B.12 spécifie le segment marqueur de définition du nombre de lignes. Le segment définition du nombre de
lignes (DNL) (define number of lines) fournit, à la fin du premier balayage, un mécanisme des définitions ou
redéfinitions du nombre de lignes de la trame (le paramètre Y de l'en-tête de trame). La valeur spécifiée doit être
cohérente avec le nombre de rangées de MCU codé dans le premier balayage. Ce segment, s'il est utilisé, ne peut se
présenter qu'à la fin du premier balayage, et seulement après le codage d'un nombre entier de rangées de MCU. Ce
segment marqueur est obligatoire si le nombre de lignes (Y) spécifié dans l'en-tête de trame a la valeur zéro.

Segment de définition du nombre de lignes

DNL Ld NL

TISO0940-93/d030

Figure B.12 – Syntaxe de définition du nombre de lignes

Les marqueurs et paramètres de la Figure B.12 sont définis ci-après. Les tailles et valeurs permises pour chaque
paramètre sont données dans le Tableau B.10.

DNL: marqueur de définition du nombre de lignes – Marque le début du segment de définition du nombre de
lignes.

Ld: longueur du segment de définition du nombre de lignes – Spécifie la longueur du segment de définition
du nombre de lignes représenté Figure B.12 (voir B.1.1.4).

NL: nombre de lignes – Spécifie le nombre de lignes de la trame (voir définition de Y en B.2.2.).

48 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau B.10 – Tailles et valeurs du paramètre segment de définition du nombre de lignes

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Ld 16 4-65535a)

NL 16 1-65 535a)
a) La valeur spécifiée doit être cohérente avec le nombre de lignes codé à l'endroit où le segment DNL termine le
segment de données comprimées.

B.3 Syntaxe en mode hiérarchique

B.3.1 Syntaxe en mode hiérarchique de haut niveau

La Figure B.13 spécifie l'ordre des constituants du format de transfert pour les processus de codage hiérarchique.

Données d'image comprimées

SOI [Tables/divers] Segment DHP Trame 1 Trame der EOI

TISO0950-93/d031

Figure B.13 – Syntaxe du mode de fonctionnement hiérarchique

La syntaxe du mode hiérarchique exige qu'un segment marqueur DHP apparaisse avant la ou les trames non
différentielles. Elle peut inclure des segments marqueurs EXP et des trames différentielles, qui doivent suivre la trame
non différentielle initiale. La structure de trame en mode hiérarchique est identique à celle en mode non hiérarchique.

Les trames non différentielles de la séquence hiérarchique doivent utiliser un des processus de codage spécifiés pour les
marqueurs SOFn: SOF0, SOF1, SOF2, SOF3, SOF9, SOF10 et SOF11. Les trames différentielles doivent utiliser un des
processus spécifiés pour SOF5, SOF6, SOF7, SOF13, SOF14 et SOF15. Les combinaisons permises de marqueurs SOF
dans une même séquence hiérarchique sont spécifiées dans l'Annexe J.

La précision d'échantillon (P) doit être constante pour toutes les trames et avoir la même valeur que celle codée dans le
segment marqueur DHP. Le nombre d'échantillons par ligne (X), pour toutes les trames, ne doit pas dépasser la valeur
codée dans le segment marqueur DHP. Si le nombre de lignes (Y) est non nul dans le segment marqueur DHP, le
nombre de lignes, pour toutes les trames, ne doit pas dépasser la valeur codée dans le segment marqueur DHP.

B.3.2 Syntaxe du segment DHP

Le segment DHP définit les composantes d'image, la taille et les facteurs d'échantillonnage de la séquence hiérarchique
complète de trames. Le segment DHP doit précéder la première trame; un seul segment DHP doit figurer dans les
données d'image comprimées.

La structure du segment marqueur DHP a une syntaxe identique à celle de l'en-tête de trame, sauf que le marqueur DHP
est utilisé à la place du marqueur SOFn. Les figures et la description en B.2.2 s'appliquent donc, sauf que le paramètre
sélecteur de destination de table de quantification doit être mis à zéro dans le segment DHP.

Rec. T.81 du CCITT (1992 F) 49


ISO/CEI 10918-1 : 1993(F)

B.3.3 Syntaxe du segment EXP

La Figure B.14 spécifie la structure du segment marqueur EXP. Le segment marqueur EXP doit figurer si (et seulement
si) l'expansion des composantes de référence est requise horizontalement ou verticalement. Les paramètres du segment
EXP s'appliquent uniquement à la trame suivante de l'image (qui doit être une trame différentielle). Si nécessaire, le
segment EXP peut être un des segments de spécification de tables/segments marqueurs divers précédant l'en-tête de
trame; le segment EXP ne doit pas être un des segments de spécification de tables/segments marqueurs divers, précédant
l'en-tête de balayage ou un segment marqueur DHP.

Segment d'expansion

EXP Le Eh Ev

TISO0960-93/d032

Figure B.14 – Syntaxe de segment expansion

Les paramètres de la Figure B.14 sont définis ci-après. Les tailles et les valeurs permises pour chaque paramètre sont
données dans le Tableau B.11.

EXP: marqueur d'expansion des composantes de référence – Marque le début du segment d'expansion des
composantes de référence.

Le: longueur du segment d'expansion des composantes de référence – Spécifie la longueur du segment
d'expansion des composantes de référence (voir B.1.1.4).

Eh: expansion horizontale – Valeur 1: expansion horizontale de la composante de référence; valeur 0:


expansion horizontale non requise.

Ev: expansion verticale – Valeur 1: expansion verticale de la composante de référence; valeur 0: expansion
verticale non requise.

Eh et Ev doivent être à 1 si l'expansion est requise horizontalement et verticalement.

Tableau B.11 – Tailles et valeurs des paramètres du segment expansion

Valeurs

Paramètre Taille (bits) DCT séquentiel DCT progressif Sans perte


De base Etendu

Le 16 3,1

Eh 14 0, 1

Ev 14 0, 1

B.4 Format abrégé de données d'image comprimées

La Figure B.2 présente les constituants de haut niveau du format de transfert. Ce format inclut toutes les spécifications
de tables requises pour le décodage. Si un environnement d'application prevoit d'autres méthodes de spécification de
tables que celles fournies au moyen des données d'image comprimées, certaines ou toutes les spécifications de tables
peuvent être omises. Ont le format abrégé, les données d'image comprimées auxquelles manquent des données de
spécification de tables nécessaires pour le décodage.

50 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

B.5 Format abrégé de données de spécification de tables

La Figure B.2 présente les constituants de haut niveau du format de transfert. Si aucune trame ne figure dans les données
comprimées, la seule fonction des données d'image comprimées est de véhiculer des spécifications de tables ou segments
marqueurs divers définis en B.2.4.1, B.2.4.2, B.2.4.5 et B.2.4.6. Dans ce cas, les données d'image comprimées ont le
format abrégé de données de spécification de tables (voir la Figure B.15).

Données d'image comprimées

SOI [Tables/divers] EOI

TISO0970-93/d033

Figure B.15 – Syntaxe du format abrégé de données


de spécification de tables

B.6 Résumé

L'ordre des parties constitutives du format de transfert et de toutes les structures de segment marqueur est résumé
Figures B.16 et B.17. A noter que Figure B.16, les rectangles entourés d'un trait double contiennent des segments
marqueurs. Figures B.16 et B.17, les rectangles entourés d'un trait épais contiennent uniquement des marqueurs.

Le segment EXP peut être combiné avec les autres segments tables/marqueurs divers précédant l'en-tête de trame, mais
pas avec les segments tables/marqueurs divers précédant le segment DHP ou l'en-tête de balayage.

Rec. T.81 du CCITT (1992 F) 51


ISO/CEI 10918-1 : 1993(F)

Format abrégé de données de spécifications de tables


SOI EOI

Mode hiérarchique Plusieurs trames

Tables/ Plusieurs balayages


divers DHP

Tables/
divers EXP SOFn DNL

Non expansion Du deuxième balayage


des composantes au dernier, et premier
de référence balayage lorsque le
Tables/ Reprise non activée
divers SOS ECS der nombre de lignes est
défini correctement
dans l'en-tête de trame
i=0 à dernier-1
Mode non hiérarchique

ECS i RST i(modulo 8)


TISO0980-93/d034
Reprise activée

Figure B.16 – Syntaxe du flux de données comprimées

52 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

i=1 à Nf
(En-tête de trame)
SOFn Lf P Y X Nf Ci Hi Vi Tq i

i=1 à Ns
(En-tête de balayage)
SOS Ls Ns Cs i Td i Taii Ss Se Ah Al

i=1 à Nf
(Segment DHP)
DHP Lf P Y X Nf Ci Hi Vi Tq i
(=0)
(Segment DNL)
DNL Ld NL

(Segment EXP)
EXP Le Eh Ev

(Tables/divers)

Table(s) de quantification Multiple (n fois)

DQT Lq Pq Tq Q0 Q1 Q 63
Table(s) de codage
de Huffman Multiple (n fois)

DHT Lh Tc Th L1 L 16 V1,1 V 16,L16


Table(s) de codage Plusieurs (n fois)
arithmétique
DAC La Tc Tb Cs

Condition par défaut


Intervalle de reprise
DRI Lr Ri

Commentaire

COM Lc Cm 1 . . . . Cm Lc-2

Application

APP n Lp Ap 1 . . . . Ap Lp-2
Format abrégé ou certaines tables situées ailleurs
TISO0990-93/d035

Figure B.17 – Flux des segments marqueurs

Rec. T.81 du CCITT (1992 F) 53


ISO/CEI 10918-1 : 1993(F)

Annexe C

Spécification des tables de Huffman


(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)

Une procédure de codage de Huffman peut être utilisée pour le codage entropique, dans tout processus de codage. Des
modèles de codage du codage de Huffman sont définis aux Annexes F, G et H. La présente annexe définit les
spécifications des tables de Huffman.

Les tables de Huffman sont spécifiées sous la forme d'une liste de 16 octets (BITS), donnant le nombre de codes pour
chaque longueur de code de 1 à 16. Cette liste est suivie d'une liste (HUFFVAL) de valeurs de symboles, sur 8 bits,
affectées à chaque code de Huffman. Ces valeurs sont placées dans la liste par longueurs croissantes. Les longueurs de
code supérieures à 16 bits ne sont pas permises. En outre, les codes doivent être générés en sorte que tous les mots dont
le code est composé de bits 1 soient réservés, quelle que soit leur longueur, comme préfixes de mots de code plus longs.
NOTE – L'ordre des valeurs de symbole dans HUFFVAL est déterminé uniquement par les longueurs de code. Pour une
longueur de code donnée, l'ordre des valeurs de symbole est arbitraire.

La présente annexe spécifie les procédures par lesquelles les tables de Huffman (ou les mots de code de Huffman et leurs
correspondants de 8 bits) sont dérivées des deux listes (BITS et HUFFVAL) du format de transfert. Toutefois, la façon
dont ces listes sont générées n'est pas spécifiée. Les listes doivent être générées d'une façon qui soit cohérente avec les
règles de codage de Huffman et doivent respecter les contraintes précisées dans le précédent paragraphe. L'Annexe K
contient un exemple de procédure de génération de listes de longueurs et de valeurs de codes de Huffman, qui sont
conformes à ces règles.
NOTE – Dans la présente Spécification, il n'est stipulé aucune obligation pour un codeur ou un décodeur quant à la mise
en œuvre des procédures exactement de la façon spécifiée par les organigrammes de cette annexe. Il est seulement nécessaire qu'un
codeur ou un décodeur mette en œuvre la fonction spécifiée dans la présente annexe. Le seul critère à considérer, pour un codeur ou
un décodeur, en matière de conformité à la présente Spécification, est qu'il satisfasse les conditions données à l'article 6 (pour les
codeurs) ou à l'article 7 (pour les décodeurs), telles que déterminées par les tests de conformité spécifiés dans la Partie 2.

C.1 Segments marqueurs de spécification de tables de Huffman

Le marqueur DHT signale le début de définition de tables de Huffman dans les données d'image comprimées. Le
paragraphe B.2.4.2 prescrit la syntaxe de spécification des tables de Huffman.

C.2 Conversion des spécifications de tables de Huffman en tables de codes et longueurs de code

La conversion des tables de Huffman spécifiées dans le format de transfert en tables de codes et longueurs de code
utilise trois procédures: la première procédure (Figure C.1) génère une table de longueurs de codes de Huffman; la
deuxième procédure (Figure C.2) génère les codes de Huffman à partir de la table construite par l'organigramme de la
Figure C.1; la troisième procédure (Figure C.3) génère les codes de Huffman dans l'ordre des valeurs de symboles.

Etant données une liste BITS (1 à 16) contenant le nombre de codes de chaque taille et une liste HUFFVAL contenant
les valeurs à associer, comme décrit ci-dessus, à ces codes, deux tables sont générées. La table HUFFSIZE contient une
liste de longueurs de code; la table HUFFCODE contient les codes de Huffman correspondant à ces longueurs.

A noter que la variable LASTK est mise à l'indice de la dernière entrée de la table.

Une table de codes de Huffman, HUFFCODE, contenant un code pour chaque taille de HUFFSIZE, est générée par la
procédure de la Figure C.2. La notation «SLL CODE 1» de la Figure C.2 indique un décalage logique à gauche de
CODE, d'une position binaire.

Deux tables, HUFFCODE et HUFFSIZE, ont maintenant été générées. Les entrées des tables sont ordonnées par valeurs
numériques et longueurs de code croissantes.

Les tables de codes de la procédure de codage, EHUFCO et EHUFSI, sont créées en réordonnant les codes spécifiés par
HUFFCODE et HUFFSIZE selon les valeurs affectées à chaque code dans HUFFVAL.

La Figure C.3 représente cette procédure de mise en ordre.

54 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

C.3 Ordre des bits à l'intérieur des octets

La racine d'un code de Huffman est placée au MSB (bit de plus fort poids) de l'octet, les bits successifs étant placés du
MSB au LSB (bit de plus faible poids) de cet octet. Les éventuels bits restants vont dans l'octet suivant, selon les mêmes
règles.

Les entiers associés aux codes de Huffman sont accolés, leur MSB adjacent au LSB du code de Huffman précédent.

Generate_size_table

K=0
I=1
J=1

HUFFSIZE(K) = I Non
K=K+1 J > BITS(I)?
J=J+1

Oui

I=I+1
J=1

Non
I > 16?

Oui

HUFFSIZE(K) = 0
LASTK = K

Fait

TISO1000-93/d036

Figure C.1 – Génération d'une table de tailles de codes de Huffman

Rec. T.81 du CCITT (1992 F) 55


ISO/CEI 10918-1 : 1993(F)

Generate_code_table

K=0
CODE = 0
SI = HUFFSIZE(0)

HUFFCODE(K) = CODE
CODE = CODE + 1
K=K+1

Oui
HUFFSIZE(K) = SI?

Non

Oui
HUFFSIZE(K) = 0?

Non

CODE = SLL CODE 1


SI = SI + 1 Fait

TISO1010-93/d037

Oui Non
HUFFSIZE(K) = SI?

Figure C.2 – Génération d'une table de codes de Huffman

56 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Order_codes

K=0

I = HUFFVAL(K)
EHUFCO(I) = HUFFCODE(K)
EHUFSI(I) = HUFFSIZE(K)
K=K+1

Oui
K < LASTK?

Non

Fait

TISO1020-93/d038

Figure C.3 – Procédure de classement des tables


de la procédure de codage

Rec. T.81 du CCITT (1992 F) 57


ISO/CEI 10918-1 : 1993(F)

Annexe D

Codage arithmétique
(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)

Une procédure de codage arithmétique binaire adaptatif peut être utilisée pour le codage entropique, dans tout processus
de codage sauf le processus séquentiel de base. Des modèles de codage arithmétique binaire adaptatif sont définis aux
Annexes F, G et H. Les procédures de codage et de décodage arithmétiques utilisées dans ces modèles sont définies dans
la présente annexe.

L'exemple simple de test donné en K.4 pourra être utile pour déterminer si une réalisation donnée est correcte.
NOTE – Dans la présente Spécification, il n'est stipulé aucune obligation pour un codeur ou un décodeur quant à la mise
en œuvre des procédures exactement de la façon spécifiée par les organigrammes de cette annexe. Il est seulement nécessaire qu'un
codeur ou un décodeur mette en œuvre la fonction spécifiée dans la présente annexe. Le seul critère à considérer, pour un codeur ou
un décodeur, en matière de conformité à la présente Spécification, est qu'il satisfasse les conditions données à l'article 6 (pour les
codeurs) ou à l'article 7 (pour les décodeurs), telles que déterminées par les tests de conformité spécifiés dans la Partie 2.

D.1 Procédure de codage arithmétique

Quatre procédures de codage arithmétique sont requises dans un système à codage arithmétique (voir le Tableau D.1).

Tableau D.1 – Procédures de codage arithmétique binaire

Procédure Objet

Code_0(S) Code une décision binaire «0» avec l'indice de contexte S

Code_1(S) Code une décision binaire «1» avec l'indice de contexte S

Initenc Initialise le codeur

Flush Termine le segment à codage entropique

Les procédures «Code_0(S)» et «Code_1(S)» codent respectivement la décision «0» et la décision «1». S est un indice
de contexte qui identifie une estimation de probabilité conditionnelle particulière utilisée dans le codage de la décision
binaire. La procédure «Initenc» initialise le codeur entropique à codage arithmétique. La procédure «Flush» termine le
segment à codage entropique en préparation du marqueur qui suit.

D.1.1 Principes du codage arithmétique binaire

Le codeur arithmétique code une série de symboles binaires, «0» et «1», chacun représentant le résultat possible d'une
décision binaire.

Chaque «décision binaire» détermine un choix entre deux possibilités. Cette décision binaire peut concerner: un signe
(positif ou négatif), une valeur absolue (nulle ou non nulle) ou la valeur d'un bit déterminé dans une séquence binaire
(zéro ou un).

Le train binaire de sortie (segment de données à codage entropique) représente une fraction binaire dont la précision
augmente au fur et à mesure que des octets sont accolés par le processus de codage.

D.1.1.1 Subdivision récursive des intervalles

La subdivision récursive en intervalles de probabilité est la base des procédures de codage arithmétique binaire. A
chaque décision binaire, l'intervalle de probabilité courant est divisé en deux sous-intervalles, le train binaire étant
modifié (si nécessaire) en sorte qu'il pointe vers la base (la limite inférieure) du sous-intervalle de probabilité attribué au
symbole qui s'est présenté.

58 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Lors de la partition de l'intervalle de probabilité courant en deux sous-intervalles, le sous-intervalle du symbole le moins
probable (LPS) et le sous-intervalle du symbole le plus probable (MPS) sont ordonnés en sorte que le sous-intervalle du
MPS soit le plus voisin de zéro. Lors du codage du LPS, la taille du sous-intervalle du MPS est ajoutée au train binaire
(contenu du registre de code). Cette convention de codage nécessite que les symboles soient reconnus comme MPS ou
LPS, plutôt que comme symboles 0 ou 1. En conséquence, le codage d'une décision n'est possible que si la taille du sous-
intervalle du LPS et la signification attribuée au MPS, pour cette décision, sont connues.

La subdivision de l'intervalle de probabilité courant nécessiterait idéalement une multiplication d'intervalle par
l'estimation de probabilité du LPS. Comme cette division est faite approximativement, le sous-intervalle du LPS peut
devenir plus grand que le sous-intervalle du MPS. Quand cela se produit, une «permutation conditionnelle» échange les
affectations des sous-intervalles, en sorte d'attribuer le plus grand sous-intervalle au MPS.

Comme la procédure de codage implique l'addition de fractions binaires, au lieu de la concaténation de mots de code
entiers, les décisions binaires les plus probables peuvent parfois être codées à un coût bien inférieur à un bit par décision.

D.1.1.2 Conditionnement d'estimation de probabilité

Un codeur arithmétique binaire adaptatif nécessite un modèle statistique – un modèle de sélection des estimations de
probabilité conditionnelle à utiliser pour le codage de chaque décision binaire. Lorsqu'une estimation de probabilité de
décision binaire donnée dépend d'un ou plusieurs éléments (le contexte) déjà codés, elle est «conditionnée» par ce ou ces
éléments. Le conditionnement d'une estimation de probabilité par des décisions codées antérieurement doit être identique
dans le codeur et dans le décodeur, et ne peut donc utiliser que des informations connues des deux.

Chaque estimation de probabilité conditionnelle requise par le modèle statistique est conservée dans une position de
mémoire, ou «registre statistique», identifiée par un indice de contexte unique S. Le codeur arithmétique est adaptatif, ce
qui signifie que l'estimation de probabilité de chaque indice de contexte est établie et conservée par le système de codage
arithmétique, sur la base de décisions de codage antérieures concernant cet indice de contexte.

D.1.2 Conventions et approximations de codage

Les procédures de codage utilisent une arithmétique entière à précision fixe et une représentation entière des valeurs
fractionnelles dans lesquelles X’8000’ peut être considéré comme la valeur décimale 0,75. L'intervalle de probabilité A
est maintenu dans la plage entière X’8000’ ≤ A < X’10000’, en le doublant chaque fois que sa valeur entière devient
inférieure à X’8000’, ce qui équivaut à maintenir A dans la plage décimale 0,75 ≤ A < 1,5. Cette procédure de
doublement est appelée renormalisation.

Le registre de code, C, contient les derniers bits de la séquence binaire. C est doublé chaque fois que A est doublé. Pour
éviter le dépassement de capacité de C, un octet de données est enlevé périodiquement des bits de plus fort poids du
registre C, et placé dans le segment à codage entropique.

Pour limiter la retenue dans le segment à codage entropique, les octets de sortie X’FF’ sont retardés jusqu'à résolution de
la retenue. Des octets 0 sont bourrés après chaque octet X’FF’ se présentant dans le segment à codage entropique, pour
éviter la génération accidentelle de marqueurs dans ce segment.

La restriction de A à la plage 0,75 ≤ A < 1,5 permet d'utiliser une approximation arithmétique simple pour la subdivision
de l'intervalle de probabilité. Normalement, si l'estimation courante de la probabilité du LPS pour l'indice de contexte S
est Qe(S), le calcul précis des intervalles nécessiterait:

Qe(S) × A Sous-intervalle de probabilité du LPS;


A – (Qe(S) × A) Sous-intervalle de probabilité du MPS.

Comme la valeur décimale de A est de l'ordre de l'unité, ces équations peuvent être approximées par:

Qe(S) Sous-intervalle de probabilité du LPS;


A – Qe(S) Sous-intervalle de probabilité du MPS.

Chaque fois que le LPS est codé, la valeur de A – Qe(S) est ajoutée au registre de code, et l'intervalle de probabilité est
ramené à Qe(S). Chaque fois que le MPS est codé, le registre de code est laissé inchangé et l'intervalle de probabilité est
ramené à A – Qe(S). La plage de précision requise pour A est alors rétablie, si nécessaire, par renormalisation de A et C.

Rec. T.81 du CCITT (1992 F) 59


ISO/CEI 10918-1 : 1993(F)

Avec la procédure décrite ci-dessus, les approximations du processus de subdivision des intervalles de probabilité
peuvent parfois rendre le sous-intervalle du LPS plus grand que le sous-intervalle du MPS. Par exemple, si la valeur de
Qe(S) est 0,5 et que A a la valeur minimale permise 0,75, le calcul par approximation donne 1/3 de l'intervalle de
probabilité pour le MPS et 2/3 pour le LPS. Pour éviter cette inversion de tailles des intervalles, une permutation
conditionnelle est opérée. L'intervalle de probabilité est subdivisé en appliquant l'approximation simple, mais les
affectations des sous-intervalles au MPS et au LPS sont permutées chaque fois que le sous-intervalle du LPS est plus
grand que le sous-intervalle du MPS. Cette permutation conditionnelle MPS/LPS ne peut avoir lieu que lorsqu'une
renormalisation est nécessaire.

Chaque décision binaire se réfère à un contexte. Un contexte est l'ensemble des décisions de codage antérieures qui
déterminent l'indice de contexte, S, en identifiant l'estimation de probabilité utilisée dans le codage de la décision.

Chaque fois qu'une renormalisation a lieu, une procédure d'estimation de probabilité est appelée pour déterminer une
nouvelle estimation de probabilité pour le contexte en cours de codage. Aucun comptage explicite des symboles n'est
nécessaire pour cette estimation. Les probabilités relatives de renormalisation après codage du LPS et du MPS donnent,
au moyen d'une machine à états d'estimation de probabilité basée sur une table, une estimation directe des probabilités.

D.1.3 Conventions relatives au registre de code du codeur

Les organigrammes de la présente annexe supposent les structures de registre suivantes pour le codeur comme montré
dans le Tableau D.2.

Tableau D.2 – Conventions relatives au registre du codeur

MSB LSB

Registre C 0000cbbb, bbbbbsss, xxxxxxxx, xxxxxxxx

Registre A 00000000, 00000000, aaaaaaaa, aaaaaaaa

Les bits «a» sont les bits fractionnels du registre A (la valeur de l'intervalle de probabilité courant), les bits «x» sont les
bits fractionnels du registre de code. Les bits «s» sont des bits de bourrage optionnels, servant à limiter la retenue; les
bits «b» indiquent les positions binaires auxquelles les octets complets de données sont retirés du registre C. Le bit «c»
est un bit de retenue. Sauf au moment de l'initialisation, le bit 15 du registre A est toujours mis à 1 et le bit 16 toujours
à 0 (le LSB est le bit 0).

Ces conventions relatives au registre de code sont un exemple de réalisation possible. Toutes les conventions relatives à
ce registre, permettant la résolution de la retenue dans le codeur et produisant le même segment à codage entropique,
peuvent être utilisées. Le traitement de la retenue et le bourrage d'octets suivant X’FF’ seront décrits plus loin dans cette
annexe.

D.1.4 Procédures Code_1(S) et Code_0(S)

Lors du codage d'une décision binaire donnée, deux décisions sont possibles: codage d'une décision 1 ou codage d'une
décision 0. Les procédures Code_1(S) et Code_0(S) sont représentées Figures D.1 et D.2. Les procédures Code_1(S) et
Code_0(S) utilisent des estimations de probabilité d'indice de contexte S. L'indice de contexte S, déterminé par le modèle
statistique, est en général une fonction des décisions de codage antérieures; chaque valeur de S identifie une estimation
de probabilité conditionnelle particulière utilisée pour le codage de la décision binaire.

L'indice de contexte S sélectionne une position de stockage qui contient Index(S), un registre d'index pointant vers les
tables qui constituent la machine à états d'estimation de probabilité. Lors du codage d'une décision binaire, le symbole
codé est le MPS ou le LPS. Des informations additionnelles sont donc stockées pour chaque indice de contexte,
précisant la signification attribuée au symbole le plus probable MPS(S).

Pour simplifier, les organigrammes de ce paragraphe supposent que la zone de stockage du contexte pour chaque indice
de contexte S comporte un champ de stockage additionnel pour Qe(S), contenant la valeur de Qe(Index(S)). Si seules les
valeurs de Index(S) et MPS(S) sont stockées, toutes les références à Qe(S) doivent être remplacées par Qe(Index(S)).

60 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Code_1(S)

Non Oui
MPS(S) = 1?

Code_LPS(S) Code_MPS(S)

TISO1800-93/d039

Fait

Figure D.1 – Procédure Code_1(S)

Code_0(S)

Non Oui
MSP(S) = 0?

Code_LPS(S) Code_MPS(S)

TISO1030-93/d040

Fait

Figure D.2 – Procédure Code_0(S)

La procédure Code_LPS(S) consiste normalement à additionner le sous-intervalle du MPS, A – Qe(S), à la séquence


binaire et à mettre l'intervalle à l'échelle du sous-intervalle Qe(S). Elle est toujours suivie des procédures d'obtention
d'une nouvelle estimation de probabilité du LPS (Estimate_Qe(S)_after_LPS) et de renormalisation (Renorm_e) (voir la
Figure D.3).

Toutefois, si le sous-intervalle du LPS est plus grand que le sous-intervalle du MPS, la permutation conditionnelle
MPS/LPS a lieu et c'est le sous-intervalle MPS qui est codé.

Rec. T.81 du CCITT (1992 F) 61


ISO/CEI 10918-1 : 1993(F)

La procédure Code_MPS(S) réduit normalement la taille de l'intervalle de probabilité au sous-intervalle MPS. Toutefois,
si le sous-intervalle du LPS est plus grand que le sous-intervalle du MPS, la permutation conditionnelle a lieu et c'est le
sous-intervalle LPS qui est codé. A noter que cette permutation conditionnelle ne peut être effectuée sans que les
procédures d'obtention d'une nouvelle estimation de probabilité du LPS (Estimate_Qe(S)_after_MPS) et de
renormalisation (Renorm_e) ne soient requises après le codage du symbole (voir la Figure D.4).

Code_LPS(S)

A = A – Qe(S)

Oui
A < Qe(S)?

Non

C=C+A
A = Qe(S)

Estimate_Qe(S)_after_LPS
Renorm_e

Fait

TISO1040-93/d041

Figure D.3 – Procédure Code_LPS(S) avec permutation conditionnelle MPS/LPS

D.1.5 Estimation de probabilité dans le codeur

D.1.5.1 Machine à états d'estimation de probabilité

La machine à états d'estimation de probabilité opère en plusieurs séquences d'estimation de probabilité. Ces séquences
sont chaînées en sorte de fournir des estimations de probabilité fondées sur des comptages approximatifs des symboles
dérivés de la renormalisation effectuée dans le codeur arithmétique. Certaines de ces séquences sont utilisées durant les
phases initiales «d'apprentissage» de l'estimation de probabilité; les autres sont utilisées pour les phases d'estimation
«régulières».

A chaque entrée de la machine à états d'estimation de probabilité, est affecté un indice, et à chaque indice sont associées
une valeur Qe et deux valeurs Next_Index. La valeur Next_Index_MPS donne l'indice de la nouvelle estimation de
probabilité après une renormalisation MPS, la valeur Next_Index_LPS donne l'indice de la nouvelle estimation de
probabilité après une renormalisation LPS. A noter que l'indice de la machine à états et la signification attribuée au MPS
sont conservés pour chaque indice de contexte S. La signification attribuée au MPS est changée chaque fois que l'entrée
de Switch_MPS est un.

62 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Code_MPS(S)

A = A – Qe(S)

Non Oui
A < X’8000’?

Non Oui
A < Qe(S)?

C=C+A
A = Qe(S)

Estimate_Qe(S)_after_MPS
Renorm_e

Fait

TISO1050-93/d042

Figure D.4 – Procédure Code_MPS(S) avec permutation conditionnelle MPS/LPS

La machine à états d'estimation de probabilité est donnée dans le Tableau D.3. L'initialisation du codeur arithmétique se
fait toujours en attribuant au MPS la signification zéro et avec un index Qe zéro, comme défini dans le Tableau D.3.

Les valeurs Qe données dans le Tableau D.3 sont exprimées comme des entiers hexadécimaux. Pour convertir la
représentation entière sur 15 bits de Qe en une probabilité décimale, diviser les valeurs Qe par (4/3) × (X’8000’).

D.1.5.2 Estimation déterminée par la renormalisation

Le changement d'état dans le Tableau D.3 a uniquement lieu lors de la renormalisation du codeur arithmétique, qui doit
toujours être effectuée après le codage d'un LPS, et chaque fois que le registre d'intervalle de probabilité est inférieur à
X’8000’ (0,75 en notation décimale) après le codage d'un MPS.

Quand la renormalisation du LPS est requise, Next_Index_LPS donne le nouvel indice de l'estimation de probabilité du
LPS. Quand la renormalisation du MPS est requise, Next_Index_MPS donne le nouvel indice d'estimation de probabilité
du LPS. Si Switch_MPS est à 1 pour l'ancien indice, la signification attribuée au MPS doit être changée (ainsi que celle
attribuée au LPS).

Rec. T.81 du CCITT (1992 F) 63


ISO/CEI 10918-1 : 1993(F)

Tableau D.3 – Valeurs de Qe et machine à états d'estimation de probabilité

Next_ Index Next_ Index


Index Qe Switch Index Qe Switch

_Value _LPS _MPS _MPS _Value _LPS _MPS _MPS

10 X’5A1D’ 11 11 1 157 X’01A4’ 155 158 0


11 X’2586’ 14 12 0 158 X’0160’ 156 159 0
12 X’1114’ 16 13 0 159 X’0125’ 157 160 0
13 X’080B’ 18 14 0 160 X’00F6’ 158 161 0
14 X’03D8’ 20 15 0 161 X’00CB’ 159 162 0
15 X’01DA’ 23 16 0 162 X’00AB’ 161 163 0
16 X’00E5’ 25 17 0 163 X’008F’ 161 132 0
17 X’006F’ 28 18 0 164 X’5B12’ 165 165 1
18 X’0036’ 30 19 0 165 X’4D04’ 180 166 0
19 X’001A’ 33 10 0 166 X’412C’ 181 167 0
10 X’000D’ 35 11 0 167 X’37D8’ 182 168 0
11 X’0006’ 19 12 0 168 X’2FE8’ 183 169 0
12 X’0003’ 10 13 0 169 X’293C’ 184 170 0
13 X’0001’ 12 13 0 170 X’2379’ 186 171 0
14 X’5A7F’ 15 15 1 171 X’1EDF’ 187 172 0
15 X’3F25’ 36 16 0 172 X’1AA9’ 187 173 0
16 X’2CF2’ 38 17 0 173 X’174E’ 172 174 0
17 X’207C’ 39 18 0 174 X’1424’ 172 175 0
18 X’17B9’ 40 19 0 175 X’119C’ 174 176 0
19 X’1182’ 42 20 0 176 X’0F6B’ 174 177 0
20 X’0CEF’ 43 21 0 177 X’0D51’ 175 178 0
21 X’09A1’ 45 22 0 178 X’0BB6’ 177 179 0
22 X’072F’ 46 23 0 179 X’0A40’ 177 148 0
23 X’055C’ 48 24 0 180 X’5832’ 180 181 1
24 X’0406’ 49 25 0 181 X’4D1C’ 188 182 0
25 X’0303’ 51 26 0 182 X’438E’ 189 183 0
26 X’0240’ 52 27 0 183 X’3BDD’ 190 184 0
27 X’01B1’ 54 28 0 184 X’34EE’ 191 185 0
28 X’0144’ 56 29 0 185 X’2EAE’ 192 186 0
29 X’00F5’ 57 30 0 186 X’299A’ 193 187 0
30 X’00B7’ 59 31 0 187 X’2516’ 186 171 0
31 X’008A’ 60 32 0 188 X’5570’ 188 189 1
32 X’0068’ 62 33 0 189 X’4CA9’ 195 190 0
33 X’004E’ 63 34 0 190 X’44D9’ 196 191 0
34 X’003B’ 32 35 0 191 X’3E22’ 197 192 0
35 X’002C’ 33 19 0 192 X’3824’ 199 193 0
36 X’5AE1’ 37 37 1 193 X’32B4’ 199 194 0
37 X’484C’ 64 38 0 194 X’2E17’ 193 186 0
38 X’3A0D’ 65 39 0 195 X’56A8’ 195 196 1
39 X’2EF1’ 67 40 0 196 X’4F46’ 101 197 0
40 X’261F’ 68 41 0 197 X’47E5’ 102 198 0
41 X’1F33’ 69 42 0 198 X’41CF’ 103 199 0
42 X’19A8’ 70 43 0 199 X’3C3D’ 104 100 0
43 X’1518’ 72 44 0 100 X’375E’ 199 193 0
44 X’1177’ 73 45 0 101 X’5231’ 105 102 0
45 X’0E74’ 74 46 0 102 X’4C0F’ 106 103 0
46 X’0BFB’ 75 47 0 103 X’4639’ 107 104 0
47 X’09F8’ 77 48 0 104 X’415E’ 103 199 0
48 X’0861’ 78 49 0 105 X’5627’ 105 106 1
49 X’0706’ 79 50 0 106 X’50E7’ 108 107 0
50 X’05CD’ 48 51 0 107 X’4B85’ 109 103 0
51 X’04DE’ 50 52 0 108 X’5597’ 110 109 0
52 X’040F’ 50 53 0 109 X’504F’ 111 107 0
53 X’0363’ 51 54 0 110 X’5A10’ 110 111 1
54 X’02D4’ 52 55 0 111 X’5522’ 112 109 0
55 X’025C’ 53 56 0 112 X’59EB’ 112 111 1
56 X’01F8’ 54 57 0

64 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

D.1.5.3 Estimation après la renormalisation du MPS

La procédure d'estimation de la probabilité de la branche de renormalisation du MPS est donnée Figure D.5. Index(S) est
la partie des informations stockées pour l'indice de contexte S. La nouvelle valeur d'Index(S) est obtenue dans le
Tableau D.3, dans la colonne Next_Index_MPS, car c'est le nouvel indice après renormalisation du MPS. Ce nouvel
indice est stocké comme nouvelle valeur d'Index(S) dans le registre de stockage de contexte à l'indice de contexte S, et la
valeur de Qe à ce nouvel Index(S) devient le nouveau Qe(S). MPS(S) ne change pas.

Estimate_Qe(S)_
after_MPS

I = Index(S)
I = Next_Index_MPS(I)
Index(S) = I
Qe(S) = Qe_Value(I)

Fait

TISO1060-93/d043

Figure D.5 – Estimation de probabilité de la branche


de renormalisation du MPS

D.1.5.4 Estimation après renormalisation du LPS

La procédure d'estimation de la probabilité de la branche de renormalisation du LPS est représentée Figure D.6. Celle-ci
est similaire à celle de la Figure D.5, sauf que quand Switch_MPS(I) est égal à 1, la signification attribuée au MPS(S)
doit être changée.

D.1.6 Renormalisation dans le codeur

La procédure Renorm_e de renormalisation dans le codeur est représentée Figure D.7. Le registre d'intervalle de
probabilité A et le registre de code C sont décalés, bit par bit. Le nombre de décalages est compté par le compteur CT;
quand CT est à zéro, un octet de données comprimées est retiré de C par la procédure Byte_out et CT est remis à 8. La
renormalisation continue jusqu'à ce que A ne soit pas plus grand que X’8000’.

La procédure Byte_out utilisée dans Renorm_e est représentée Figure D.8. Cette procédure opère un bourrage d'octets
pour empêcher la génération accidentelle de marqueurs par des procédures de codage arithmétique. Elle inclut un
exemple de procédure de résolution de retenue. Pour la simplicité de l'exposé, le tampon contenant le segment à codage
entropique est supposé assez grand pour contenir le segment complet.

Sur la Figure D.8, BP est le pointeur du segment à codage entropique, et B l'octet de données comprimées vers lequel
pointe BP. T, dans Byte_out, est une variable temporaire utilisée pour retenir l'octet de sortie et le bit de retenue. ST est
le compteur de pile utilisé pour compter les octets de sortie X’FF’ jusqu'à ce que toute retenue se propageant le long de
la séquence X’FF’ ait été résolue. La valeur de ST dépasse rarement trois. Toutefois, comme la limite supérieure de la
valeur de ST est limitée uniquement par la taille totale du segment à codage entropique, une précision de 32 bits est
recommandée pour ST.

Comme des grandes valeurs de ST représentent une sortie latente de données comprimées, la procédure suivante peut
être nécessaire dans les systèmes de codage synchrone à haute vitesse, pour traiter la rafale de données de sortie émise
lors de la résolution de la retenue.

Rec. T.81 du CCITT (1992 F) 65


ISO/CEI 10918-1 : 1993(F)

Estimate_Qe(S)_
after_LPS

I = Index(S)

Non Oui
Switch_MPS(I) = 1?

MPS(S) = 1 – MPS(S)

I = Next_Index_LPS(I)
Index(S) = I
Qe(S) = Qe_Value(I)

Fait

TISO1070-93/d044

Figure D.6 – Estimation de probabilité de la branche


de renormalisation du LPS

Quand le compteur de pile atteint une limite supérieure déterminée par la capacité du canal de sortie, la pile est vidée et
les octets X’FF’ empilés (ainsi que les octets 0 bourrés) sont ajoutés aux données comprimées, avant résolution de la
retenue. Si une retenue est alors générée, elle est ajoutée au zéro bourré final, convertissant ainsi la séquence finale
X’FF00’ en un marqueur privé temporaire X’FF01’. Le segment à codage entropique doit alors donner lieu à un post-
traitement de résolution de retenue afin d'éliminer le code marqueur temporaire. Dans une limite raisonnable des valeurs
de ST, ce post-traitement est très peu probable.

Dans la procédure de la Figure D.8, le décalage du registre de code de 19 bits cale les bits de sortie sur les bits de plus
faible poids de T. Le premier test détermine alors si une retenue à été générée. Si oui, elle doit être ajoutée à l'octet de
sortie précédent avant d'avancer le segment pointeur BP. La procédure «Stuff_0» bourre un octet 0 chaque fois que
l'addition de la retenue aux données se trouvant déjà dans les segments à codage entropique crée un octet X’FF’. Tous
les octets de sortie empilés – convertis en octets nuls par la retenue – sont alors placés dans le segment à codage
entropique. A noter que lors du transfert ultérieur de l'octet de sortie de T dans le segment à codage entropique (à
l'octet B), un éventuel bit de retenue positionné à 1, sera ignoré.

Si aucune retenue n'a été générée, un test est effectué pour déterminer si l'octet de sortie est X’FF’. Si oui, le compteur
de pile ST est incrémenté, car la sortie doit être retardée jusqu'à la résolution de la retenue. Si non, la retenue a été
résolue et tous les octets X’FF’ empilés doivent être placés dans le segment à codage entropique. A noter qu'un octet nul
est bourré après chaque chaque X’FF’.

Les procédures utilisées par Byte_out sont définies aux Figures D.9 à D.11.

66 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Renorm_e

A = SLL A 1
C = SLL C 1
CT = CT – 1

Non
CT = 0?

Oui

Byte_out

CT = 8

Oui
A < X’8000’?

Non

Fait

TISO1080-93/d045

Figure D.7 – Procédure de renormalisation par le codeur

Rec. T.81 du CCITT (1992 F) 67


ISO/CEI 10918-1 : 1993(F)

Byte_out

T = SRL C 19

Oui Non
B=B+1 T > X’FF’?

Oui
Stuff_0 T = X’FF’?

Non

Output_stacked_ Output_stacked_
ST = ST + 1
zeros X’FF’s

BP = BP + 1 BP = BP + 1
B=T B=T

C = C AND X’7FFFF’

Fait

TISO1090-93/d046

Figure D.8 – Procédure Byte_out du codeur

68 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Output_stacked_
zeros

Oui
ST = 0?

Non

BP = BP + 1
B=0 Fait
ST = ST – 1

TISO1810-93/d047

Figure D.9 – Procédure Output_stacked_zeros du codeur

Output_stacked_
X’FF’s

Oui
ST = 0?

Non

BP = BP + 1
B = X’FF’ Fait
BP = BP + 1
B=0
ST = ST – 1 TISO1100-93/d048

Figure D.10 – Procédure Output_stacked_X’FF’s du codeur

Rec. T.81 du CCITT (1992 F) 69


ISO/CEI 10918-1 : 1993(F)

Stuff_0

Non
B = X’FF’?

Oui

BP = BP + 1
B=0

Fait

TISO1110-93/d049

Figure D.11 – Procédure Stuff_0 du codeur

D.1.7 Initialisation du codeur

La procédure Initenc est utilisée pour lancer le codeur arithmétique. Les étapes de base sont représentées Figure D.12.

Initenc

Initialiser
les zones statistiques
ST = 0
A = X’10000’
A = (voir Note ci-dessous)
C=0
CT = 11
BP = BPST – 1

Fait

TISO1120-93/d050

Figure D.12 – Initialisation du codeur

70 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Les tables d'estimation de probabilité sont définies par le Tableau D.3. Les contextes statistiques sont initialisés avec une
signification du MPS 0 et un indice Qe 0, comme défini dans le Tableau D.3. Le compteur de pile (ST) est mis à zéro, le
registre de code (C) est mis à zéro et le registre d'intervalle est mis à X’10000’. Le compteur (CT) est mis à 11, reflétant
le fait que quand A est initialisé à X’10000’, 3 bits d'espacement plus 8 bits de sortie de C doivent être remplis avant de
retirer le premier octet. A noter que BP est initialisé pour pointer vers l'octet précédant le segment à codage entropique
(qui est un BPST). A noter également que les zones statistiques sont initialisées pour toutes les valeurs de l'indice de
contexte S à MPS(S) = 0 et Index(S) = 0.
NOTE – Bien que l'intervalle de probabilité soit initialisé à X’10000’ dans Initenc et Initdec, la précision du registre
d'intervalle de probabilité peut encore être limitée à 16 bits. Quand la précision du registre d'intervalle est de 16 bits, l'intervalle est
initialisé à zéro.

D.1.8 Terminaison du codage

La procédure Flush est utilisée pour terminer les procédures de codage arithmétique et préparer le segment à codage
entropique à la concaténation du préfixe X’FF’ au marqueur qui suit les données à codage arithmétique. La Figure D.13
représente cette procédure de bourrage. La première étape de la procédure est de mettre le plus grand nombre possible de
bits de faible poids du registre de code à zéro, sans pointer hors de l'intervalle final. Ensuite, l'octet de sortie est calé à
gauche par un décalage de CT bits; «Byte_out» est ensuite utilisé pour retirer un octet de C. C est alors décalé à gauche
de 8 bits pour caler le second octet de sortie, et «Byte_out» est utilisé une seconde fois. On a ainsi l'assurance que les
bits de faible poids de C sont à zéro, et que ces bits zéro de fin ne seront pas écrits dans le segment à codage entropique.

Flush

Clear_final_bits

C = SLL C CT

Byte_out

C = SLL C 8

Byte_out
Discard_final_zeros

Fait

TISO1130-93/d051

Figure D.13 – Procédure Flush

Rec. T.81 du CCITT (1992 F) 71


ISO/CEI 10918-1 : 1993(F)

Tous les octets zéro de fin déjà écrits dans le segment à codage entropique et non précédés d'un X’FF’ peuvent
(facultativement) être supprimés par la procédure Discard_final_zeros. Les octets zéro bourrés ne doivent pas être
supprimés.

Les segments à codage entropique sont toujours suivis d'un marqueur. Pour cette raison, les bits zéro de fin, nécessaires
pour compléter le décodage, ne doivent pas être inclus dans le segment à codage entropique. Au contraire, quand le
décodeur rencontre un marqueur, des bits zéro doivent être fournis à la procédure de décodage, jusqu'à la fin du
décodage. Cette convention garantit que lorsqu'un marqueur DNL est utilisé, le décodeur l'interceptera à temps pour
terminer correctement la procédure de décodage.

Clear_final_bits

T=C+A–1
T = T AND
T = X’FFFF0000’

Non
T < C?

Oui

T = T + X’8000’

C=T

Fait

TISO1140-93/d052

Figure D.14 – Procédure Clear_final_bits de Flush

72 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Discard_final_zeros

Oui
BP < BPST?

Non

Oui
BP = BP – 1 B = 0?

Non

Oui
BP = BP + 1 B = X’FF’?

Non

Fait

TISO1150-93/d053

Figure D.15 – ProcédureDiscard_final_zeros de Flush

D.2 Procédures de décodage arithmétique

Deux procédures sont utilisées pour le décodage arithmétique (voir le Tableau D.4).

La procédure «Decode(S)» décode la décision binaire et renvoie à une valeur 0 ou 1. Elle est l'inverse des procédures
«Code_0(S)» et «Code_1(S)» décrites en D.1. «Initdec» initialise le décodeur entropique en codage arithmétique.

Tableau D.4 – Procédures de décodage arithmétique binaire

Procédure Objet

Decode(S) Décode une décision binaire pour l'indice de contexte S

Initdec Initialise le décodeur

Rec. T.81 du CCITT (1992 F) 73


ISO/CEI 10918-1 : 1993(F)

D.2.1 Principes du décodage arithmétique binaire

La subdivision des intervalles de probabilité et l'ordre des sous-intervalles, définis pour les procédures de codage
arithmétique, s'appliquent aux procédures de décodage arithmétique.

Le contenu du registre pointe toujours vers l'intérieur de l'intervalle de probabilité courant: le processus de décodage
consiste à déterminer récursivement, pour chaque décision, quel sous-intervalle est pointé par le contenu du registre de
code, en utilisant le même processus de subdivision de l'intervalle de probabilité que dans le codeur. A chaque décision
décodée, tout intervalle ajouté par le codeur est soustrait du contenu du registre par le décodeur. Ainsi, le registre de
code du décodeur est un pointeur relatif vers l'intervalle de probabilité courant, par rapport à la base de cet intervalle.

Si la taille du sous-intervalle affecté au LPS est supérieure à celle du sous-intervalle affecté au MPS, le codeur appelle la
procédure de permutation conditionnelle. Quand les tailles des intervalles sont interverties dans le décodeur, la
signification du symbole décodé doit être changée (0 remplace 1 et vice versa).

D.2.2 Conventions et approximations de décodage

Les approximations et l'arithmétique entière définies pour la subdivision de l'intervalle de probabilité dans le codeur
doivent également être utilisées dans le décodeur. Toutefois, chaque fois que le codeur ajoute quelque chose au registre
de code, le décodeur le soustrait de ce registre.

D.2.3 Conventions relatives au registre de code du décodeur

L'organigramme donné dans ce paragraphe suppose les structures de registre pour le décodeur comme montré dans le
Tableau D.5.

Tableau D.5 – Conventions relatives au registre du décodeur

MSB LSB

Registre Cx xxxxxxxx, xxxxxxxx

C-low bbbbbbbb, 00000000

Registre A aaaaaaaa, aaaaaaaa

Cx et C-low peuvent être considérés comme formant un registre C unique de 32 bits, car la renormalisation de C décale
d'un bit les nouvelles données du bit 15 de C-low vers bit 0 de Cx. Toutefois, les comparaisons opérées pour le décodage
utilisent Cx seul. Les nouvelles données sont insérées dans les bits «b» de C-low, octet par octet.

NOTE – Les comparaisons opérées dans les diverses procédures de ce paragraphe supposent des précisions supérieures à
16 bits. Les comparaisons logiques peuvent être effectuées avec des réalisations d'une précision de 16 bits.

D.2.4 La procédure Decode

Le décodeur décode une décision binaire à la fois. Après décodage de la décision, le décodeur soustrait du registre de
code toute quantité que le codeur y a ajoutée. La quantité laissée dans le registre de code est le décalage entre la base de
l'intervalle de probabilité courant et le sous-intervalle affecté aux décisions binaires non encore décodées. Dans le
premier test de la procédure Decode, représenté Figure D.16, le contenu du registre de code est comparé à la taille du
sous-intervalle MPS. Sous réserve de permutation conditionnelle, ce test détermine si le décodage concerne le MPS ou le
LPS pour l'indice de contexte S. A noter que le LPS pour l'indice de contexte S est donné par 1 – MPS(S).

74 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Quand une renormalisation s'impose, la permutation conditionnelle MPS/LPS peut également être nécessaire. Pour la
branche LPS, la procédure de permutation conditionnelle est donnée Figure D.17. A noter que l'estimation de probabilité
dans le décodeur est identique à l'estimation de probabilité dans le codeur (Figures D.5 et D.6).

Decode(S)

A = A – Qe(S)

Oui Non
Cx < A?

Non
A < X’8000’?

Oui

Di=iCond_MPS_exchange(S) D = MPS(S) D = Cond_LPS_exchange(S)


Renorm_d Renorm_d

TISO1160-93/d054

Renvoyer D

Figure D.16 – Procédure Decode(S)

Pour la branche MPS du décodeur, la procédure de permutation conditionnelle est représentée Figure D.18.

Rec. T.81 du CCITT (1992 F) 75


ISO/CEI 10918-1 : 1993(F)

Cond_LPS_
exchange(S)

Oui Non
A < Qe(S)?

D = MPS(S) D = 1 – MPS(S)
Cx = Cx – A Cx = Cx – A
A = Qe(S) A = Qe(S)

Estimate_Qe(S)_ Estimate_Qe(S)_
after_MPS after_LPS

Renvoyer D

TISO1170-93/d055

Figure D.17 – Procédure de permutation conditionnelle


dans la branche LPS du décodeur

Cond_MPS_
exchange(S)

Oui Non
A < Qe(S)?

D = 1 – MPS(S) D = MPS(S)

Estimate_Qe(S)_ Estimate_Qe(S)_
after_LPS after_MPS

Renvoyer D

TISO1180-93/d056

Figure D.18 – Procédure de permutation conditionnelle


dans la branche MPS du décodeur

76 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

D.2.5 Estimation de probabilité dans le décodeur

La procédure définie pour obtenir une nouvelle estimation de probabilité dans le codeur est également utilisée dans le
décodeur.

D.2.6 Renormalisation dans le décodeur

La procédure Renorm_d de renormalisation dans le décodeur est représentée Figure D.19. CT est un compteur qui garde
trace du nombre de bits comprimés dans la section C-low du registre C. Quand CT est à zéro, un nouvel octet est inséré
dans C-low par la procédure Byte_in et CT est remis à 8.

Le registre d'intervalle de probabilité A et le registre de code C sont décalés, bit par bit, jusqu'à ce que A ne soit pas plus
grand que X’8000’.

Renorm_d

Non
CT = 0?

Oui

Byte_in

CT = 8

A = SLL A 1
C = SLL C 1
CT = CT – 1

Oui
A < X’8000’?

Non

Fait

TISO1190-93/d057

Figure D.19 – Procédure de renormalisation dans le décodeur

Rec. T.81 du CCITT (1992 F) 77


ISO/CEI 10918-1 : 1993(F)

La procédure Byte_in utilisée dans Renorm_d est représentée Figure D.20. Cette procédure prélève un octet de données,
en compensation de l'octet zéro bourré après tout octet X’FF’. Elle détecte également le marqueur qui doit suivre le
segment à codage entropique. Le registre C de cette procédure est la concaténation des registres Cx et C-low. Pour
simplifier l'exposé, le tampon contenant le segment à codage entropique est supposé assez grand pour contenir le
segment entier.

B est l'octet vers lequel pointe le pointeur de segment à codage entropique BP. BP est incrémenté en premier. Si la
nouvelle valeur de B n'est pas un X’FF’, elle est insérée dans les 8 bits de plus fort poids de C-low.

Byte_in

BP = BP + 1

Oui Non
B = X’FF’?

Unstuff_0 C = C + SLL B 8

Fait

TISO1200-93/d058

Figure D.20 – Procédure Byte_in dans le décodeur

78 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

La procédure Unstuff_0 est indiquée Figure D.21. Si la nouvelle valeur de B est X’FF’, BP est incrémenté pour pointer
vers l'octet suivant. Un test détermine si ce B suivant est nul. Si oui, B contient un octet bourré qui doit être sauté. Le B
nul est ignoré et la valeur de B X’FF’ qui le précède est insérée dans le registre C.

Si la valeur de B suivant un octet X’FF’ n'est pas nulle, un marqueur a été détecté. Ce marqueur est interprété comme
requis et le pointeur vers le segment à codage entropique est ajusté («Adjust BP» sur la Figure D.21) en sorte que des
octets nuls soient entrés dans le décodeur jusqu'à la fin du décodage. Une façon de le réaliser est de pointer BP vers
l'octet précédant le marqueur qui suit le segment à codage entropique.

Unstuff_0

BP = BP + 1

Oui Non
B = 0?

Interpret_marker
C = C OR X’FF00’
Adjust BP

Fait

TISO1210-93/d059

Figure D.21 – Procédure Unstuff_0 dans le décodeur

Rec. T.81 du CCITT (1992 F) 79


ISO/CEI 10918-1 : 1993(F)

D.2.7 Intialisation du décodeur

La procédure Initdec est utilisée pour lancer le décodeur arithmétique. Les étapes de base sont représentées Figure D.22

Initdec

Initialiser zones statistiques


BP = BPST – 1
A = X’0000’
A = (voir Note ci-après)
C=0

Byte_in

C = SLL C 8

Byte_in

C = SLL C 8
CT = 0

Fait

TISO1220-93/d060

Figure D.22 – Initialisation du décodeur

Les tables d'estimation sont définies par le Tableau D.3. Les zones statistiques sont initialisées en attribuant une
signification au MPS de 0 et avec un indice Qe 0, comme défini dans le Tableau D.3. BP, le pointeur vers le segment à
codage entropique, est alors initialisé pour pointer vers l'octet précédant le début du segment à codage entropique (à
BPST), et le registre d'intervalle est mis à la même valeur initiale que dans le codeur. Le premier octet des données
comprimées est prélevé et décalé dans Cx. Le second octet est ensuite prélevé et décalé dans Cx. Le compteur est mis à
zéro, en sorte qu'un nouvel octet de données soit prélevé par Renorm_d.
NOTE – Bien que l'intervalle de probabilité soit initialisé à X’10000’ dans Initenc et Initdec, la précision du registre
d'intervalle de probabilité peut encore être limitée à 16 bits. Quand la précision du registre d'intervalle est 16 bits, l'intervalle est
initialisé à zéro.

D.3 Ordre des bits à l'intérieur des octets

Le segment à codage entropique-à codage arithmétique est un entier de longueur variable. Donc, l'ordre des octets et
l'ordre des bits à l'intérieur des octets sont les mêmes que pour les paramètres (voir B.1.1.1).

80 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe E

Procédures de contrôle du codeur et du décodeur


(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)

La présente annexe décrit les procédures de contrôle du codeur et du décodeur, pour les modes de fonctionnement
séquentiels, progressifs et sans perte.

Les procédures de contrôle du codage et du décodage pour les processus hiérarchiques sont spécifiées dans l'Annexe J.

NOTES

1 Dans la présente Spécification, il n'est stipulé aucune obligation pour un codeur ou un décodeur quant à la mise en
œuvre des procédures exactement de la façon spécifiée par les organigrammes de cette annexe. Il est seulement nécessaire qu'un
codeur ou un décodeur mette en œuvre la fonction spécifiée dans la présente annexe. Le seul critère à considérer, pour un codeur ou
un décodeur, en matière de conformité à la présente Spécification, est qu'il satisfasse les conditions données à l'article 6 (pour les
codeurs) ou à l'article 7 (pour les décodeurs), telles que déterminées par les tests de conformité spécifiés dans la Partie 2.

2 La présente annexe ne décrit pas les procédures de préparation spécifiques aux réalisations, éventuellement
nécessaires.

E.1 Procédures de contrôle du codeur

E.1.1 Procédure de contrôle du codage d'une image

La procédure de contrôle du codage d'une image est représentée Figure E.1

Encode_image

Accoler marqueur SOI

Encode_frame

Accoler marqueur EOI

Fait

TISO1230-93/d061

Figure E.1 – Procédure de contrôle du codage d'une image

Rec. T.81 du CCITT (1992 F) 81


ISO/CEI 10918-1 : 1993(F)

E.1.2 Procédure de contrôle du codage d'une trame

Dans tous les cas où des marqueurs sont accolés aux données comprimées, des octets de remplissage optionnels X’FF’
peuvent précéder ces marqueurs.

La procédure de contrôle du codage d'une trame porte sur les balayages de cette trame. L'en-tête de trame est d'abord
accolé, puis les balayages sont codés. Des spécifications de tables et d'autres segments marqueurs peuvent précéder le
marqueur SOFn, comme indiqué par [tables/divers] sur la Figure E.2.

La Figure E.2 représente la procédure de contrôle de trame du processus de codage.

Encode_frame

[Accoler tables/divers]
Accoler marqueur SOFn et
reste d'en-tête de trame

Encode_scan

Oui [Accoler segment


1 er balayage? DNL]

Non

Oui
Autres balayages?

Non

Fait

TISO1240-93/d062

Figure E.2 – Procédure de contrôle du codage d'une trame

E.1.3 Procédure de contrôle du codage d'un balayage

Un balayage consiste en un passage unique au travers des données de chaque composante du balayage. Des
spécifications de tables et d'autres segments marqueurs peuvent précéder le marqueur SOS. Si plusieurs composantes
sont codées dans le balayage, les données sont entrelacées. Si la reprise est activée, les données sont segmentées en
intervalles de reprise. Si la reprise est activée, un marqueur RSTm est placé dans les données codées, entre les intervalles
de reprise. Si la reprise est désactivée, la procédure de contrôle est la même, sauf que le balayage complet contient un
seul intervalle de reprise. Les données d'image comprimées générées par un balayage sont toujours suivies d'un
marqueur, le marqueur EOI ou le marqueur du segment marqueur suivant.

82 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

La Figure E.3 présente la procédure de contrôle de balayage du processus de codage. La boucle se termine quand le
processus de codage a codé le nombre d'intervalles de reprise constituant le balayage. «m» est le compteur modulo 8
associé à l'intervalle de reprise, nécessaire pour l'utilisation du marqueur RSTm. L'arithmétique modulo 8 de ce compteur
est représentée après la procédure «Accoler le marqueur RSTm».

Encode_scan

[Accoler tables/divers]
Accoler le marqueur SOS et le
reste de l'en-tête de balayage
m=0

Encode_restart_
interval

Non
Autres intervalles?

Oui

Accoler
le marqueur RSTm Fait
m = (m + 1) AND 7

TISO1250-93/d063

Figure E.3 – Procédure de contrôle du codage d'un balayage

Rec. T.81 du CCITT (1992 F) 83


ISO/CEI 10918-1 : 1993(F)

E.1.4 Procédure de contrôle du codage de l'intervalle de reprise

La Figure E.4 représente la procédure de contrôle du processus de codage d'un intervalle de reprise. La boucle se termine
soit quand le processus de codage a codé le nombre d'unités codées minimales (MCU) de l'intervalle de reprise, soit
quand il a terminé le balayage de l'image.

Encode_restart_
interval

Reset_encoder

Encode_MCU

Non Prepare_for_marker
Autres MCU?

Oui

Fait

TISO1260-93/d064

Figure E.4 – Procédure de contrôle du codage d'un intervalle de reprise

La procédure Reset_encoder inclut au moins les actions suivantes:

a) si le codage arithmétique est utilisé, initialisation du codeur arithmétique à l'aide de la procédure «Initenc»
décrite en D.1.7;

b) pour les processus basés DCT, mise à zéro de la prédiction DC (PRED) pour toutes les composantes du
balayage (voir F.1.1.5.1);

c) pour les processus sans perte, remise de la prédiction à une valeur par défaut (H.1.1);

d) toutes autres procédures de préparation dépendant de la réalisation, éventuellement nécessaires.

La procédure «Prepare_for_marker» termine le segment à codage entropique:

a) soit en bourrant de bits 1 un segment à codage entropique Huffman pour compléter l'octet final (et, si
nécessaire, en bourrant un octet zéro) (voir F.1.2.3);

b) soit en lançant la procédure «Flush» (voir D.1.8) pour terminer un segment à codage entropique.

NOTE – Le nombre d'unités codées minimales (MCU) de l'intervalle de reprise final doit être ajusté pour correspondre au
nombre de MCU du balayage. Le nombre de MCU est calculé d'après les paramètres de trame et de balayage. (Voir Annexe B.)

84 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

E.1.5 Procédure de contrôle du codage d'une unité codée minimale (MCU)

L'unité codée minimale (MCU) est définie en A.2. Dans une MCU donnée, les unités de données sont codées dans
l'ordre dans lequel elles se présentent dans cette MCU. La procédure de contrôle du codage d'une MCU est représentée
Figure E.5.

Encode_MCU

N=0

N=N+1
Coder unité
de données

Non
N = Nb?

Oui

Fait

TISO1270-93/d065

Figure E.5 – Procédure de contrôle du codage d'une unité codée minimale (MCU)

Sur la Figure E.5, Nb se réfère au nombre d'unités de données de la MCU. L'ordre dans lequel des unités de données se
présentent dans la MCU est défini en A.2. L'unité de données est un bloc 8 × 8 pour les processus basés DCT, et un
échantillon unique pour les processus sans perte.

Les procédures de codage d'une unité de données sont spécifiées dans les Annexes F, G et H.

E.2 Procédures de contrôle du décodeur

E.2.1 Procédure de contrôle du décodage de données d'image comprimées

La Figure E.6 présente la procédure de contrôle du processus de décodage d'une image.

Le contrôle du décodage comprend l'identification de divers marqueurs: le premier doit être le marqueur SOI (début
d'image). La procédure Decoder_setup réinitialise l'intervalle de reprise (Ri = 0) et, si le décodeur a des capacités de
décodage arithmétique, met les tables décisionnelles du codeur arithmétique à leurs valeurs par défaut. (Voir F.1.4.4.1.4
et F.1.4.4.2.1.) Le marqueur suivant est normalement un marqueur SOFn (début de trame); sinon, un des segments
marqueurs indiqués dans le Tableau E.1 a été reçu.

Rec. T.81 du CCITT (1992 F) 85


ISO/CEI 10918-1 : 1993(F)

Decode_image

Non
Marqueur SOI?

Oui

Decoder_setup Erreur

Non Interpréter
Marqueur SOFn?
marqueurs

Oui

Decode_frame

Fait

TISO1280-93/d066

Figure E.6 – Procédure de contrôle du décodage de données d'image comprimées

Tableau E.1 – Marqueurs reconnus par «Interpret markers»

Marqueur Objet

DHT Définition de tables de Huffman

DAC Définition de tables décisionnelles arithmétiques

DQT Définition de tables de quantification

DRI Définition de l'intervalle de reprise

APPn Marqueur défini par l'application

COM Commentaire

A noter que les octets de remplissage optionnels X’FF’ pouvant précéder tout marqueur doivent être éliminés avant
l'interprétation du marqueur présent.

86 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

La logique additionnelle d'interprétation de ces divers marqueurs est contenue dans le pavé «Interpréter marqueurs». Les
marqueurs DHT doivent être interprétés par des processus utilisant le codage de Huffman. Les marqueurs DAC doivent
être interprétés par des processus utilisant le codage arithmétique. Les marqueurs DQT doivent être interprétés par des
processus basés DCT. Les marqueurs DRI doivent être interprétés par tous les décodeurs. Les marqueurs APPn et COM
ne doivent être interprétés que dans la mesure où cette interprétation n'interfère pas avec le décodage.

Par définition, les procédures de «Interpréter marqueurs» laissent le système au marqueur suivant. A noter que si le
marqueur SOI attendu manque au début des données d'image comprimées, une condition d'erreur s'est produite. Les
techniques de détection et de gestion des conditions d'erreur peuvent être aussi élaborées ou aussi simples qu'on le
désire.

E.2.2 Procédure de contrôle du décodage d'une trame

La Figure E.7 montre la procédure de contrôle du décodage d'une trame.

Decode_frame

Interpréter
en-tête de trame

Non Interpréter
Marqueur SOS?
marqueurs

Oui

Decode_scan

Non
Marqueur EOI?

Oui

Fait

TISO1290-93/d067

Figure E.7 – Procédure de contrôle de décodage d'une trame

La boucle est terminée lorsque le marqueur EOI est rencontré à la fin du balayage.

Les marqueurs reconnus par «Interpréter marqueurs» sont indiqués dans le Tableau E.1. Le paragraphe E.2.1 précise
dans quelle mesure les divers marqueurs doivent être interprétés.

Rec. T.81 du CCITT (1992 F) 87


ISO/CEI 10918-1 : 1993(F)

E.2.3 Procédure de contrôle du décodage d'un balayage

La Figure E.8 présente le décodage d'un balayage.

La boucle se termine quand le nombre attendu d'intervalles de reprise a été décodé.

Decode_scan

Interpréter
en-tête de balayage
m=0

Decode_restart_
interval

Non
Autres intervalles?

Oui

Fait

TISO1300-93/d068

Figure E.8 – Procédure de contrôle du décodage d'un balayage

88 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

E.2.4 Procédure de contrôle du décodage de l'intervalle de reprise

La procédure de décodage d'un intervalle de reprise est présentée Figure E.9. La procédure «Reset_decoder» inclut au
moins les actions suivantes:

a) si le codage arithmétique est utilisé, initialisation du codeur arithmétique à l'aide de la procédure «Initdec»
décrite en D.2.7;

b) pour les processus basés DCT, mise à zéro de la prédiction DC (PRED) pour toutes les composantes du
balayage (voir F.2.1.3.1);

c) pour les processus sans perte, remise de la prédiction à une valeur par défaut (H.2.1);

d) toutes autres procédures de préparation dépendant de la réalisation, éventuellement nécessaires.

Decode_restart_
interval

Reset_decoder

Decode_MCU

Non
Autres MCU? Trouver marqueur

Oui

Fait

TISO1310-93/d069

Figure E.9 – Procédure de contrôle du décodage de l'intervalle de reprise

A la fin de l'intervalle de reprise, le marqueur suivant est localisé. Si un incident est détecté lors de la localisation de ce
marqueur, des procédures de traitement d'erreurs peuvent être appelées. Bien que de telles procédures soient
optionnelles, le décodeur doit être capable de reconnaître correctement des marqueurs RST dans les données
comprimées et de se réinitialiser lorsqu'il en rencontre. Le décodeur doit également être capable de reconnaître le
marqueur DNL, de fixer le nombre de lignes défini dans le segment DNL et de terminer la procédure
«Decode_restart_interval».

NOTE – L'intervalle de reprise final peut être plus petit que la taille spécifiée par le segment marqueur DRI, car il ne
contient que le nombre de MCU restant dans le balayage.

Rec. T.81 du CCITT (1992 F) 89


ISO/CEI 10918-1 : 1993(F)

E.2.5 Procédure de contrôle du décodage d'une unité codée minimale (MCU)

La procédure de décodage d'une unité codée minimale (MCU) est présentée Figure E.10.

Sur la Figure E.10, Nb est le nombre d'unités de données d'une MCU.

Les procédures de décodage d'une unité de données sont spécifiées dans les Annexes F, G et H.

Decode_MCU

N=0

N=N+1
Decode_data_unit

Non
N = Nb?

Oui

Fait

TISO1320-93/d070

Figure E.10 – Procédure de contrôle du décodage d'une unité codée minimale (MCU)

90 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe F

Mode de fonctionnement basé DCT séquentiel


(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)
ISO/CEI 10918-1 : 1993(F)
CCITT Rec. T.81 (1992 F)

La présente annexe donne une spécification fonctionnelle des processus de codage suivants du mode de fonctionnement
basé DCT séquentiel:
1) séquentiel de base;
2) séquentiel étendu, codage de Huffman, précision d'échantillon 8 bits;
3) séquentiel étendu, codage arithmétique, précision d'échantillon 8 bits;
4) séquentiel étendu, codage de Huffman, précision d'échantillon 12 bits;
5) séquentiel étendu, codage arithmétique, précision d'échantillon 12 bits.
Pour chacun de ces modes, le processus de codage est spécifié en F.1 et le processus de décodage en F.2. Les
spécifications fonctionnelles sont présentées au moyen d'organigrammes spécifiques aux diverses procédures de ces
processus de codage.
NOTE – Dans la présente Spécificaction, il n'est stipulé aucune obligation pour un codeur ou un décodeur qui réalise un
des processus sus-nommés, quant à la mise en oeuvre par ce codeur ou décodeur des procédures exactement de la façon spécifiée par
les organigrammes de cette annexe. Il est seulement nécessaire qu'un codeur ou un décodeur mette en oeuvre la fonction spécifiée
dans la présente annexe. Le seul critère à considérer, pour un codeur ou un décodeur, en matière de conformité à la présente
spécification, est qu'il satisfasse les conditions données à l'article 6 (pour les codeurs) ou à l'article 7 (pour les décodeurs), telles que
déterminées par les tests de conformité spécifiés dans la Partie 2.

F.1 Processus de codage basés DCT séquentiels


F.1.1 Procédures de contrôle et modèles de codage des processus basés DCT séquentiels

F.1.1.1 Procédures de contrôle des codeurs basés DCT séquentiels


Les procédures de contrôle du codage d'une image et de ses constituants – trame, balayage, intervalle de reprise et MCU
– sont données aux Figures E.1 à E.5. La procédure de codage d'une MCU (Figure E.5) appelle itérativement la
procédure de codage de l'unité de données. Pour les codeurs basés DCT, l'unité de données est ce bloc de 8 × 8
échantillons.

F.1.1.2 Procédure de codage d'une unité de données bloc 8 × 8


Pour les processus basés DCT séquentiels, le codage d'une unité de données bloc 8 × 8 comprend les procédures
suivantes:
a) décalage à gauche, calcul de la DCT directe du bloc 8 × 8 et quantification des coefficients résultants, en
utilisant la destination de table spécifiée dans l'en-tête de trame;
b) codage du coefficient DC du bloc 8 × 8, en utilisant la destination de table DC spécifiée dans l'en-tête de
balayage;
c) codage des coefficients AC du bloc 8 × 8, en utilisant la destination de table AC spécifiée dans l'en-tête de
balayage.

F.1.1.3 Décalage de niveau et DCT directe (FDCT)


La définition mathématique de la FDCT est donnée en A.3.3.
Avant de calculer la FDCT, les données d'entrée subissent un décalage de niveau vers une représentation signée en
complément à deux, comme décrit en A.3.1. Pour une précision d'entrée de 8 bits, le décalage de niveau est réalisé en
soustrayant 128. Pour une précision d'entrée de 12 bits, le décalage de niveau est réalisé en soustrayant 2 048.

F.1.1.4 Quantification de la FDCT


La procédure de quantification uniforme décrite dans l'Annexe A est utilisée pour quantifier les coefficients DCT. Une
des quatre tables de quantification peut être utilisée par le codeur. Aucune table de quantification par défaut n'est définie
dans la présente Spécification, mais des tables de quantification typiques sont données dans l'Annexe K.
Les valeurs des coefficients DCT quantifiés sont des entiers signés en complément à deux, d'une précision de 11 bits
pour une précision d'entrée de 8 bits, et d'une précision de 15 bits pour une précision d'entrée de 12 bits.

CCITT Rec. T.81 (1992 F) 91


ISO/CEI 10918-1 : 1993(F)

F.1.1.5 Modèles de codage des procédures DCT séquentielles


Le tableau bidimensionnel des coefficients DCT quantifiés est réordonné selon une séquence en zigzag comme défini
en A.3.6. Les coefficients de l'ordre en zigzag sont désignés par ZZ(0) à ZZ(63) avec:

ZZ( 0 ) = Sq 00
ZZ(1) = Sq 01
ZZ( 2 ) = Sq 10



ZZ( 63) = Sq 77

Les Sqvu sont définis à la Figure A.6.


Deux procédures de codage sont utilisées, l'une pour le coefficient DC ZZ(0) et l'autre pour les coefficients AC
ZZ(1)...ZZ(63). Les coefficients sont codés dans l'ordre dans lequel ils se présentent dans la séquence en zigzag, en
commençant par le coefficient DC. Ils sont représentés comme des entiers en complément à deux.

F.1.1.5.1 Modèle de codage des coefficients DC


Les coefficients DC sont codés en différentiel, utilisant un prédicteur unidimensionnel PRED, valeur DC quantifiée du
bloc 8 × 8 le plus récemment codé dans la même composante. La différence DIFF, est obtenue par:
DIFF = ZZ(0) – PRED
Au début du balayage et au début de chaque intervalle de reprise, la prédiction du coefficient DC est initialisée à zéro.
(On rappelle que les données d'entrée ont subi un décalage de niveau vers une représentation en complément à deux).

F.1.1.5.2 Modèle de codage des coefficients AC


Comme beaucoup de coefficients sont nuls, les plages de zéros sont identifiées et codées de façon efficace. En outre, si
les coefficients restants de la séquence en zigzag (dans l'ordre) sont tous nuls, cette plage finale est codée explicitement
comme une fin de bloc (EOB).

F.1.2 Procédures de codage de Huffman de base


La procédure de codage de base est donnée pour une précision d'échantillon de 8 bits. Le codeur peut utiliser jusqu'à
deux tables de Huffman DC et deux tables de Huffman AC dans un même balayage.

F.1.2.1 Codage de Huffman des coefficients DC

F.1.2.1.1 Structure de la table de codage DC


La table de codage DC consiste en un ensemble de codes de Huffman (longueur maximale 16 bits) auxquels sont accolés
(dans la plupart des cas) des bits additionnels pouvant coder toute valeur possible de DIFF, différence entre le coeffi-
cient DC courant et la prédiction. Les codes de Huffman des catégories de différence sont générés en sorte qu'aucun
code ne soit entièrement composé de bits 1. (Le code de préfixe de marqueur X’FF’ doit être évité).
Les valeurs absolues des différences en complément à deux sont regroupées en 12 catégories SSSS, un code de Huffman
étant créé pour chacune des 12 (voir le Tableau F.1).
Pour chaque catégorie, sauf SSSS = 0, un champ binaire additionnel est accolé au mot de code, pour identifier de façon
unique la différence effectivement constatée dans ladite catégorie. Le nombre de bits additionnels est donné par SSSS;
ces bits additionnels sont accolés au LSB du code de Huffman précédent, le bit de plus fort poids en premier. Quand
DIFF est positive, les SSSS bits de plus faible poids de DIFF sont accolés. Quand DIFF est négative, les SSSS bits de
plus faible poids de (DIFF-1) sont accolés. A noter que le bit de plus fort poids de la séquence binaire accolée vaut 0
pour les différences négatives, et 1 pour les différences positives.

F.1.2.1.2 Définition des tables de Huffman pour les coefficients DC


La syntaxe de spécification des tables de Huffman est donnée dans l'Annexe B. La procédure de création d'une table de
codage à partir de ces informations est décrite dans l'Annexe C. On ne peut pas définir plus de deux tables de Huffman
pour le codage des coefficients DC. Deux exemples de tables de Huffman de codage de coefficients DC sont donnés
dans l'Annexe K.

92 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau F.1 – Catégories de valeur absolue de différence pour le codage DC

SSSS Valeurs de DIFF

10 0

11 –1,1

12 –3,–2,2,3

13 –7...–4,4...7

14 –15...–8,8...15

15 –31...–16,16...31

16 –63...–32,32...63

17 –127...–64,64...127

18 –255...–128,128...255

19 –511...–256,256...511

10 –1 023...–512,512...1 023

11 –2 047...–1 024,1 024...2 047

F.1.2.1.3 Procédure de codage de Huffman des coefficients DC

La procédure de codage est définie sous la forme d'un ensemble de tables étendues, XHUFCO et XHUFSI, qui
contiennent l'ensemble complet des codes et tailles de codes de Huffman pour toutes les valeurs possibles de la
différence. Pour la pleine précision 12 bits, les tables sont relativement grandes. Toutefois, pour le système de base, la
précision de la différence peut être assez petite pour rendre cette description applicable.

XHUFCO et XHUFSI sont générés par les tables EHUFCO et EHUFSI du codeur (voir Annexe C) en accolant aux
codes de Huffman de chaque catégorie de différence, les bits additionnels nécessaires pour la définition complète de la
différence. Par définition, XHUFCO et XHUFSI ont des entrées pour chaque valeur de différence possible. XHUFCO
contient la configuration binaire concaténée du code de Huffman et du champ binaire additionnel; XHUFSI contient la
longueur totale en bits de cette configuration binaire concaténée. Toutes deux sont indexées par DIFF, différence entre le
coefficient DC et la prédiction.

La procédure de codage Huffman de la différence DC, DIFF, est:

SIZE = XHUFSI(DIFF)

CODE = XHUFCO(DIFF)

code SIZE bits de CODE

où DC est la valeur du coefficient quantifié DC et PRED la valeur DC quantifiée prédite. Le code de Huffman (CODE)
(incluant tous bits additionnels) est obtenu à partir de XHUFCO et la longueur du code incluant des bits additionnels
(SIZE) est obtenue à partir de XHUFSI, DIFF étant utilisé comme index des deux tables.

F.1.2.2 Codage de Huffman des coefficients AC

F.1.2.2.1 Structure de la table de codage AC

Chaque coefficient AC non nul de ZZ est décrit par une valeur composite de 8 bits, RS, de la forme:

RS = binaire ’RRRRSSSS’

Les quatre bits de plus faible poids, ’SSSS’, définissent la catégorie d'amplitude du prochain coefficient non nul
dans ZZ; les quatre bits de plus fort poids, ’RRRR’, donnent la position relative du coefficient dans ZZ, par rapport au
précédent coefficient non nul (c'est-à-dire la longueur de la plage de coefficients nuls entre des coefficients non nuls).
Comme la longueur de la plage de coefficients nuls peut dépasser 15, la valeur ’RRRRSSSS’ = X’F0’ est définie pour

CCITT Rec. T.81 (1992 F) 93


ISO/CEI 10918-1 : 1993(F)

représenter une longueur de plage de 15 coefficients nuls suivis d'un coefficient d'amplitude nulle. (Ce qui peut être
interprété comme la longueur d'une plage de 16 coefficients nuls.) En outre, une valeur spéciale
’RRRRSSSS’ = ’00000000’ est utilisée pour coder la fin de bloc (EOB) quand tous les autres coefficients du bloc sont
nuls.

La structure générale de la table de codage est représentée Figure F.1. Les entrées marquées ’N/A’ ne sont pas définies
pour la procédure de base.

SSSS
0 1 2 . . . 9 10

0 EOB
. N/A
RRRR . N/A VALEURS COMPOSITES
. N/A
15 ZRL

TISO1330-93/d071

Figure F.1 – Tableau bidimensionnel des valeurs composites utilisées


pour le codage de Huffman

Les plages de valeurs affectées à chaque valeur de SSSS sont définies dans le Tableau F.2.

Tableau F.2 – Catégories affectées aux valeurs des coefficents

SSSS Coefficients AC

11 –1,1

12 –3,–2,2,3

13 –7...–4,4...7

14 –15...–8,8...15

15 –31...–16,16...31

16 –63...–32,32...63

17 –127...–64,64...127

18 –255...–128,128...255

19 –511...–256,256...511

10 –1 023...–512,512...1 023

La valeur composite, RRRRSSSS, est codée Huffman, chaque code de Huffman étant suivi de bits additionnels qui
spécifient le signe et l'amplitude exacte du coefficient.

La table des codes AC comprend un code de Huffman (longueur maximale 16 bits, non inclus les bits additionnels) pour
chaque valeur composite possible. Les codes de Huffman des valeurs composites de 8 bits sont générés en sorte
qu'aucun code ne consiste entièrement en bits 1.

Le format des bits additionnels est le même que pour le codage des coefficients DC. La valeur de SSSS donne le nombre
de bits additionnels nécessaires pour spécifier le signe et préciser l'amplitude des coefficients. Les bits additionnels sont:
soit les bits de plus faible poids SSSS de ZZ(K), quand ZZ(K) est positif; soit les bits de plus faible poids SSSS de
ZZ(K) – 1, quand ZZ(K) est négatif. ZZ(K) est le kième coefficient de la séquence en zigzag des coefficients en cours de
codage.

94 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

F.1.2.2.2 Définition des tables de Huffman utilisées pour les coefficients AC

La syntaxe de spécification des tables de Huffman est donnée dans l'Annexe B. La procédure de création d'une table de
codage à partir de ces informations est décrite dans l'Annexe C.

Dans le système de base, on ne peut pas définir plus de deux tables de Huffman pour le codage des coefficients AC.
Deux exemples de tables de codage des coefficients AC sont donnés dans l'Annexe K.

F.1.2.2.3 Procédures de codage de Huffman des coefficients AC

Comme défini dans l'Annexe C, la table de codage de Huffman est supposée disponible sous la forme de deux tables,
EHUFCO (contenant les bits des codes) et EHUFSI (contenant la longueur en bits, de chaque code), toutes deux
indexées par la valeur composite définie ci-dessus.

La procédure de codage des coefficients AC d'un bloc est représentée Figures F.2 et F.3. Sur la Figure F.2, K est l'index
vers la position dans le balayage en zigzag et R la longueur de la plage de coefficients nuls.

La procédure «Accoler EHUFSI(X’F0’) bits de EHUFCO(X’F0’)» code une plage de 16 coefficients nuls (code ZRL de
la Figure F.1). La procédure «Accoler EHUFSI(0) bits de EHUFCO(0)» code le marqueur fin de bloc (code EOB)). Si le
dernier coefficient (K = 63) est non nul, le code EOB est sauté.

CSIZE est une procédure qui associe un coefficient AC à la valeur SSSS définie dans le Tableau F.2.

F.1.2.3 Bourrage d'octets

Un bourrage d'octets est utilisé pour libérer la place nécessaire pour les codes de marqueurs, qui peuvent être détectés
sans décodage dans les données d'image comprimées.

Au cours du codage normal, chaque fois que la valeur d'octet X’FF’ est créée dans la chaîne de codes, un octet X’00’ est
bourré dans cette chaîne de codes.

Si un octet X’00’ est détecté après un octet X’FF’, le décodeur doit le supprimer. Si l'octet est non nul, un marqueur a été
détecté et doit être interprété à un niveau suffisant pour achever le décodage du balayage.

Le calage à l'octet des marqueurs est réalisé en bourrant les octets incomplets de bits 1. Si le bourrage de bits 1 crée une
valeur X’FF’, un octet zéro est bourré avant d'accoler le marqueur.

F.1.3 Processus de codage de Huffman basé DCT séquentiel étendu, pour une précision d'échantillon de 8 bits

Ce processus est identique au processus de codage de base décrit en F.1.2, sauf que le nombre de destinations de table de
Huffman pouvant être utilisé dans le même balayage est porté à quatre. Quatre destinations de table de Huffman DC et
quatre destinations de table de Huffman AC, représentent le maximum autorisé par la présente spécification.

F.1.4 Processus de codage arithmétique basé DCT séquentiel étendu, pour une précision d'échantillon
de 8 bits

Ce paragraphe décrit l'utilisation des procédures de codage arithmétique dans le processus de codage basé DCT
séquentiel.
NOTE – Les procédures de codage arithmétique de la présente Spécification sont définies pour la précision maximale, pour
faciliter l'interchangeabilité des réalisations.

Les extensions de codage arithmétique ont le même modèle DCT que le codeur DCT de base. L'Annexe F.1.1 s'applique
donc au codage arithmétique. Comme la technique de codage de Huffman, la technique de codage arithmétique binaire
est sans perte. Le transcodage est possible entre les deux systèmes, sans calcul de FDCT ou d'IDCT, ni modification de
l'image reconstruite.

Les principes de base du codage arithmétique binaire adaptatif sont décrits dans l'Annexe D. Jusqu'à quatre destinations
de tables décisionnelles DC et AC (avec les zones statistiques associées) peuvent être utilisées dans un même balayage.

Les procédures de codage arithmétique de décisions binaires, d'initialisation de zone statistique, d'initialisation du
codeur, de terminaison de la chaîne de codes et de pose de marqueurs de reprise, sont indiquées dans le Tableau D.1.

CCITT Rec. T.81 (1992 F) 95


ISO/CEI 10918-1 : 1993(F)

Encode_AC_
coefficients

K=0
R=0

K=K+1 R=R+1

Oui Non
ZZ(K) = 0? K = 63?

Non Oui

Accoler EHUFSI(X’F0’) bits


Accoler EHUFSI(X’00’) bits
de EHUFCO(X’F0’)
de EHUFCO(X’00’)
R = R – 16

Oui
R > 15?

Non

Encode_R,ZZ(K)

R=0

Non Oui
K = 63?

Fait

TISO1340-93/d072

Figure F.2 – Procédure de codage séquentiel des coefficients AC en codage de Huffman

96 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Encode_R,ZZ(K)

SSSS = CSIZE(ZZ(K))
RS = (16 × R) + SSSS
Accoler EHUFSI(RS) bits
de EHUFCO(RS)

Oui
ZZ(K) < 0?

Non

ZZ(K) = ZZ(K) – 1

Accoler les SSSS


bits de faible poids
de ZZ(K)

Fait

TISO1350-93/d073

Figure F.3 – Codage séquentiel d'un coefficient AC non nul

Certaines des procédures du Tableau D.1 sont utilisées dans la structure de contrôle de haut niveau des balayages et des
intervalles de reprise décrite dans l'Annexe E. Au début des balayages et des intervalles de reprise, les estimations de
probabilité utilisées dans le codeur arithmétique sont remises à la valeur initiale standard, dans le cadre de la procédure
Initenc, qui relance le codeur arithmétique. A la fin des balayages et des intervalles de reprise, la procédure Flush est
lancée pour vider le registre de code avant d'accoler le marqueur suivant.

F.1.4.1 Codage arithmétique des coefficients DC

La structure de base de la séquence décisionnelle de codage d'une valeur de la différence DC (DIFF) est représentée à
la Figure F.4.

L'indice de contexte S0 et les autres indices de contexte utilisés dans les procédures de codage DC sont définis dans le
Tableau F.4 (voir F.1.4.4.1.3). Une décision 0 est codée si la valeur de la différence est nulle et une décision 1 si la
différence n'est pas nulle. Dans ce dernier cas, le signe et la valeur absolue sont codés par la procédure Encode_V(S0)
décrite en F.1.4.3.1.

F.1.4.2 Codage arithmétique des coefficients AC

Les coefficients AC sont codés dans l'ordre dans lequel ils se présentent dans la séquence en zigzag ZZ(1,...,63). Une
décision binaire fin de bloc (EOB) est codée avant le codage du premier coefficient AC de ZZ et après chaque
coefficient non nul. Si l'EOB se présente, tous les coefficients restants dans ZZ sont nuls. La Figure F.5 décrit
l'enchaînement des décisions. La procédure équivalente, pour le codeur de Huffman, est donnée à la Figure F.2.

CCITT Rec. T.81 (1992 F) 97


ISO/CEI 10918-1 : 1993(F)

Encode_DC_DIFF

V = DIFF

Non Oui
V = 0?

Code_1(S0)
Encode_V(S0) Code_0(S0)

Fait

TISO1360-93/d074

Figure F.4 – Modèle du codage arithmétique de la différence DC

Les indices de contexte SE et S0 utilisés dans les procédures de codage AC sont définis dans le Tableau F.5
(voir F.1.4.4.2). Sur la Figure F.5, K est l'indice de la position dans la séquence en zigzag. Pour le balayage séquentiel,
Kmin vaut 1 et Se vaut 63. La décision V = 0 fait partie d'une boucle qui code les plages de coefficients nuls. Chaque
fois que le coefficient est non nul, «Encode_V(S0)» code le signe et la valeur absolue du coefficient. Chaque coefficient
non nul codé est suivi d'une décision EOB. Si l'EOB se présente, une décision 1 est codée pour indiquer que le codage
du bloc est terminé. Si le coefficient d'indice K = Se est non nul, la décision EOB est sautée.

F.1.4.3 Codage de la séquence de décisions binaires pour des différences DC et coefficients AC non nuls

La différence DC et les coefficients AC sont représentés comme des valeurs signées entières en complément à deux. La
décomposition de ces valeurs entières signées en un arbre de décisions binaires est effectuée de la même façon pour les
modèles de codage DC et AC.

Si les arbres de décisions binaires de ce paragraphe et les modèles de codage DC et AC sont identiques, les modèles
statistiques d'affectation dans ces arbres, de registres statistiques aux décisions binaires, sont complètement différents.

F.1.4.3.1 Structure de la séquence décisionnelle de codage

La séquence de codage s'articule en trois procédures: une première code le signe, une deuxième identifie la catégorie de
valeur absolue, une troisième détermine avec précision la valeur absolue qui s'est présentée dans la catégorie identifiée
par la deuxième procédure.

Au point où débute la séquence de décisions binaires de Encode_V(S0), les procédures des Figures F.4 et F.5 ont déjà
déterminé que le coefficient ou la différence n'est pas nul.

V désigne une différence DC (DIFF) ou un coefficient AC. La valeur entière signée non nulle de V est codée par la
séquence de la Figure F.6. Cette séquence code d'abord le signe de V. Elle code ensuite (après avoir converti V en une
valeur absolue, diminuée de 1 pour donner Sz) la catégorie de valeur absolue de Sz (code_log2_Sz), puis code les bits de
faible poids de la valeur absolue (code_Sz_bits) pour déterminer la valeur exacte de la valeur absolue.

98 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

On constate deux différences significatives entre cette séquence et l'ensemble similaire d'opérations décrit en F.1.2 pour
le codage de Huffman. D'abord, le signe est codé avant l'identification de la catégorie de valeur absolue, ensuite, la
valeur absolue est diminuée de 1 avant l'identification de sa catégorie.

Encode_AC_
Coefficients

K = Kmin

Oui
K = EOB? Code_1(SE)

Non

Code_0(SE)

K=K+1 K=K+1

V = ZZ(K)

Oui
V = 0? Code_0(S0)

Non

Code_1(S0)
Encode_V(S0)

Non Oui
K = Se?

Fait

TISO1370-93/d075

Figure F.5 – Modèle de codage AC en codage arithmétique

CCITT Rec. T.81 (1992 F) 99


ISO/CEI 10918-1 : 1993(F)

Encode_V(S)

Encode_sign_of_V

Sz = | V | – 1

Encode_log2_Sz

Encode_Sz_bits

Fait

TISO1380-93/d076

Figure F.6 – Séquence des procédures de codage des valeurs non nulles de V

F.1.4.3.1.1 Codage du signe

Le signe est codé par une décision 0 lorsqu'il est positif et une décision 1 lorsqu'il est négatif (voir la Figure F.7).

Les indices de contexte SS, SN et SP sont définis dans le Tableau F.4 pour le codage DC, et dans le Tableau F.5 pour le
codage AC. Après codage du signe, l'indice de contexte S est mis à SN ou SP, ce qui établit une valeur initiale pour
Encode_log2_Sz.

F.1.4.3.1.2 Codage de la catégorie de valeur absolue

La catégorie de valeur absolue est déterminée par une séquence de décisions binaires qui compare Sz à une limite à
croissance exponentielle (une puissance de 2) pour déterminer la position du premier bit 1. Cette comparaison détermine
la catégorie de valeur absolue d'une façon tout à fait similaire à celle qu'utilise le codeur de Huffman pour générer un
code pour la valeur associée à la catégorie de différence. L'organigramme de cette procédure est représenté à
la Figure F.8.

La valeur initiale de l'indice de contexte S est déterminée dans Encode_sign_of_V. Les valeurs des indices de contexte
X1 et X2 sont définies pour le codage DC dans le Tableau F.4, et pour le codage AC dans le Tableau F.5. Sur la
Figure F.8, M est la limite supérieure (exclusive) de la valeur absolue et les abréviations «SSL» et «SRL» se réfèrent aux
opérations de décalage logique à gauche et à droite (dans le cas présent, d'une position binaire). L'opération SRL
exécutée à la fin de la procédure cale M sur le bit de plus fort poids de Sz (voir le Tableau F.3).

La précision maximale autorisée pour la DCT est 15 bits: la précision maximale requise pour l'arbre décisionnel de
codage est donc de 16 bits pour la différence DC et de 15 bits pour les coefficients AC, y compris le bit de signe.

100 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Encode_sign_of_V

Oui Non
V < 0?

Code_1(SS) Code_0(SS)

S = SN S = SP

Fait

TISO1390-93/d077

Figure F.7 – Codage du signe de V

Tableau F.3 – Catégories pour chaque limite maximale

Limite supérieure Plage Sz Nombre de bits de valeur absolue


exclusive (M) de faible poids

11111 0 10

11112 1 10

11114 2,3 11

11118 4,...,7 12

11116 8,...,15 13

32332 16,...,31 14

66464 32,...,63 15

12128 64,...,127 16

25256 128,...,255 17

15512 256,...,511 18

11 024 512,...,1 023 19

22 048 1 024,...,2 047 10

14 096 2 048,...,4 095 11

18 192 4 096,...,8 191 12

16 384 8 192,...,16 383 13

32 768 16 384,...,32 767 14

CCITT Rec. T.81 (1992 F) 101


ISO/CEI 10918-1 : 1993(F)

Encode_log2_Sz

M=1

Oui
Sz < M?

Non

Code_1(S)

M=2
S = X1

Oui
Sz < M?

Non

Code_1(S)

M=4
S = X2

Oui
Sz < M?

Non

Code_1(S) Code_0(S)

M = SLL M 1
M = SRL M 1
S=S+1

Fait

TISO1400-93/d078

Figure F.8 – Séquence décisionnelle de détermination de la catégorie de valeur absolue

102 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

F.1.4.3.1.3 Codage de la valeur exacte de la valeur absolue

Le codage de la catégorie de valeur absolue est suivi de celui des bits de faible poids de cette valeur absolue, par poids
décroissants. La procédure est représentée à la Figure F.9. L'abréviation «SRL» désigne l'opération logique de décalage à
droite et M la limite (exclusive) établie par la procédure de la Figure F.8. A noter qu'un seul bit est positionné pour M: le
décalage de M à droite le convertit en un masque binaire pour l'opération «AND» logique.

La valeur initiale de l'indice de contexte S est déterminée par Encode_log2_Sz. L'incrémentation de S de 14, au début de
la procédure, met l'indice de contexte à la valeur requise dans les Tableaux F.4 et F.5.

Encode_Sz-bits

S = S + 14

M = SRL M 1

Oui
M = 0?

Non

T = M AND Sz Fait

Oui Non
T = 0?

Code_0(S) Code_1(S)

TISO1410-93/d079

Figure F.9 – Séquence décisionnelle de codage de la configuration binaire de la valeur absolue

F.1.4.4 Modèles statistiques

Un codeur arithmétique binaire adaptatif nécessite un modèle statistique. Le modèle statistique définit les contextes à
utiliser pour le choix des estimations de probabilité décisionnelle utilisées dans les procédures de codage et de décodage.

CCITT Rec. T.81 (1992 F) 103


ISO/CEI 10918-1 : 1993(F)

Un ou plusieurs contextes sont associés à chaque décision des arbres de décisions binaires. Ces contextes déterminent la
signification attribuée au MPS et l'indice dans le Tableau D.3 de l'estimation de probabilité conditionnelle Qe à utiliser
pour coder et décoder des décisions binaires.

Le codeur arithmétique est adaptatif: cela signifie que les estimations de probabilité associées à chaque contexte sont
déterminées et conservées par un système de codage arithmétique, sur la base de décisions de codage antérieures, prises
pour ce contexte.

F.1.4.4.1 Modèle statistique de codage de la différence avec la prédiction DC

Le modèle statistique de codage de la différence DC conditionne certaines des estimations de probabilité de décisions
binaires par des décisions de codage DC antérieures.

F.1.4.4.1.1 Conditionnement statistique du signe

Dans le codage des coefficients DC, quatre registres statistiques (ou estimations de probabilité) séparés sont utilisés pour
coder la décision nul/non nul (V = 0), la décision relative au signe et la première décision relative à la catégorie de
valeur absolue. Deux de ces registres sont utilisés pour coder la décision V = 0 et la décision relative au signe. Les deux
autres sont utilisés pour le codage de la première décision relative à la valeur absolue, Sz < 1; un de ces registres est
utilisé quand le signe est positif, l'autre quand le signe est négatif. Ainsi, la première estimation de probabilité de la
décision relative à la valeur absolue est conditionnée par le signe de V.

F.1.4.4.1.2 Conditionnement statistique par la différence DC dans le bloc précédent

Les estimations de probabilité relatives à ces trois premières décisions sont également conditionnées par Da, valeur de la
différence codée pour le précédent bloc DCT de la même composante. Les différences sont réparties en cinq classes:
zéro, petite positive, petite négative, grande positive et grande négative. La relation entre ces classes par défaut et
l'échelle de quantification est indiquée à la Figure F.10.

. . . –5 –4 –3 –2 –1 0 +1 +2 +3 +4 +5 . . . Différence DC

– grande – petite 0 + petite + grande Classe de différence DC


TISO1420-93/d080

Figure F.10 – Classes décisionnelles par défaut des valeurs de différence

Les limites de la catégorie de différence «petite» déterminent la classification. L et U étant définis comme des entiers
compris entre 0 et 15 inclus, la borne inférieure (exclusive) pour les magnitudes de différence de la classe «petite» est
zéro pour L = 0 et 2L–1 pour L > 0.

La borne supérieure (exclusive) pour les magnitudes de différence de la classe «petite» est 2U.

L est inférieur ou égal à U.

Ces limites de classes décisionnelles donnent une segmentation identique à celle du Tableau F.3.

F.1.4.4.1.3 Affectation des registres statistiques à l'arbre de décisions binaires DC

Comme indiqué dans le Tableau F.4, chaque zone statistique de codage DC consiste en un ensemble de 49 registres
statistiques. Ci-après, ces registres sont supposés contigus. Les 20 premiers registres consistent en cinq ensembles de
quatre registres sélectionnés par un indice de contexte S0. La valeur de S0 est donnée par DC_Context(Da), qui fournit
une valeur de 0, 4, 8, 12 ou 16, selon la classe de différence de Da (voir F.1.4.4.1.2). Les 29 registres restants,
X1,...,X15,M2,...,M15 sont utilisés pour coder les décisions de catégorie de valeur absolue et les bits de valeur absolue.

104 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau F.4 – Modèle statistique de codage des coefficents DC

Indice de contexte Valeur Décision de codage


S0 DC_Context(Da) V=0
SS S0 + 1 Signe de V
SP S0 + 2 Sz < 1 si V > 0
SN S0 + 3 Sz < 1 si V < 0
X1 20 Sz < 2
X2 X1 + 1 Sz < 4
X3 X1 + 2 Sz < 8
. . .
. . .
X15 X1 + 14 Sz < 215
M2 X2 + 14 Bits de valeur absolue si Sz < 4
M3 X3 + 14 Bits de valeur absolue si Sz < 8
. . .
. . .
M15 X15 + 14 Bits de valeur absolue si Sz < 215

F.1.4.4.1.4 Valeurs décisionnelles par défaut du modèle statistique DC

Les paramètres L et U, de détermination des limites des catégories décisionnelles ont les valeurs par défaut L = 0 et
U = 1. D'autres limites peuvent être fixées en utilisant le segment marqueur DAC de définition de tables décisionnelles,
comme décrit dans l'Annexe B.

F.1.4.4.1.5 Conditions initiales du modèle statistique DC

Au début d'un balayage et au début de chaque intervalle de reprise, la différence associée à la précédente valeur DC est
définie comme nulle dans la détermination de l'état des tables décisionnelles.

F.1.4.4.2 Modèle statistique de codage des coefficients AC

Comme indiqué dans le Tableau F.5, chaque zone statistique de codage AC consiste en un ensemble de 245 registres
statistiques consécutifs. Trois registres statistiques sont utilisés pour chaque valeur de l'indice K dans la séquence en
zigzag, et deux ensembles de 28 registres additionnels X2,...,X15,M2,...,M15 pour le codage de la catégorie de valeur
absolue et des bits de valeur absolue.

La valeur de SE (ainsi que de S0, SP et SN) est déterminée par l'indice K dans la séquence en zigzag. Comme K est dans
la plage 1 à 63, la plus petite valeur de SE est zéro et la plus grande valeur de SP est 188. Aucune valeur n'est affectée à
SS lors du codage des coefficients AC, car les signes des coefficients sont codés avec une valeur de probabilité fixe
de 0,5 (Qe = X’5A1D’, MPS = 0).

La valeur de X2 est donnée par «AC_Context(K)», qui donne X2 = 189 quand K ≤ Kx et X2 = 217 quand K > Kx, Kx
étant défini à l'aide du segment marqueur DAC (voir B.2.4.3).

A noter qu'il n'est pas utilisé de registre statistique X1 dans cette séquence. A la place, le Tableau 63 × 1 de registres
statistiques de codage de la catégorie de valeur absolue est utilisé pour deux décisions. Quand la limite de la valeur
absolue a été située – par exemple, au registre statistique Xn – un registre statistique unique Mn est utilisé pour coder la
séquence binaire de valeur absolue pour cette limite.

F.1.4.4.2.1 Valeurs décisionnelles par défaut de codage des coefficients AC

La valeur par défaut de Kx est 5. Elle peut être modifiée en utilisant le segment marqueur DAC, comme décrit dans
l'Annexe B.

F.1.4.4.2.2 Valeurs décisionnelles initiales du modèle statistique AC

Au début d'un balayage et à chaque reprise, tous les registres statistiques sont réinitialisés à la valeur par défaut standard
indiquée dans l'Annexe D.

CCITT Rec. T.81 (1992 F) 105


ISO/CEI 10918-1 : 1993(F)

Tableau F.5 – Modèle statistique de codage des coefficients AC

Indice de contexte Valeur Décision de codage


SE 3 × (K – 1) K = EOB
S0 SE + 1 V=0
SS Estimation fixe Signe de V
SN,SP S0 + 1 Sz < 1
X1 S0 + 1 Sz < 2
X2 AC_Context(K) Sz < 4
X3 X2 + 1 Sz < 8
. . .
. . .
X15 X2 + 13 Sz < 215
M2 X2 + 14 Bits de valeur absolue si Sz < 4
M3 X3 + 14 Bits de valeur absolue si Sz < 8
. . .
. . .
M15 X15 + 14 Bits de valeur absolue si Sz < 215

F.1.5 Processus de codage de Huffman basé DCT séquentiel pour une précision d'échantillon de 12 bits

Ce processus est identique au processus DCT séquentiel avec précision 8 bits étendu à quatre destinations de tables de
Huffman, tel que décrit en F.1.3, avec les modifications suivantes.

F.1.5.1 Structure de la table de codage DC pour une précision d'échantillon de 12 bits

Les valeurs des différences en complément à deux sont regroupés en 16 catégories SSSS, pour chacune desquelles est
créé un code de Huffman.

La table de Huffman de codage DC (Tableau F.1) est étendue comme indiqué sur le Tableau F.6.

Tableau F.6 – Catégories de valeurs de la différence pour le codage DC

SSSS Valeurs de la différence

12 –4 095...–2 048,2 048...4 095


13 –8 191...–4 096,4 096...8 191
14 –16 383...–8 192,8 192...16 383
15 –32 767...–16 384,16 384...32 767

F.1.5.2 Structure de la table de codage AC pour une précision d'échantillon de 12 bits

La structure générale de la table de codage est étendue comme indiqué à la Figure F.11. La table de Huffman de codage
AC est étendue comme indiqué dans le Tableau F.7.

106 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

SSSS
0 1 2 . . . 13 14

0 EOB
. N/A
RRRR . N/A VALEURS COMPOSITES
. N/A
15 ZRL
TISO1430-93/d081

Figure F.11 – Tableau bidimensionnel des valeurs composites utilisées


pour le codage de Huffman

Tableau F.7 – Valeurs affectées aux plages d'amplitude des coefficients

SSSS Coefficients AC
11 –2 047...–1 024,1 024...2 047
12 –4 095...–2 048,2 048...4 095
13 –8 191...–4 096,4 096...8 191
14 –16 383...–8 192,8 192...16 383

F.1.6 Processus de codage arithmétique basé DCT séquentiel étendu pour une précision d'échantillon de
12 bits

Le processus est identique à celui du processus DCT séquentiel pour une précision 8 bits, sauf des changements de
précision dans le calcul de la FDCT.

La structure de la procédure de codage est identique à celle spécifiée en F.1.4, déjà définie pour une précision
d'échantillon de 12 bits.

F.2 Processus de décodage basés DCT séquentiels

F.2.1 Procédures de contrôle et modèles de codage basés DCT séquentiels

F.2.1.1 Procédures de contrôle des décodeurs basés DCT séquentiels

Les procédures de contrôle du décodage des données d'une image comprimée et de ses constituants – trames, balayages,
intervalle de reprise et MCU – sont données à la Figures E.6 à E.10. La procédure de décodage d'une MCU
(Figure E.10) appelle itérativement la procédure de décodage d'une unité de données. Pour les décodeurs basés DCT,
l'unité de données est un bloc 8 × 8 d'échantillons.

F.2.1.2 Procédures de décodage d'une unité de données bloc 8 × 8

Dans le processus de décodage basé DCT séquentiel, le décodage d'une unité de données bloc 8 × 8 inclut les procédures
suivantes:

a) décodage du coefficient DC du bloc 8 × 8, en utilisant la destination de table DC spécifiée dans l'en-tête


de balayage;

b) décodage des coefficients AC du bloc 8 × 8, en utilisant la destination de table AC spécifiée dans l'en-tête
de balayage;

c) déquantification, en utilisant la destination de table spécifiée dans l'en-tête de trame et calcul de la DCT
8 × 8 inverse.

CCITT Rec. T.81 (1992 F) 107


ISO/CEI 10918-1 : 1993(F)

F.2.1.3 Modèles de décodage pour les procédures DCT séquentielles

Deux procédures de décodage sont utilisées, une pour le coefficient DC ZZ(0) et l'autre pour les coefficients AC
ZZ(1)...ZZ(63). Les coefficients sont décodés dans l'ordre dans lequel ils se présentent dans la séquence en zigzag, en
commençant par le coefficient DC. Les coefficients sont représentés comme des entiers en complément à deux.

F.2.1.3.1 Modèle de décodage pour les coefficients DC

La différence décodée DIFF est ajoutée à PRED, la valeur DC du bloc 8 × 8 le plus récemment décodé dans la même
composante. Ainsi: ZZ(0) = PRED + DIFF.

Au début du balayage et au début de chaque intervalle de reprise, la prédiction du coefficient DC est initialisée à zéro.

F.2.1.3.2 Modèle de décodage des coefficients AC

Les coefficients AC sont décodés dans l'ordre où ils se présentent dans ZZ. Quand EOB est décodé, tous les coefficients
restant dans ZZ sont mis à zéro.

F.2.1.4 Déquantification des coefficients DCT

La déquantification des coefficients DCT quantifiés, telle que décrite dans l'Annexe A, est réalisée en multipliant chaque
valeur de coefficient quantifié par la valeur de la table de quantification pour ce coefficient. Le décodeur doit être
capable d'utiliser jusqu'à quatre destinations de table de quantification.

F.2.1.5 DCT inverse (IDCT)

La définition mathématique de l'IDCT est donnée en A.3.3.

Après calcul de l'IDCT, les échantillons de sortie signés subissent un décalage de niveau, comme décrit dans l'Annexe A,
pour convertir la sortie en une représentation non signée. Pour la précision 8 bits, ce décalage de niveau est réalisé en
ajoutant 128; pour la précision 12 bits il est réalisé en ajoutant 2 048. Si nécessaire, les échantillons de sortie peuvent être
tronqués pour tenir dans la plage de précision appropriée (0 à 255 en précision 8 bits et 0 à 4 095 en précision 12 bits).

F.2.2 Procédures de décodage Huffman de base

La procédure de décodage de base est décrite pour une précision d'échantillon de 8 bits. Le décodeur doit être capable
d'utiliser jusqu'à deux tables de Huffman DC et deux tables de Huffman AC dans un même balayage.

F.2.2.1 Décodage Huffman des coefficients DC

La procédure de décodage de la différence DC, DIFF, est:

T = DECODE

DIFF = RECEIVE(T)

DIFF = EXTEND(DIFF,T)

où la procédure DECODE renvoie la valeur 8 bits associée au code de Huffman suivant dans les données d'image
comprimées (voir F.2.2.3), et la procédure RECEIVE(T) place les T bits suivants de la chaîne binaire dans les bits de
faible poids DIFF, le MSB en premier. Si T est zéro, DIFF est mis à zéro. La procédure EXTEND convertit la
valeur DIFF partiellement décodée de précision T en la différence pleine précision. EXTEND est représenté à
la Figure F.12.

F.2.2.2 Procédure de décodage des coefficients AC

La procédure de décodage des coefficients AC est représentée aux Figures F.13 et F.14.

108 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

EXTEND(V,T)

V t= 2 T –1

Oui
V < Vt ?

Non
V t = (SLL –1 T) + 1
V = V + Vt

Renvoyer V

TISO1440-93/d082

Figure F.12 – Extension du bit de signe d'une valeur décodée dans V

Le décodage de la valeur absolue et du signe du coefficient non nul est effectué dans la procédure «Decode_ZZ(K)»,
représentée Figure F.14.

La procédure DECODE renvoie la valeur RS associée au code de Huffman suivant dans le train codé (voir F.2.2.3). Les
valeurs SSSS et R sont dérivées de RS. La valeur de SSSS donne les quatre bits de plus faible poids de la valeur
composite, et R contient la valeur de RRRR (les quatre bits de plus fort poids de la valeur composite). L'interprétation de
ces valeurs est décrite en F.1.2.2. La procédure EXTEND est donnée à la Figure F.12.

F.2.2.3 La procédure DECODE

La procédure DECODE décode une valeur de 8 bits qui détermine, pour le coefficient DC, la catégorie de valeur absolue
de la différence. Pour le coefficient AC, cette valeur de 8 bits détermine la longueur de la plage de zéros et la catégorie
de coefficients non nul.

Trois tables, HUFFVAL, HUFFCODE et HUFFSIZE, ont été définies dans l'Annexe C. La réalisation de DECODE
décrite ici utilise un classement des codes de Huffman dans HUFFCODE, par ordre des valeurs et tailles de code.
Beaucoup d'autres réalisations de DECODE sont possibles.

NOTE – Les valeurs contenues dans HUFFVAL sont affectées en séquence à chacun des codes de HUFFCODE et de
HUFFSIZE. Aucun ordre n'est prescrit pour les valeurs contenues dans HUFFVAL, auxquelles ont été affectés des codes de même
longueur.

La réalisation de DECODE décrite dans ce paragraphe utilise trois tables, MINCODE, MAXCODE et VALPTR, pour
décoder un pointeur vers la table HUFFVAL. MINCODE, MAXCODE et VALPTR ont chacune 16 entrées, pour
chaque taille possible de code. MINCODE(I) contient la plus petite valeur de code pour une longueur donnée I,
MAXCODE(I) contient la plus grande valeur de code pour une longueur donnée I, et VALPTR(I) contient l'indice de
début de la liste des valeurs contenues dans HUFFVAL, qui sont décodées en mots de code de longueur I. Les valeurs
contenues dans MINCODE et MAXCODE sont des entiers signés de 16 bits; une valeur –1 met donc tous les bits à 1.

CCITT Rec. T.81 (1992 F) 109


ISO/CEI 10918-1 : 1993(F)

Decode_AC_
coefficients

K=1
ZZ(1,...,63) = 0

K=K+1 K = K + 16

RS = DECODE

SSSS = RS modulo 16
RRRR = SRL RS 4
R = RRRR

Oui
SSSS = 0?

Non

K=K+R

Decode_ZZ(K)

Non Oui
K = 63? R = 15?

Oui Non

Fait

TISO1450-93/d083

Figure F.13 – Procédure de décodage Huffman des coefficients AC

110 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Decode_ZZ(K)

ZZ(K) = RECEIVE(SSSS)
ZZ(K) = EXTEND(ZZ(K),SSSS)

Fait

TISO1460-93/d084

Figure F.14 – Décodage d'un coefficient AC non nul

La procédure de génération de ces tables est représentée à la Figure F.15. La procédure de DECODE est représentée à
la Figure F.16. A noter que la valeur 8 bits «VALUE» est renvoyée à la procédure qui lance DECODE.

Decoder_tables

I=0
J=0

MAXCODE(I) = –1 I=I+1

Oui
I > 16?

Non

Oui
BITS(I) = 0? Fait

Non
VALPTR(I) = J
MINCODE(I) = HUFFCODE(J)
J = J + BITS(I) – 1
MAXCODE(I) = HUFFCODE(J)
J=J+1
TISO1470-93/d085

Figure F.15 – Génération des tables du décodeur

CCITT Rec. T.81 (1992 F) 111


ISO/CEI 10918-1 : 1993(F)

DECODE

I=1
CODE = NEXTBIT

I=I+1
CODE = (SLL CODE 1) + NEXTBIT

Oui
CODE > MAXCODE(I)?

Non

J = VALPTR(I)
J = J + CODE – MINCODE(I)
VALUE = HUFFVAL(J)

Renvoyer VALUE

TISO1480-93/d086

Figure F.16 – Procédure de DECODE

F.2.2.4 La procédure RECEIVE

RECEIVE (SSSS) est une procédure qui place les prochains SSSS bits du segment à codage entropique dans les bits de
plus faible poids de DIFF, le MSB en premier. Elle appelle NEXTBIT et renvoie la valeur de DIFF à la procédure
appelante (voir la Figure F.17).

F.2.2.5 La procédure NEXTBIT

NEXTBIT lit le bit suivant des données comprimées et le communique à des sous-programmes de niveau plus élevé.
Elle intercepte également les octets de bourrage, les supprime et détecte les marqueurs. NEXTBIT lit les bits d'un octet
en commençant par le MSB (voir la Figure F.18).

CNT est remis à zéro avant le lancement du décodage d'un balayage et après le traitement d'un marqueur RST. Les
données comprimées sont lues octet par octet, en utilisant la procédure NEXTBYTE. Chaque fois qu'un octet B est lu,
CNT est mis à 8.

Le seul marqueur valide pouvant se présenter dans les données codées Huffman est le marqueur RSTm. Parmi les
marqueurs autres que l'EOI ou ceux pouvant se présenter au début ou avant le début d'un balayage, le seul marqueur
pouvant se présenter à la fin du balayage est le DNL (définition du nombre de lignes).

Normalement, le décodeur doit terminer le codage à la fin de l'intervalle final de reprise, avant l'interception du
marqueur de terminaison. Si le marqueur DNL se présente, le compteur de ligne courante est mis à la valeur spécifiée
par ce marqueur. Comme le marqueur DNL peut seulement être utilisé à la fin du premier balayage, la procédure de
décodage du balayage doit être terminée quand il se présente.

112 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

RECEIVE(SSSS)

I=0
V=0

I=I+1
V = (SLL V 1) + NEXTBIT

Non
I = SSSS?

Oui

Renvoyer V

TISO1490-93/d087

Figure F.17 – Procédure de RECEIVE(SSSS)

F.2.3 Processus de décodage DCT séquentiel de précision 8 bits, étendu à quatre ensembles de tables de
Huffman

Ce processus est identique au processus de décodage de base décrit en F.2.2, sauf que le décodeur doit être capable
d'utiliser jusqu'à quatre tables de Huffman DC et quatre tables de Huffman AC dans un même balayage. Quatre tables de
Huffman DC et quatre tables de Huffman AC représentent le maximum autorisé par la présente Spécification.

F.2.4 Processus de décodage DCT séquentiel en codage arithmétique

Ce paragraphe décrit le processus de décodage DCT séquentiel en décodage arithmétique.

Les procédures de décodage arithmétique, de décodage des décisions binaires, d'initialisation du modèle statistique,
d'initialisation du décodeur et de resynchronisation du décodeur sont indiquées dans le Tableau D.4.

Certaines des procédures du Tableau D.4 sont utilisées dans la structure de contrôle de haut niveau pour les balayages et
les intervalles de reprise décrits en F.2. Au début des balayages et des intervalles de reprise, les estimations de
probabilités utilisées dans le décodeur arithmétique sont remises aux valeurs initiales standards, par la procédure Initdec
qui relance le codeur arithmétique.

Les modèles statistiques définis en F.1.4.4 s'appliquent également à ce processus de décodage.

Le décodeur doit être capable d'utiliser, dans un même balayage, jusqu'à quatre tables décisionnelles DC et quatre tables
décisionnelles AC, ainsi que les catégories statistiques associées.

F.2.4.1 Décodage arithmétique des coefficients DC

La structure de base de la séquence décisionnelle de décodage d'une valeur de différence DC, DIFF, est représentée à
la Figure F.19. La structure équivalente du codeur est donnée Figure F.4.

CCITT Rec. T.81 (1992 F) 113


ISO/CEI 10918-1 : 1993(F)

NEXTBIT

Oui
CNT = 0?

Non

B = NEXTBYTE
CNT = 8

Non
B = X’FF’?

Oui

B2 = NEXTBYTE

Oui
B2 = 0?

Non

BIT = SRL B 7 Oui


CNT = CNT – 1 B2 = DNL? Traiter marqueur DNL
B = SLL B 1

Non

Renvoyer BIT Erreur Terminer balayage

TISO1500-93/d088

Figure F.18 – Procédure d'extraction du bit suivant des données comprimées

Les indices de contexte utilisés dans les procédures de décodage DC sont définis dans le Tableau F.4 (voir F.1.4.4.1.3).

La procédure «Decode» renvoie la valeur «D» de la décision binaire. Si D n'est pas nul, le signe et la valeur absolue de
DIFF (non nulle) sont décodés par la procédure «Decode_V(S0)».

F.2.4.2 Décodage arithmétique des coefficients AC

Les coefficients AC sont décodés dans l'ordre où ils se présentent dans ZZ(1, ... 63). La procédure de codage est donnée
à la Figure F.5. La Figure F.20 représente la séquence de décodage.

Les indices de contexte utilisés dans les procédures de décodage AC sont définis dans le Tableau F.5 (voir F.1.4.4.2).

Dans la Figure F.20, K est l'indice de la position dans la séquence en zigzag. Pour le balayage séquentiel, Kmin = 1 et
Se = 63. La décision figurant en haut de la boucle est la décision EOB. Si l'EOB se présente (D = 1), les coefficients
restant dans le bloc sont mis à zéro. La boucle intérieure, juste au-dessous du décodage EOB, décode les plages de
coefficients nuls. Chaque fois que le coefficient est non nul, «Decode_V» décode son signe et sa valeur absolue. Après
décodage de chaque coefficient non nul, la décision EOB est à nouveau décodée, sauf si K = Se.

114 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Decode_DC_DIFF

D = Decode(S0)

Non Oui
D = 0?

Decode_V(S0) DIFF = 0

DIFF = V

Fait

TISO1510-93/d089

Figure F.19 – Décodage arithmétique d'une différence DC

F.2.4.3 Décodage de la séquence de décisions binaires, pour des différences DC et des coefficients AC non nuls

Les différences DC et les coefficients AC sont représentés comme des valeurs entières signées de 16 bits en complément
à deux. L'arbre décisionnel de décodage de ces valeurs entières signées est le même pour les modèles de codage DC et
AC. A noter toutefois que les modèles statistiques sont différents.

F.2.4.3.1 Décodage arithmétique des valeurs non nulles

V désigne la valeur entière signée non nulle des différences DC ou des coefficients AC. V est décodé par la séquence
représentée Figure F.21. Cette séquence décode d'abord le signe de V, puis sa catégorie de valeur absolue
(«Decode_log2_Sz») et enfin les bits de plus faible poids de la valeur absolue («Decode_Sz_bits»). A noter que la valeur
décodée pour Sz doit être augmentée de 1 pour obtenir la valeur absolue effective du coefficient.

F.2.4.3.1.1 Décodage du signe

Le signe est décodé par la procédure indiquée à la Figure F.22.

Les indices de contexte sont définis pour le décodage DC dans le Tableau F.4, et pour le décodage AC dans le
Tableau F.5.

Si SIGN = 0, le signe du coefficient est positif; si SIGN = 1, le signe du coefficient est négatif.

CCITT Rec. T.81 (1992 F) 115


ISO/CEI 10918-1 : 1993(F)

Decode_AC_
coefficients

K = Kmin

D = Decode(SE)

Oui
D = 1?

Non

K=K+1 K=K+1

D = Decode(S0)

Oui
D = 0?

Non

Decode_V(S0)

ZZ(K) = V

Non Oui
K = Se?

Fait

TISO1520-93/d090

Figure F.20 – Procédure de décodage des coefficients AC

116 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Decode_V(S)

Decode_sign_of_V

Decode_log2_Sz

Decode_Sz_bits

V = Sz + 1

Oui
SIGN = 1? V = –V

Non

Fait

TISO1530-93/d091

Figure F.21 – Séquence des procédures du décodage des valeurs non nulles de V

F.2.4.3.1.2 Décodage de la catégorie de valeur absolue

L'indice de contexte S est déterminé dans Decode_sign_of_V. Les valeurs X1 et X2 de l'indice de contexte sont définies
pour le codage DC dans le Tableau F.4 et pour le codage AC dans le Tableau F.5.

Dans la Figure F.23, M est mis à la limite supérieure de valeur absolue, et décalé vers la gauche jusqu'à ce que la
décision décodée soit nulle. Il est ensuite décalé à droite d'une position pour devenir le bit de tête de la valeur
absolue Sz.

F.2.4.3.1.3 Décodage de la valeur absolue exacte

Après décodage de la catégorie de valeur absolue, les bits de plus faible poids de cette valeur absolue sont décodés par
poids décroissants. La procédure est représentée Figure F.24.

L'indice de contexte S est déterminé dans Decode_log2_Sz.

F.2.4.4 Relance du décodeur

Les marqueurs RSTm accolés aux données comprimées entre les intervalles de reprise ont une valeur sur deux octets qui
ne peut pas être générée par les procédures de codage. Ces séquences de deux octets peuvent donc être repérées sans
décodage, et utilisées pour resynchroniser le décodeur. Les marqueurs RSTm sont ainsi utilisables pour la reprise sur
erreur.

CCITT Rec. T.81 (1992 F) 117


ISO/CEI 10918-1 : 1993(F)

Decode_sign_of_V

SIGN = Decode(SS)

Oui Non
SIGN = 1?

S = SN S = SP

Fait

TISO1540-93/d092

Figure F.22 – Décodage du signe de V

Avant de lancer des procédures de reprise sur erreur, il faut détecter la condition d'erreur. Lors du décodage, des erreurs
peuvent se présenter en deux points:

a) le décodeur ne réussit pas à trouver le marqueur attendu au point où il attend une resynchronisation;

b) des données physiquement impossibles sont décodées. Par exemple le décodage d'une valeur absolue
dépassant la plage de valeurs permises par le modèle est très probable quand les données comprimées sont
entachées d'erreurs. Pour les décodeurs arithmétiques, il est extrêmement important de détecter cette
condition d'erreur, faute de quoi ces décodeurs risqueraient de passer dans un état où ils traiteraient les
données comprimées très lentement.

NOTE – Certaines erreurs n'entraînent pas de perte de synchronisation du décodeur. En outre, la reprise n'est pas
possible pour toutes les erreurs; par exemple, des erreurs dans les en-têtes risquent d'être catastrophiques. Toutefois, la
perte de synchronisation du décodeur résultant des deux conditions d'erreur indiquées ci-dessus se produit presque toujours
d'une façon permettant la reprise.

Pour se resynchroniser, le décodeur peut utiliser le compteur modulo 8 codant l'intervalle de reprise, contenu dans les
bits de plus faible poids du marqueur RSTm. Le décodeur peut en général rétablir sa synchronisationn en comparant la
valeur attendue de ce compteur associé à l'intervalle de reprise, à la valeur contenue dans le marqueur RSTm suivant
rencontré dans les données d'image comprimées. Il remplit alors les lignes manquantes dans les données de sortie en
appliquant une procédure de copie ou une autre procédure appropriée, et continue le décodage. Bien sûr, l'image
reconstruite sera en général fortement altérée dans au moins une partie de l'intervalle de reprise où l'erreur s'est produite.

F.2.5 Processus de décodage DCT séquentiel en codage de Huffman, avec précision de 12 bits

Ce processus est identique au processus DCT séquentiel défini pour une précision d'échantillon de 8 bits, étendu à quatre
tables de Huffman, tel que décrit en F.2.3, avec les modifications suivantes.

118 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Decode_log2_Sz

M=1

D = Decode(S)

Oui
D = 0?

Non

M=2
S = X1

D = Decode(S)

Oui
D = 0?

Non

M=4
S = X2

D = Decode(S)

Oui
D = 0?

Non

M = SLL M 1 M = SRL M 1
S =S + 1 Sz = M

Fait

TISO1550-93/d093

Figure F.23 – Procédure de détermination de la catégorie de valeur absolue

CCITT Rec. T.81 (1992 F) 119


ISO/CEI 10918-1 : 1993(F)

Decode_Sz_bits

S = S + 14

M = SRL M 1

Oui
M = 0?

Non

D = Decode(S) Fait

Oui
D = 0?

Non

Sz = M OR Sz
TISO1560-93/d094

Figure F.24 – Séquence décisionnelle de décodage de configuration binaire


de la valeur absolue

F.2.5.1 Structure de la table de décodage Huffman DC

La structure générale de la table de décodage Huffman DC est étendue comme décrit en F.1.5.1.

F.2.5.2 Structure de la table de décodage Huffman AC

La structure générale de la table de décodage Huffman AC est étendue comme décrit en F.1.5.2.

F.2.6 Processus de décodage DCT séquentiel en codage arithmétique, avec précision de 12 bits

Le processus est identique au processus DCT séquentiel pour une précision de 8 bits, sauf les changements de précision
du calcul de l'IDCT.

La structure de la procédure de décodage de F.2.4 est déjà définie pour une précision d'entrée de 12 bits.

120 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe G

Mode de fonctionnement basé DCT progressif


(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)

La présente annexe donne une spécification fonctionnelle des processus de codage suivants, pour le mode de
fonctionnement basé DCT progressif:
1) sélection spectrale uniquement, codage de Huffman, précision d'échantillon 8 bits;
2) sélection spectrale uniquement, codage arithmétique, précision d'échantillon 8 bits;
3) pleine progression, codage de Huffman, précision d'échantillon 8 bits;
4) pleine progression, codage arithmétique, précision d'échantillon 8 bits;
5) sélection spectrale uniquement, codage de Huffman, précision d'échantillon 12 bits;
6) sélection spectrale uniquement, codage arithmétique, précision d'échantillon 12 bits;
7) pleine progression, codage de Huffman, précision d'échantillon 12 bits;
8) pleine progression, codage arithmétique, précision d'échantillon 12 bits.
Pour chacun de ces modes, le processus de codage est spécifié en G.1 et le processus de décodage en G.2. Les
spécifications fonctionnelles sont présentées au moyen d'organigrammes spécifiques aux diverses procédures de ces
processus de codage.
NOTE – Dans la présente Spécification, il n'est imposé aucune obligation au codeur ou décodeur qui réalise un des
processus sus-nommés, quant à la mise en oeuvre des procédures de la façon exactement spécifiée par les organigrammes de la
présente annexe. Il est seulement nécessaire qu'un codeur ou un décodeur réalise la fonction spécifiée dans la présente annexe. Le
seul critère à considérer, pour un codeur ou un décodeur, en matière de conformité à la présente Spécification, est qu'il satisfasse les
conditions données à l'article 6 (pour les codeurs) ou à l'article 7 (pour les décodeurs), telles que déterminées par les tests de
conformité spécifiés dans la Partie 2.

Le nombre de tables de Huffman ou de tables décisionnelles arithmétiques qui peuvent être utilisées dans un même
balayage est de quatre.
Deux procédures progressives complémentaires sont définies, la sélection spectrale et la procédure par approximations
successives.
Dans la sélection spectrale, les coefficients DCT de chaque bloc sont segmentés en bandes de fréquence. Les bandes sont
codées par des balayages séparés.
Dans la procédure par approximations successives, les coefficients DCT sont divisés par une puissance de deux avant le
codage. Dans le décodeur, les coefficients sont multipliés par la même puissance de deux avant le calcul de l'IDCT. Lors
des balayages successifs, la précision des coefficients est augmentée d'un bit à chaque balayage, jusqu'à atteindre la
pleine précision.
Un codeur ou un décodeur mettant en oeuvre une pleine progression utilise la sélection spectrale dans les approximations
successives. La sélection spectrale seule est un sous-ensemble autorisé.
La Figure G.1 représente les processus progressifs, par sélection spectrale et approximations successives.

G.1 Processus de codage basés DCT progressifs


G.1.1 Procédures de contrôle et modèles de codage des processus basés DCT progressifs
G.1.1.1 Procédures de contrôle des codeurs basés DCT progressifs
Les procédures de contrôle du codage d'une image et de ses constituants – trame, balayage, intervalle de reprise et MCU
– sont données sur les Figures E.1 à E.5.
La structure de contrôle du codage d'une trame est la même que pour les procédures séquentielles. Il est toutefois
pratique de calculer la FDCT de l'ensemble complet des composantes d'une trame avant de traiter les balayages. Pour ce
mode de fonctionnement progressif, une mémoire-tampon assez grande pour stocker tous les coefficients DCT peut être
utilisée.
Le nombre de balayages est déterminé par la progression définie: il peut être beaucoup plus grand que le nombre de
composantes de la trame.
La procédure de codage d'une MCU (voir Figure E.5) appelle itérativement la procédure de codage d'une unité de
données. Pour les codeurs basés DCT, l'unité de données est le bloc 8 × 8 d'échantillons.

CCITT Rec. T.81 (1992 F) 121


ISO/CEI 10918-1 : 1993(F)

Blocs

2
1
0
Coefficients 1
DCT
Codage
62
63
76 10
MSB LSB

a) Composante d'image sous la forme de coefficients DCT quantifiés b) Codage séquentiel

Codage
0 0
1er
er balayage 7 0
1er
er balayage

1
2
Codage
1 Codage
2
2ee balayage 62
63
7654
MSB
2ee balayage

Codage Codage
3
4
5
3ee balayage
3
3ee balayage

Codage Codage
61
62
63
ième balayage
nième TISO1570-93/d095
0
(LSB)
6ee balayage

c) Codage progressif – Sélection spectrale d) Codage progressif – Approximations successives

Figure G.1 – Processus progressifs par sélection spectrale et par approximations successives

122 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Seule une partie de chaque bloc 8 × 8 est codée à chaque balayage, cette partie étant déterminée par les paramètres d'en-
tête de balayage Ss, Se, Ah et Al (voir B.2.3). Les procédures utilisées pour coder des parties de chaque bloc 8 × 8 sont
décrites dans la présente annexe. A noter toutefois, que lorsque ces procédures sont identiques à celles utilisées dans le
mode de fonctionnement basé DCT séquentiel, il est simplement fait référence aux procédures séquentielles.

G.1.1.1.1 Contrôle de la sélection spectrale

En sélection spectrale, la séquence en zigzag des coefficients DCT est segmentée en bandes. Une bande est définie dans
l'en-tête de balayage, en spécifiant ses indices de début et de fin dans la séquence en zigzag. Une bande est codée dans
un balayage donné de la progression. Les coefficients DC sont toujours codés séparément des coefficients AC et seuls
les balayages codant des coefficients DC peuvent inclure des blocs entrelacés de plusieurs composantes. Tous les autres
balayages doivent avoir une seule composante. A l'exception des premiers balayages DC des composantes, la séquence
des bandes définie dans les balayages ne suit pas nécessairement l'ordre de la séquence en zigzag. Pour chaque
composante, un premier balayage DC doit précéder tout balayage AC.

G.1.1.1.2 Contrôle des approximations successives

Lorsque les approximations successives sont utilisées, la précision des coefficients DCT est réduite par la transformation
point (voir A.4) définie dans l'en-tête de balayage (voir B.2.3). Al, paramètre bas de position binaire en approximations
successives, spécifie la transformation point effective. Si des balayages ont déjà été effectués pour la bande, les quatre
bits de Ah, paramètre haut de position binaire en approximations successives, contiennent la valeur de la transformation
point utilisée dans les balayages précédents. S'il n'y a pas eu de balayage précédent pour la bande, Ah est nul.

Après le premier balayage, chaque balayage suivant améliore progressivement, pour une bande donnée, la précision des
coefficients, d'un bit, jusqu'à atteindre la pleine précision.

G.1.1.2 Modèles de codage des codeurs basés DCT progressifs

Si le codage par approximations successives est utilisé, la précision des coefficients DCT est réduite par la
transformation (voir A.4) définie dans l'en-tête de balayage (voir B.2.3). Ces modèles s'appliquent également aux
codeurs basés DCT progressifs, mais avec les modifications suivantes.

G.1.1.2.1 Modèle de codage progressif des coefficients DC

Si Al n'est pas nul, la transformation point doit être utilisée pour réduire la précision des coefficients DC. Si Ah est nul,
les valeurs des coefficients (modifiées par la transformation point) doivent être codées, en utilisant les procédures
décrites dans l'Annexe F. Si Ah n'est pas nul, le bit de plus faible poids des coefficients DC (modifiés par la
transformation point) doit être codé en utilisant la procédure décrite dans la présente annexe.

G.1.1.2.2 Modèle de codage progressif des coefficients AC

Si Al n'est pas nul, la transformation point doit être appliquée aux coefficients AC pour réduire leur précision. Si Ah est
nul, les valeurs des coefficients (modifiées par la transformation point) doivent être codées en utilisant les procédures
décrites dans l'Annexe F, modifiées comme décrit dans la présente annexe. Si Ah n'est pas nul, la précision des
coefficients doit être améliorée en utilisant les procédures décrites dans la présente annexe.

G.1.2 Procédures de codage progressif avec codage de Huffman

G.1.2.1 Codage progressif des coefficients DC avec codage de Huffman

Le premier balayage d'une composante donnée code les valeurs des coefficients DC, en utilisant les procédures décrites
en F.1.2.1. Si le paramètre Al de position binaire en approximations successives n'est pas nul, la précision des valeurs
des coefficients doit être réduite, avant le codage, par la transformation point décrite dans l'Annexe A.

Lors des balayages suivants des approximations successives, les bits de plus faible poids sont accolés au train binaire
comprimé, sans compression ni modification (voir G.1.2.3), sauf le bourrage d'octets.

G.1.2.2 Codage progressif des coefficients AC avec codage de Huffman

En sélection spectrale et dans le premier balayage des approximations successives d'une composante, le modèle de
codage des coefficients AC est similaire à celui utilisé par les procédures séquentielles. Toutefois, les tables de codage
de Huffman sont étendues pour inclure le codage des plages EOB (Fin de bande). Voir le Tableau G.1.

CCITT Rec. T.81 (1992 F) 123


ISO/CEI 10918-1 : 1993(F)

Tableau G.1 – Extensions de longueur de plage des codes EOBn

Code EOBn Longueur de plage

EOB0 1
EOB1 2,3
EOB2 4...7
EOB3 8...15
EOB4 16...31
EOB5 32...63
EOB6 64...127
EOB7 128...255
EOB8 256...511
EOB9 512...1 023
EOB10 1 024...2 047
EOB11 2 048...4 095
EOB12 4 096...8 191
EOB13 8 192...16 383
EOB14 16 384...32 767

La structure des plages EOB permet le codage efficace des blocs ayant uniquement des coefficients nuls. Une plage EOB
de longueur 5 signifie que le bloc courant et les quatre blocs suivants ont une fin de bande où ne figure aucun coefficient
non nul. La longueur de plage EOB n'est limitée que par l'intervalle de reprise.

L'extension de la table de codage est représentée à la Figure G.2.

SSSS
0 1 2 . . . 13 14

0 EOB0
1 EOB1
. .
RRRR . . VALEURS COMPOSITES
. .
14 EOB14
15 ZRL

TISO1580-93/d096

Figure G.2 – Table bidimentionnelle des valeurs composites


utilisées pour le codage de Huffman

La séquence de codes EOBn est définie comme suit: chaque code EOBn est suivi d'un champ d'extension similaire au
champ d'extension des amplitudes des coefficients (mais avec seulement des nombres positifs). Le nombre de bits
accolés au code EOBn est le nombre minimal requis pour spécifier la longueur de plage.

Si une plage EOB est plus longue que 32 767, elle est codée comme une séquence de plages EOB de longueur 32 767
suivie d'une plage EOB finale suffisante pour compléter la plage.

Au début de chaque intervalle de reprise, le compteur de plages EOB, EOBRUN, est mis à zéro. A la fin de chaque
intervalle de reprise toute plage EOB restante est codée.

Les Figures G.3, G.4, G.5 et G.6 donnent un exemple de procédure de codage de Huffman pour les coefficients AC en
sélection spectrale et du premier balayage en approximations successives.

124 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Encode_AC_
coefficients_SS

K = Ss – 1
R=0

K=K+1

Non Oui
ZZ(K) = 0?

Encode_EOBRUN R=R+1

Non
K = Se?
Oui
R < 16?
Oui
Non
EOBRUN =
EOBRUN + 1
Encode_ZRL

Non
EOBRUN = X’7FFF’?

Oui
Encode_R_ZZ(K)
Encode_EOBRUN

Non Oui
K = Se?

Fait

TISO1590-93/d097

Figure G.3 – Procédure de codage progressif des coefficients AC


avec codage de Huffman

CCITT Rec. T.81 (1992 F) 125


ISO/CEI 10918-1 : 1993(F)

Figure G.3, Ss est le début de la sélection spectrale, Se la fin de la sélection spectrale, K l'indice dans la liste des
coefficients stockés dans la séquence en zigzag ZZ, R la longueur de plage de coefficients nuls et EOBRUN la longueur
de plage d'EOB. EOBRUN est mis à zéro au début de chaque intervalle de reprise.
Si le paramètre de l'en-tête de balayage Al [position binaire en approximations successives (bas)] n'est pas nul, les
valeurs ZZ(K) des coefficients DCT (Figure G.3 et suivantes dans la présente annexe) doivent être remplacées par leurs
valeurs après transformation point ZZ’(K), où ZZ’(K) est définie par:

ZZ ( K )x
ZZ ′ ( K ) =
2 Al

EOBSIZE renvoie la taille du champ d'extension EOB, son entrée étant la longueur de plage d'EOB. La procédure
CSIZE met en correspondance un coefficient AC avec la valeur SSSS définie dans les paragraphes sur le codage
séquentiel (F.1.1 et F.1.3).

Encode_EOBRUN

Oui
EOBRUN = 0?

Non

SSSS = EOBSIZE(EOBRUN)
I = SSSS × 16
Accoler EHUFSI(I) bits
de EHUFCO(I)
Accoler SSSS bits de faible
poids de EOBRUN
EOBRUN = 0

Fait

TISO1600-93/d098

Figure G.4 – Codage progressif des coefficients AC non nuls

Encode_ZRL

Accoler EHUFSI(X’F0’) bits


de EHUFCO(X’F0’)
R = R – 16

Fait

TISO1610-93/d099

Figure G.5 – Codage de la plage de coefficients nuls

126 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Encode_R_ZZ(K)

SSSS = CSIZE(ZZ(K))
I = (16 × R) + SSSS
Accoler EHUFSI(I) bits
de EHUFCO(I)

Oui
ZZ(K) < 0?

Non ZZ(K) = ZZ(K) – 1

Accoler SSSS bits de


faible poids de ZZ(K)
R=0

Fait

TISO1620-93/d100

Figure G.6 – Codage de la plage nulle et du coefficient non nul

G.1.2.3 Modèle de codage des balayages suivant le premier, en approximations successives

La structure du codage de Huffman des balayages suivant le premier, en approximations successives, pour une
composante donnée, est similaire à la structure du codage du premier balayage de cette composante.

La structure de la table de codage AC est identique à la structure décrite en G.1.2.2. Chaque coefficient non nul ayant
subi une transformation point, d'historique nul (c'est-à-dire ayant une valeur ± 1 et n'ayant donc pas été codé dans un
précédent balayage) est défini par une valeur composite 8 bits valeur absolue/longueur de plage, de la forme:

RRRRSSSS

Les quatre bits de plus fort poids, RRRR, donnent le nombre de coefficients nuls situés entre le coefficient courant et le
coefficient précédemment codé (ou le bit de début de bande). Les coefficients d'historique non nul (valeur non nulle
codée dans un balayage précédent) sont sautés lors du comptage des coefficients nuls. Les quatre bits de plus faible
poids, SSSS, donnent la catégorie de valeur absolue des coefficients non nuls; pour une composante donnée, la valeur de
SSSS peut seulement être 1.

La valeur composite valeur absolue/longueur de plage est codée Huffman, chaque code de Huffman étant suivi de bits
additionnels:

a) un bit code le signe du nouveau coefficient non nul: 0 pour un signe négatif; 1 pour un signe positif;

b) pour chaque coefficient d'historique non nul, un bit est utilisé pour coder la correction. 0 signifie «pas de
correction», 1 signifie qu'il faut ajouter une unité à la valeur absolue décodée (mise à l'échelle) du
coefficient.

CCITT Rec. T.81 (1992 F) 127


ISO/CEI 10918-1 : 1993(F)

Les coefficients non nuls d'historique nul sont codés en un code composite de la forme:

HUFCO(RRRRSSSS) + bit additionnel (règle a) + bits de correction (règle b)

En outre, chaque fois que des plages de zéros sont codées avec des codes ZRL ou EOBn, des bits de correction sont
ajoutés pour les coefficients d'historique non nul dans la plage de zéros, conformément à la règle b ci-dessus.

Pour la version codée Huffman de Encode_AC_Coefficients_SA, l'EOB est défini comme la position dans la bande, du
dernier coefficient ayant subi une transformation point, de valeur absolue 1. S'il n'existe aucun coefficient de valeur
absolue 1, l'EOB est par définition zéro.
NOTE – La définition de l'EOB est différente pour les procédures de codage de Huffman et de codage arithmétique.

Dans les Figures G.7 et G.8, BE est le nombre de bits de correction en mémoire tampon, au début du codage du bloc. BE
est initialisé à zéro au début de chaque intervalle de reprise. A la fin de chaque intervalle de reprise, tous les bits restant
dans la mémoire tampon sont accolés au train binaire, après le dernier code de Huffman EOBn et les bits associés
accolés.

Dans les Figures G.7 et G.9, BR est le nombre de bits de correction en mémoire tampon, accolés au train binaire selon la
règle b. BR est mis à zéro au début de chaque procédure Encode_AC_Coefficients_SA. A la fin de chaque intervalle de
reprise, les éventuels bits restant dans la mémoire tampon sont accolés au train binaire, après le dernier code de Huffman
et les bits associés accolés.

G.1.3 Procédures de codage progressif avec codage arithmétique

G.1.3.1 Codage progressif des coefficients DC avec codage arithmétique

Le premier balayage d'une composante donnée doit coder des valeurs des coefficients DC en utilisant les procédures
décrites en F.1.4.1. Si le paramètre de position binaire en approximations successives n'est pas nul, la précision des
valeurs des coefficients doit être réduite avant le balayage, par la transformation point décrite dans l'Annexe A.

Dans les balayages suivants des approximations successives, les bits de plus faible poids doivent être codés comme des
décisions binaires en utilisant une estimation de probabilité fixe de 0,5 (Qe = X’5A1D’, MPS = 0).

G.1.3.2 Codage progressif des coefficients AC avec codage arithmétique

A l'exception de la transformation point des coefficients DCT et du regroupement des coefficients en bandes, le ou les
premiers balayages des approximations successives sont identiques à la procédure de codage séquentiel, décrite en F.1.4.
Si Kmin est égal à Ss, indice du premier indice de coefficient AC de la bande, l'organigramme de la Figure F.5
s'applique. La décision EOB de cette figure se réfère à la fin de bande et non à la fin de bloc. Pour la version à codage
arithmétique de la procédure Encode_AC_Coefficients_SA (et de toutes les autres procédures de codage des coeffi-
cients AC), l'EOB est par définition la position qui suit le dernier coefficient non nul de la bande.
NOTE – La définition de l'EOB est différente pour les procédures de codage de Huffman et de codage arithmétique.

Le modèle statistique décrit en F.1.4 est également valable. Pour ce modèle, la valeur par défaut de Kx est 5. D'autres
valeurs de Kx peuvent être spécifiées en utilisant le code du marqueur DAC (Annexe B). Le calcul suivant de Kx s'est
avéré donner de bons résultats pour les échantillons de précision 8 bits:

Kx = Kmin + SRL (8 + Se – Kmin) 4

Cette expression se réduit à la valeur par défaut Kx = 5 lorsque la bande va de l'indice 1 à l'indice 63.

G.1.3.3 Modèle de codage des balayages suivant le premier, en approximations successives

La procédure «Encode_AC_Coefficient_SA» de la Figure G.10, augmente d'un bit la précision des valeurs des
coefficients AC de la bande.

Comme dans le premier balayage des approximations successives d'une composante, une décision EOB est codée au
début de la bande et après chaque coefficient non nul.

128 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Encode_AC_
coefficients_SA

K = Ss – 1
R=0
BR = 0

K=K+1

Non Oui
ZZ(K) = 0?

Oui
R > 15?

Encode_EOBRUN
Non Non Append_BE_bits
K ≥ EOB? Encode_ZRL
Append_BR_bits

Oui
Non
|ZZ(K)| = 1?
Accoler les bits de
faible poids de ZZ(K)
Oui aux bits en R=R+1
mémoire tampon
Encode_EOBRUN BR = BR + 1
Append_BE_bits
Encode_R_ZZ(K)
Append_BR_bits

Non
K = Se?
Non
K = Se?
Oui

Oui EOBRUN =
EOBRUN + 1
BE = BE + BR

Non
EOBRUN = X’7FFF’?

Oui

Encode_EOBRUN
Append_BE_bits

TISO1630-93/d101

Fait

Figure G.7 – Codage par approximations successives des coefficients AC,


en codage de Huffman

CCITT Rec. T.81 (1992 F) 129


ISO/CEI 10918-1 : 1993(F)

Append_BE_bits

Oui
BE = 0?

Non

Accoler BE bits en mémoire


tampon au train binaire
BE = 0

Fait

TISO1640-93/d102

Figure G.8 – Transfert des bits BE de la mémoire tampon


dans le train binaire

Append_BR_bits

Oui
BR = 0?

Non

Accoler BR bits en mémoire


tampon au train binaire
BR = 0

Fait

TISO1650-93/d103

Figure G.9 – Transfert des bits BR de la mémoire tampon


dans le train binaire

130 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

Toutefois, comme l'indice de fin de bande du précédent balayage des approximations successives d'une composante
donnée, EOBx, est connu d'après les données codées dans le précédent balayage pour cette composante, cette décision
est sautée quand l'indice courant K, est inférieur à EOBx. Comme dans le ou les premier(s) balayage(s), la décision EOB
est également sautée lorsque le dernier coefficient de la bande est non nul. La décision ZZ(K) = 0 décode des plages de
coefficients nuls. Si le décodeur se trouve à ce point de la procédure, au moins un coefficient non nul reste dans la bande
du bloc en cours de codage. Si ZZ(K) est non nul, la procédure de la Figure G.11 est appliquée pour coder la valeur.

Les indices de contexte des Figures G.10 et G.11 sont définis dans le Tableau G.2 (voir G.1.3.3.1). Les signes des
coefficients de valeur absolue 1 sont codés avec une valeur de probabilité fixe de 0,5 (Qe = X’5A1D’, MPS = 0).

G.1.3.3.1 Modèle statistique de codage des balayages suivant le premier, en approximations successives

Comme indiqué dans le Tableau G.2, chaque zone statistique des balayages suivant le premier, en approximations
successives des coefficients AC, consiste en un ensemble de 189 registres statistiques consécutifs. Les signes des
coefficients de valeur absolue 1 sont codés avec une probabilité fixe de valeur 0,5 (Qe = X’5A1D’, MPS = 0).

G.2 Décodage progressif de la DCT

La description du calcul de l'IDCT et la procédure de déquantification données en A.3.3 et A.3.4 s'appliquent au mode
progressif.

Le processus de décodage progressif doit être capable de décomprimer des données d'image comprimées qui nécessitent,
dans un même balayage, jusqu'à quatre ensembles de tables de Huffman ou de tables décisionnelles utilisées par le
codeur arithmétique.

Pour éviter les répétitions, les organigrammes détaillés du mode progressif ne sont pas représentés à nouveau. Le
fonctionnement du décodeur est défini en inversant la fonction de chaque procédure décrite dans l'organigramme du
codeur, et en exécutant ces procédures en ordre inverse.

CCITT Rec. T.81 (1992 F) 131


ISO/CEI 10918-1 : 1993(F)

Encode_AC_
coefficients_SA

K = Kmin

Oui
K < EOBx?

Non

Oui
K = EOB? Code_1(SE)

Non

Code_0(SE)

K=K+1 K=K+1

Oui
ZZ(K) = 0? Code_0(S0)

Non

CodeSA_ZZ(K)

Non Oui
K = Se?

Fait

TISO1660-93/d104

Figure G.10 – Balayages suivant le premier, en aproximations successives, pour le


codage des coefficients AC, en codage arithmétique

132 CCITT Rec. T.81 (1992 F)


ISO/CEI 10918-1 : 1993(F)

CodeSA_ZZ(K)

Oui Non
T = LSB ZZ(K) | ZZ(K) | > 1? Code_1(S0)

Non Oui Non Oui


T = 1? ZZ(K) > 0?

Code_0(SC) Code_1(SC) Code_1(SS) Code_0(SS)

TISO1670-93/d105

Fait

Figure G.11 – Codage des coefficients non nuls des balayages suivant le premier,
en approximations successives

Tableau G.2 – Modèle statistique des balayages subséquents du codage


par approximations successives des coefficients AC

Indice de contexte Codage AC Décision de codage

SE 3 × (K–1) K = EOB

S0 SE + 1 V=0

SS Estimation fixe Signe

SC S0 + 1 LSB ZZ(K) = 1

CCITT Rec. T.81 (1992 F) 133


ISO/CEI 10918-1 : 1993(F)

Annexe H

Mode de fonctionnement sans perte


(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)
ISO/CEI 10918-1 : 1993(F)

Rec. T.81 du CCITT (1992 F)

La présente annexe donne une spécification fonctionnelle des processus de codage suivants du mode de fonctionnement
sans perte:

1) processus sans perte avec codage de Huffman;

2) processus sans perte avec codage arithmétique.

Pour chacun, le processus de codage est spécifié en H.1 et le processus de décodage en H.2. Les spécifications
fonctionnelles sont données par les procédures spécifiques à ces processus de codage.
NOTE – Dans la présente Spécification, il n'est imposé aucune obligation au codeur ou décodeur qui réalise un des
processus susnommés, quant à la mise en oeuvre des procédures de la façon exactement spécifiée par les organigrammes de la présente
annexe. Il est seulement nécessaire qu'un codeur ou un décodeur réalise la fonction spécifiée dans la présente annexe. Le seul critère à
considérer, pour un codeur ou un décodeur, en matière de conformité à la présente Spécification, est qu'il satisfasse les conditions
données à l'article 6 (pour les codeurs) ou à l'article 7 (pour les décodeurs), telles que déterminées par les tests de conformité spécifiés
dans la Partie 2.

Les processus qui assurent le codage et le décodage séquentiels sans perte ne sont pas basés DCT. Sont utilisés, des
processus spatiaux basés sur le modèle de codage développé pour les coefficients DC de la DCT. Ce modèle est étendu
par incorporation d'un ensemble de prédicteurs sélectables uni et bidimensionnels. Pour les données entrelacées
verticalement, l'ordre des échantillons du prédicteur horizontal unidimensionnel est différent de celui utilisé pour les
processus basés DCT.

Le codage de Huffman ou le codage entropique arithmétique peuvent être employés pour ces processus de codage et de
décodage sans perte. La structure de la table de codage de Huffman est étendue pour permettre une précision de 16 bits
des données d'entrée. Le modèle statistique du codeur arithmétique est étendu à une forme bidimensionnnelle.

H.1 Processus de codage sans perte

H.1.1 Procédures de contrôle du codage sans perte

Le paragraphe E.1 décrit les procédures de contrôle du codeur. Dans l'application de ces procédures au codeur sans
perte, l'unité de données est l'échantillon.

La précision des données d'entrée peut aller de 2 à 16 bits par échantillon. Si la voie d'accès d'entrée a une précision
différente de celle des données d'entrée, les données doivent être toujours calées sur les bits de plus faible poids de la
voie d'accès d'entrée. Les données d'entrée sont représentées comme des entiers non signés et ne subissent pas de
décalage de niveau avant codage.

Lors de la réinitialisation du codeur dans la procédure de contrôle de l'intervalle de reprise (voir E.1.4), la prédiction est
réinitialisée à une valeur par défaut. En codage arithmétique, les statistiques sont également réinitialisées.

Pour les processus sans perte, l'intervalle de reprise doit être un multiple entier du nombre de MCU d'une rangée.

H.1.2 Modèle de codage sans perte

Le modèle de codage développé pour les coefficients DC de la DCT est étendu pour permettre une sélection à partir d'un
ensemble de sept prédicteurs uni et bidimensionnels. Le prédicteur est sélectionné dans l'en-tête de balayage (voir
l'Annexe B). Le même prédicteur est utilisé pour toutes les composantes du balayage. Chaque composante du balayage
est modélisée indépendamment, en utilisant les prédictions dérivées d'échantillons voisins, dans cette composante.

H.1.2.1 Prédiction

La Figure H.1 représente la relation entre les positions (a, b, c) des échantillons voisins reconstruits utilisés pour la
prédiction, et la position de l'échantillon x, en cours de codage.

134 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

c b

a x

TISO1680-93/d106

Figure H.1 – Relation entre un échantillon


et ses échantillons de prédiction

Par définition, Px est la prédiction, et Ra, Rb et Rc les échantillons reconstruits immédiatement à gauche, au-dessus et en
diagonale à gauche de l'échantillon courant. Les prédicteurs autorisés, dont l'un est sélectionné dans l'en-tête de trame,
sont indiqués dans le Tableau H.1.

Tableau H.1 – Prédicteurs pour codage sans perte

Valeur de sélection Prédiction

0 Aucune prédiction (voir Annexe J)

1 Px = Ra

2 Px = Rb

3 Px = Rc

4 Px = Ra + Rb – Rc

5 Px = Ra + ((Rb – Rc)/2)a)

6 Px = Rb + ((Ra – Rc)/2)a)

7 Px = (Ra + Rb)/2
a) Opération de décalage arithmétique à droite

La valeur de sélection 0 peut seulement être utilisée pour le codage différentiel en mode de fonctionnement hiérarchique.
Les valeurs de sélection 1, 2 et 3 sont des prédicteurs unidimensionnels, et les valeurs 4, 5, 6, 7 sont les prédicteurs
bidimensionnels.

Le prédicteur horizontal unidimensionnel (échantillon de prédiction Ra) est utilisé pour la première ligne d'échantillons
au début du balayage et au début de chaque intervalle de reprise. Le prédicteur sélectionné est utilisé pour toutes les
autres lignes. L'échantillon de la ligne de dessus (échantillon de prédiction Rb) est utilisé au début de chaque ligne, sauf
la première. Au début de la première ligne et au début de chaque intervalle de reprise, la valeur de prédiction utilisée
est 2P – 1, P étant la précision d'entrée.

Si le paramètre de transformation point (voir A.4) est non nul, la valeur de prédiction au début des premières lignes et au
début de chaque intervalle de reprise est 2P – Pt – 1, Pt étant la valeur du paramètre de transformation point.

Chaque prédiction est calculée avec une arithmétique entière pleine précision, sans troncature des bits dépassant la limite
supérieure ou inférieure de la précision d'entrée. Par exemple, si Ra et Rb sont des entiers 16 bits, la somme est un entier
17 bits. Après division de la somme par deux, (prédicteur 7), la précision est un entier 16 bits.

Pour simplifier la réalisation, la division par deux dans les sélections de prédiction 5 et 6 du Tableau H.1 est effectuée
par un décalage arithmétique à droite en valeur entière.

La différence entre la valeur de prédiction et l'entrée est calculée modulo 216. La différence est décodée dans le décodeur
et ajoutée, modulo 216, à la prédiction.

Rec. T.81 du CCITT (1992 F) 135


ISO/CEI 10918-1 : 1993(F)

H.1.2.2 Codage de Huffman de la différence modulo

Les procédures de codage de Huffman définies dans l'Annexe F pour le codage des coefficients DC sont utilisées pour
coder les différences modulo 216. Une entrée additionnelle est ajoutée aux tables de codage DC des Tableaux F.1 et F.6.
Aucun bit supplémentaire n'est codé après SSSS = 16. Voir le Tableau H.2.

Tableau H.2 – Catégories de différence pour le codage


de Huffman sans perte

SSSS Valeurs de la différence


10 0
11 –1,1
12 –3,–2,2,3
13 –7...–4,4...7
14 –15...–8,8...15
15 –31...–16,16...31
16 –63...–32,32...63
17 –127...–64,64...127
18 –255...–128,128...255
19 –511...–256,256...511
10 –1 023...–512,512...1 023
11 –2 047...–1 024,1 024...2 047
12 –4 095...–2 048,2 048...4 095
13 –8 191...–4 096,4 096...8 191
14 –16 383...–8 192,8 192...16 383
15 –32 767...–16 384,16 384...32 767
16 32 768

H.1.2.3 Codage arithmétique de la différence modulo

Le modèle statistique défini pour le modèle de codage arithmétique des coefficients DC (voir F.1.4.4.1) est généralisé à
une forme bidimensionnelle, dans laquelle les différences codées pour l'échantillon de gauche et pour la ligne du dessus
sont utilisées comme valeurs décisionnelles.

H.1.2.3.1 Modèle statistique bidimensionnel

Les décisions binaires sont conditionnées par les différences codées pour les échantillons voisins, immédiatement
supérieur et immédiatement à gauche de la même composante. Comme pour le codage des coefficients DC, cinq classes
de différences sont définies: nulle (0), petite positive (+S), petite négative (–S), grande positive (+L) et grande
négative (–L). Les deux catégories de différence indépendantes se combinent pour donner 25 états décisionnels. La
Figure H.2 représente le tableau bidimensionnel des indices décisionnels. Des estimations de probabilité pour quatre
décisions binaires sont conservées pour chacun des 25 états décisionnels.

Au début du balayage et de chaque intervalle de reprise, les valeurs décisionnelles dérivées de la ligne du dessus sont
mises à zéro pour la première ligne de chaque composante. Au début de chaque ligne, la différence avec la valeur de
gauche est mise à zéro lors du calcul des valeurs décisionnelles.

136 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Différence avec l'échantillon


du dessus (position b)

0 +S –S +L –L

0 0 4 8 12 16

Différence avec +S 20 24 28 32 36
l'échantillon de
gauche (position a) –S 40 44 48 52 56

+L 60 64 68 72 76

–L 80 84 88 92 96

TISO1690-93/d107

Figure H.2 – Tableau décisionnel 5 × 5 du modèle statistique bidimensionnel

H.1.2.3.2 Affectation des registres statistiques à l'arbre des décisions binaires DC

En codage sans perte, chaque zone statistique consiste en un ensemble de 158 registres statistiques consécutifs. La valeur
de S0 est donnée par «L_Context(Da,Db)», qui fournit une valeur de 0, 4, ... 92 ou 96, selon les catégories de différence
de Da et Db (voir H.1.2.3.1). La valeur S0 fournie par «L_Context(Da,Db)» est une de celles du tableau de la
Figure H.2.

Les 58 autres registres consistent en deux ensembles de 29 bits, X1, ... X15, M2, ... M15, utilisés pour coder les
décisions relatives à la catégorie de valeur absolue et les bits de valeur absolue. La valeur de X1 est donnée par
X1_Content(Db), qui donne une valeur de 100 quand Db appartient aux catégories de différence nulle, petite positive ou
petite négative, et une valeur de 129 quand Db appartient aux catégories grande positive ou grande négative.

Les affectations des registres statistiques à l'arbre de décisions binaires utilisé pour le codage de la différence sont
données dans le Tableau H.3.

Tableau H.3 – Modèle statistique pour le codage sans perte

Indice de contexte Valeur Décision de codage


S0 L_Context(Da,Db) V=0
SS S0 + 1 Signe
SP S0 + 2 Sz < 1 si V > 0
SN S0 + 3 Sz < 1 si V < 0
X1 X1_Context(Db) Sz < 2
X2 X1 + 1 Sz < 4
X3 X1 + 2 Sz < 8
. . .
. . .
X15 X1 + 14 Sz < 215
M2 X2 + 14 Bits de valeur absolue si Sz < 4
M3 X3 + 14 Bits de valeur absolue si Sz < 8
. . .
. . .
M15 X15 + 14 Bits de valeur absolue si Sz < 215

Rec. T.81 du CCITT (1992 F) 137


ISO/CEI 10918-1 : 1993(F)

H.1.2.3.3 Limites par défaut des valeurs décisionnelles


Les paramètres L et U de détermination des limites des catégories décisionnelles ont les valeurs par défaut L = 0
et U = 1. D'autres limites peuvent être définies à l'aide du segment marqueur DAC (définition de valeurs décisionnelles
pour le codage arithmétique), comme décrit dans l'Annexe B.

H.1.2.3.4 Conditions initiales du modèle statistique


Au début d'un balayage et à chaque reprise, tous les registres statistiques sont réinitialisés à la valeur par défaut standard
indiquée dans l'Annexe D.

H.2 Processus de décodage sans perte


Les décodeurs sans perte peuvent utiliser le décodage de Huffman ou le décodage arithmétique. Ils doivent être capables
d'utiliser jusqu'à quatre tables dans un même balayage. Les décodeurs sans perte doivent être capables de décoder des
données d'image source pour toute précision d'entrée de 2 à 16 bits par échantillon.

H.2.1 Procédures de contrôle du décodeur sans perte


Le paragraphe E.2 indique les procédures de contrôle du décodeur. Dans l'application de ces procédures au décodeur
sans perte, l'unité de données est l'échantillon.
Quand le décodeur est réinitialisé dans la procédure de contrôle de l'intervalle de reprise (voir E.2.4), la prédiction est
remise à la même valeur que celle utilisée dans le codeur (voir H.1.2.1). Si le codage arithmétique est utilisé, les registres
statistiques sont également réinitialisés.
Des restrictions s'appliquant à l'intervalle de reprise sont spécifiées en H.1.1.

H.2.2 Modèle de codage pour le décodage sans perte


Les calculs de prédicteurs définis en H.1.2 s'appliquent également aux processus de décodage sans perte.
Les décodeurs sans perte décodent les différences, et les ajoutent, modulo 216, aux prédictions pour créer la sortie. Les
décodeurs sans perte doivent être capables d'interpréter le paramètre Al de transformation point et, s'il n'est pas nul, de
multiplier la sortie du décodeur sans perte par 2Pt.
Pour éviter les répétitions, les organigrammes détaillés des procédures de décodage sans perte ne sont pas représentés.

138 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe J

Mode de fonctionnement hiérarchique


(Cette annexe fait partie intégrante de la présente Recommandation | Norme internationale)

La présente annexe donne une spécification fonctionnelle des processus de codage pour le mode de fonctionnement
hiérarchique.

En mode de fonctionnement hiérarchique, chaque composante est codée ou décodée en une trame non différentielle, qui
peut être suivie d'une séquence de trames différentielles. Une trame non différentielle doit être codée ou décodée selon
les procédures définies dans les Annexes F, G et H. Les procédures relatives aux trames différentielles sont définies dans
la présente annexe.

Le processus de codage d'un codeur hiérarchique contenant des processus basés DCT est, par définition, le processus de
numéro le plus élevé dans le Tableau J.1, utilisé pour coder toute trame basée DCT non différentielle ou basée DCT
différentielle dans le format de données d'image comprimées. Le processus de codage d'un codeur hiérarchique
contenant des processus sans perte est, par définition, le processus utilisé pour les trames non différentielles.

Tableau J.1 – Processus de codage en mode hiérarchique

Processus Codage de la trame non différentielle

11 DCT séquentiel étendu, Huffman, 8 bits Annexe F, processus 2


12 DCT séquentiel étendu, arithmétique, 8 bits Annexe F, processus 3
13 DCT séquentiel étendu, Huffman, 12 bits Annexe F, processus 4
14 DCT séquentiel étendu, arithmétique, 12 bits Annexe F, processus 5
15 Sélection spectrale uniquement, Huffman, 8 bits Annexe G, processus 1
16 Sélection spectrale uniquement, arithmétique, 8 bits Annexe G, processus 2
17 Pleine progression, Huffman, 8 bits Annexe G, processus 3
18 Pleine progression, arithmétique, 8 bits Annexe G, processus 4
19 Sélection spectrale uniquement, Huffman, 12 bits Annexe G, processus 5
10 Sélection spectrale uniquement, arithmétique, 12 bits Annexe G, processus 6
11 Pleine progression, Huffman, 12 bits Annexe G, processus 7
12 Pleine progression, arithmétique, 12 bits Annexe G, processus 8
13 Sans perte, Huffman, 2 à 16 bits Annexe H, processus 1
14 Sans perte, arithmétique, 2 à 16 bits Annexe H, processus 2

La syntaxe du mode séquentiel de base stipule la présence d'un segment marqueur DHP avant la ou les trames non
différentielles. Des segments marqueurs EXP et des trames peuvent suivre la trame non différentielle initiale. La
structure de trame est identique en mode hiérarchique et en mode non hiérarchique.

Les trames non différentielles d'une image doivent toutes être codées, soit par des processus basés DCT, soit par des
processus sans perte. Toutes les trames d'une image doivent utiliser la même procédure de codage entropique, soit de
Huffman, soit arithmétique – à l'exception des trames non différentielles codées par le processus de base, qui peuvent se
présenter dans une image incluant des trames codées par le processus de codage arithmétique.

Si les trames non différentielles utilisent des processus basés DCT, toutes les trames différentielles, sauf la trame finale
d'une composante, doivent utiliser des processus basés DCT. La trame différentielle finale de chaque composante peut
utiliser le processus sans perte différentiel.

Si les trames non différentielles utilisent des processus sans perte, toutes les trames différentielles doivent utiliser des
processus sans perte.

Pour chacun des processus indiqués dans le Tableau J.1, les processus de codage sont spécifiés en J.1 et les processus de
décodage en J.2.

Rec. T.81 du CCITT (1992 F) 139


ISO/CEI 10918-1 : 1993(F)

NOTE – Dans la présente Spécification, il n'est imposé aucune obligation au codeur ou décodeur qui réalise un des
processus susnommés, quant à la mise en oeuvre des procédures de la façon exactement spécifiée par les organigrammes de la présente
annexe. Il est seulement nécessaire qu'un codeur ou un décodeur réalise la fonction spécifiée dans la présente annexe. Le seul critère à
considérer, pour un codeur ou un décodeur, en matière de conformité à la présente Spécification, est qu'il satisfasse les conditions
données à l'article 6 (pour les codeurs) ou à l'article 7 (pour les décodeurs), telles que déterminées par les tests de conformité spécifiés
dans la Partie 2.

Dans le mode d'exploitation hiérarchique, chaque composante est codée ou décodée dans une trame non différentielle
suivie par une séquence de trames différentielles. Une trame non différentielle utilisera les procédures définies aux
Annexes F, G et H. Les procédures relatives aux trames différentielles sont définies dans la présente annexe.

J.1 Codage hiérarchique

J.1.1 Procédures de contrôle hiérarchique du codage d'une image

La structure de contrôle du codage d'une image en mode hiérarchique est donnée Figure J.1.

Sur la Figure J.1, les procédures entre crochets doivent être exécutées chaque fois que la séquence de codage
hiérarchique utilisée le requiert.

En mode hiérarchique, le segment marqueur de définition de processus hiérarchique (DHP) doit être placé, dans les
données d'image comprimées, avant le premier début de trame. Le segment DHP sert à indiquer la taille des composantes
de l'image complète. La syntaxe du segment DHP est spécifiée dans l'Annexe B.

La première trame de chaque composante ou groupe de composantes d'un processus hiérarchique doit être codée par une
trame non différentielle. Des trames différentielles doivent ensuite être utilisées pour coder les différences, en
complément à deux, entre les composantes d'entrée source (éventuellement sous-échantillonnées) et les composantes de
référence (éventuellement suréchantillonnées). Les composantes de référence sont des composantes reconstruites créées
par des trames antérieures dans le processus hiérarchique. Pour des trames différentielles ou non différentielles, des
reconstructions des composantes doivent, si nécessaire, être générées comme composantes de référence, pour une trame
suivante du processus hiérarchique.

Des changements de résolution peuvent intervenir entre des trames hiérarchiques d'un processus hiérarchique, si des
filtres de sous-échantillonnage sont utilisés pour réduire la résolution spatiale de certaines ou de toutes les composantes
de l'image source. Quand la résolution d'une composante de référence ne correspond pas à la résolution de la composante
d'entrée d'une trame différentielle, un filtre de suréchantillonnage doit être utilisé pour augmenter la résolution spatiale
de cette composante de référence. Le segment marqueur EXP doit être accolé aux données d'image comprimées, avant le
début de trame, chaque fois qu'un suréchantillonnage d'une composante de référence s'impose. Une trame donnée ne doit
pas être précédée de plus d'un segment marqueur EXP.

Tout segment marqueur autorisé avant un début de trame pour le processus de codage choisi, peut être utilisé avant des
trames non différentielles ou différentielles.

Pour une précision d'entrée 16 bits (codeur sans perte), les composantes différentielles en entrée d'une trame
différentielle sont calculées modulo 216. Les composantes reconstruites calculées à partir des composantes différentielles
reconstruites sont également calculées modulo 216.

Si un processus de codage hiérarchique utilise un processus de codage DCT pour la première trame, toutes les trames du
processus hiérarchique, sauf la trame finale de chaque composante, doivent utiliser les processus de codage DCT définis
dans l'Annexe F ou l'Annexe G, ou les processus de codage DCT modifiés définis dans la présente annexe. La trame
finale peut utiliser un processus sans perte modifié défini dans la présente annexe.

Si un processus de codage hiérarchique utilise un processus de codage sans perte pour la première trame, toutes les
trames du processus hiérarchique doivent utiliser un processus de codage sans perte défini dans l'Annexe H ou un
processus de codage sans perte modifié défini dans la présente annexe.

J.1.1.1 Filtre de sous-échantillonnage

Les composantes sous-échantillonnées sont générées à l'aide d'un filtre de sous-échantillonnage, non spécifié dans la
présente Spécification. Toutefois, ce filtre doit être cohérent avec le filtre de suréchantillonnage. Un exemple de filtre de
sous-échantillonnage est donné en K.5.

J.1.1.2 Filtre de suréchantillonnage

Le filtre de suréchantillonnage augmente la résolution spatiale d'un facteur deux horizontalement, verticalement ou dans
les deux dimensions. Il utilise l'interpolation bilinéaire représentée Figure J.2.

140 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Encode_image

[Générer images sous-échantillonnées]


Accoler marqueur SOI
[Accoler tables/divers]
Accoler segment marqueur DHP

Non Trame Oui


différentielle?

[Sous-échantillonner composantes
Encode_frame de référence et accoler segment
marqueur EXP]
Générer les composantes différentielles
Encode_differential_frame
Reconstruire composantes différentielles
Reconstruire les composantes
Reconstruire les
composantes en
utilisant le processus
de décodage adapté

Oui
Autres trames?

Non

Accoler marqueur EOI

Fait

TISO1700-93/d108

Figure J.1 – Procédure du contrôle hiérarchique du codage d'une image

a x b a

TISO1710-93/d109

Figure J.2 – Positions des échantillons utilisés


pour le suréchantillonnage

Rec. T.81 du CCITT (1992 F) 141


ISO/CEI 10918-1 : 1993(F)

La règle de calcul de la valeur interpolée est:

Px = (Ra + Rb) / 2

où Ra et Rb sont des valeurs des échantillons a et b de positions adjacentes à l'image de résolution inférieure, et Px la
valeur interpolée. La division implique la troncature et non l'arrondi. La colonne de gauche de l'image suréchantillonnée
correspond à la colonne de gauche de l'image de résolution inférieure. La rangée du haut de l'image suréchantillonnée
correspond à la rangée du haut de l'image de résolution inférieure. La colonne de droite et la rangée du bas de l'image de
résolution inférieure sont copiées pour donner les valeurs requises pour les interpolations des bords de la colonne de
droite et de la rangée du bas. Le processus de suréchantillonnage double toujours la longueur de lignes et/ou le nombre
de lignes.

Si des expansions horizontales et verticales sont prescrites, elles sont opérées successivement: expansion horizontale,
puis la verticale.

J.1.2 Procédure de codage d'une trame différentielle

Les procédures de contrôle définies dans l'Annexe E pour les trames, balayages, intervalles de reprise et MCU,
s'appliquent également au codage des trames différentielles, ainsi qu'aux balayages, intervalles de reprise et MCU pour
lesquels la trame différentielle est construite. Les trames différentielles ne diffèrent des trames des Annexes F, G et H
qu'au niveau du modèle de codage.

J.1.3 Modèles de codage des trames différentielles

Les modèles de codage définis dans les Annexes F, G et H sont modifiés pour pouvoir être utilisés pour le codage des
différences en complément à deux.

J.1.3.1 Modifications apportées aux modèles de codage DCT pour le codage des trames différentielles

Deux modifications sont apportées aux modèles de codage DCT pour permettre leur utilisation pour des trames
différentielles. Premièrement, la FDCT de l'entrée différentielle est calculée sans décalage de niveau; deuxièmement, le
coefficient DC de la DCT est codé directement – sans prédiction.

J.1.3.2 Modifications apportées aux modèles de codage sans perte pour le codage des trames différentielles

Une modification est apportée aux modèles de codage sans perte. La différence est codée directement – sans prédiction.
Le paramètre de sélection de prédiction de l'en-tête de balayage doit être mis à zéro. La transformation point applicable
aux entrées différentielles est définie dans l'Annexe A.

J.1.4 Modifications apportées aux codeurs entropiques pour le codage des trames différentielles

Le codage des différences en complément à deux nécessite un bit de précision supplémentaire pour le codage de
Huffman des coefficients AC. L'extension des Tableaux F.1 et F.7 est donnée dans le Tableau J.2.

Tableau J.2 – Modifications du tableau


des plages d'amplitudes des coefficients AC

SSSS Coefficients AC

15 –32 767...–16 384, 16 384...32 767

Les modèles de codage arithmétique sont déjà définis pour la précision requise dans les trames différentielles.

J.2 Décodage hiérarchique

J.2.1 Procédure de contrôle hiérarchique du décodage d'une image

La structure de contrôle du décodage d'une image en mode hiérarchique est donnée sur la Figure J.3.

142 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Decode_image

Non
Marqueur SOI?

Oui

Interpréter marqueurs Erreur

Oui
Marqueur EOI?

Non Fait

Non
Hiérarchique?

Oui Mode
non hiérarchique

Non Trame Oui


différentielle?

[Sous-échantillonner composantes
Decode_frame de référence]
Decode_differential_frame
Reconstruct_components

TISO1720-93/d110

Figure J.3 – Procédure de contrôle hiérarchique du décodage d'une image

La procédure interpréter marqueurs décode les marqueurs qui précèdent éventuellement le marqueur SOF et poursuit ce
décodage jusqu'à rencontrer un marqueur SOF ou EOI. Si le marqueur DHP est rencontré avant la première trame, un
indicateur est positionné, sélectionnant le décodage hiérarchique au point de décision «hiérarchique?». En plus du
marqueur DHP (qui doit précéder tout SOF) et du marqueur EXP (qui doit précéder tout SOF différentiel impliquant des
changements de résolutions dans les composantes de référence), tous les autres marqueurs qui peuvent précéder un SOF
doivent être interprétés dans la mesure nécessaire pour le décodage des données d'image comprimées.

Si un marqueur différentiel SOF est rencontré, la procédure emprunte la branche «trame différentielle». Si l'EXP a été
rencontré dans la procédure interpréter marqueurs, les composantes de référence de la trame doivent être
suréchantillonnées comme prescrit par les paramètres du segment EXP. La procédure de suréchantillonnage décrite
en J.1.1.2 doit être suivie.

Rec. T.81 du CCITT (1992 F) 143


ISO/CEI 10918-1 : 1993(F)

La procédure Decode_differential_frame génère un ensemble de composantes différentielles. Ces composantes


différentielles doivent être ajoutées, modulo 216, aux composantes de référence suréchantillonnées dans la procédure
Reconstruct_components. Ainsi est créé un nouvel ensemble de composantes de référence qui sera utilisé, lorsque
nécessaire, dans les trames suivantes du processus hiérarchique.

J.2.2 Procédure de contrôle du décodage d'une trame différentielle


Les procédures de contrôle définies dans l'Annexe E pour les trames, balayages, intervalles de reprise et MCU
s'appliquent également au décodage des trames différentielles, ainsi qu'aux balayages, intervalles de reprise et MCU
pour lesquels la trame différentielle est construite. La trame différentielle ne diffère des trames des Annexes F, G et H
qu'au niveau du modèle de codage du décodeur.

J.2.3 Modèles de codage pour le décodeur de trames différentielles


Les modèles de décodage décrits dans les Annexes F, G et H sont modifiés en vue du décodage de composantes
différentielles en complément à deux.

J.2.3.1 Modifications apportées au modèle de codage DCT, pour le décodage de trames différentielles
Deux modifications sont apportées aux modèles de codage DCT du décodeur pour leur permettre de coder des trames
différentielles. Premièrement, l'IDCT de la sortie différentielle est calculée sans décalage de niveau. Deuxièmement, le
coefficient DC de la DCT est décodé directement – sans prédiction.

J.2.3.2 Modification apportée au modèle de codage sans perte, pour le décodage de trames différentielles
Une modification est apportée au modèle de codage sans perte du décodeur. La différence est décodée directement –
sans prédiction. Si le paramètre de transformation point de l'en-tête de balayage n'est pas nul, la transformation point
définie dans l'Annexe A doit être appliquée à la sortie différentielle.

J.2.4 Modifications apportées aux décodeurs entropiques, pour le décodage des trames différentielles
Les décodages des différences en complément à deux nécessitent un bit de précision supplémentaire dans la table de
codage de Huffman. Ce point est décrit en J.1.4. Les modèles de codage arithmétique sont déjà définis pour la précision
requise dans les trames différentielles.

144 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe K

Exemples et directives
(Cette annexe ne fait pas partie intégrante de la présente Recommandation | Norme internationale)

La présente annexe donne des exemples de diverses tables et procédures, ainsi que des directives.

K.1 Tables de quantification des composantes de luminance et de chrominance

Deux exemples de tables de quantification sont donnés dans les Tableaux K.1 et K.2. Ces tables reposent sur des
mécanismes de seuils visuels psycho-physiologiques. Elles sont établies empiriquement pour la luminance et la
chrominance, avec un suréchantillonnage horizontal 2:1. Ces tables, uniquement fournies à titre d'exemple, ne sont pas
nécessairement appropriées à des applications particulières. Les valeurs de quantification données ont été utilisées avec
de bons résultats sur des images à 8 bits par échantillon, du format indiqué Figure 13. A noter que ces valeurs de
quantification sont appropriées à la normalisation DCT définie en A.3.3.

Si ces valeurs de quantification sont divisées par 2, l'image reconstruite résultante est en général presque indiscernable
de l'image source.

Tableau K.1 – Table de quantification pour la luminance

16 11 10 16 124 140 151 161

12 12 14 19 126 158 160 155

14 13 16 24 140 157 169 156

14 17 22 29 151 187 180 162

18 22 37 56 168 109 103 177

24 35 55 64 181 104 113 192

49 64 78 87 103 121 120 101

72 92 95 98 112 100 103 199

Tableau K.2 – Table de quantification pour la chrominance

17 18 24 47 99 99 99 99

18 21 26 66 99 99 99 99

24 26 56 99 99 99 99 99

47 66 99 99 99 99 99 99

99 99 99 99 99 99 99 99

99 99 99 99 99 99 99 99

99 99 99 99 99 99 99 99

99 99 99 99 99 99 99 99

Rec. T.81 du CCITT (1992 F) 145


ISO/CEI 10918-1 : 1993(F)

K.2 Procédure de génération des listes de spécification d'une table de codage de Huffman

Une table de Huffman est générée, à partir d'un ensemble de données statistiques, en deux étapes: la première étape
consiste à générer la liste des longueurs et valeurs conformes aux règles de génération des tables de codes de Huffman;
la seconde étape est la génération de la table de codage de Huffman à partir de cette liste des longueurs et valeurs.

La première étape fait l'objet de ce paragraphe: elle sert uniquement à adapter à l'application (à «personnaliser») la
génération de la table de Huffman et n'est effectuée que dans le codeur. Les statistiques sont utilisées pour créer une
table associant chaque valeur à coder à la longueur (en bits) du code de Huffman correspondant. Cette table est classée
par longueurs de code.

La Figure K.1 présente une procédure de création de table de Huffman pour un ensemble pouvant comprendre
jusqu'à 256 symboles. Trois vecteurs sont définis pour cette procédure:

FREQ(V) Fréquence d'occurrence du symbole V

CODESIZE(V) Taille du code du symbole V

OTHERS(V) Pointeur vers le symbole suivant dans la chaîne de tous les symboles de la branche
courante de l'arbre des codes

où V peut prendre des valeurs de 0 à 256.

Avant de lancer la procédure, les valeurs de FREQ sont recueillies pour V = 0 à 255, la valeur de FREQ pour V = 256
étant mise à 1 pour réserver un point de code. Les valeurs de FREQ pour les symboles non utilisés sont toutes à 0. En
outre, les entrées de CODESIZE sont toutes mises à 0 et les indices de OTHERS sont mis à –1, valeur terminant une
chaîne d'indices. La réservation d'un point de code 1 garantit qu'aucun mot de code ne pourra jamais être entièrement
composé de bits «1».

La recherche de l'entrée ayant la plus petite valeur de FREQ(V) sélectionne la plus grande valeur de V pour laquelle la
plus petite valeur de FREQ(V) est supérieure à zéro.

La procédure «trouver V1 pour la plus petite valeur de FREQ(V1) > 0» sélectionne toujours la valeur associée à la plus
grande valeur de V1 quand plusieurs V1 de même fréquence se présentent. Il est ainsi garanti que le point de code
réservé appartient à la catégorie des mots de code les plus longs.

Quand les longueurs de code associées à chaque symbole ont été obtenues, le nombre de codes de chaque longueur est
obtenu en appliquant la procédure de la Figure K.2. Le compteur associé à chaque longueur est contenu dans la liste
BITS. Les compteurs de BITS sont à zéro au début de la procédure. La procédure suppose que les probabilités restent
assez fortes pour que des longueurs de codes supérieures à 32 bits ne se présentent jamais. A noter que jusqu'à la fin de
la procédure finale Adjust_BITS, BITS peut avoir plus que les 16 entrées requises dans la spécification de tables (voir
l'Annexe C).

La Figure K.3 donne la procédure d'ajustement de la liste BITS, exécutée pour qu'aucun code n'ait une longueur
supérieure à 16 bits. Comme les symboles sont accolés par paires, pour le code de Huffman le plus long, ils sont
également retirés par paires pour cette catégorie de longueur. Le préfixe d'une paire (d'un bit plus court) est affecté à l'un
des symboles de cette paire; puis (en sautant l'entrée BITS pour cette longueur de préfixe) un mot de code de la
prochaine entrée la plus courte non nulle de BITS est converti en un préfixe de deux mots de code (plus long d'un bit).
Après la réduction de la liste BITS, en sorte que la longueur maximale des codes soit de 16 bits, la dernière étape retire
le point de code réservé du compteur de longueurs de code.

Les valeurs d'entrée sont classées par longueurs de code, comme indiqué Figure K.4. HUFFVAL est la liste contenant
les valeurs d'entrée associées à chaque mot de code, par ordre de longueurs de code croissantes.

A ce point, la liste des longueurs de code (BITS) et la liste des valeurs (HUFFVAL) peuvent être utilisées pour générer
les tables de codage, selon les procédures décrites dans l'Annexe C.

146 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Code_size

Trouver V1 pour plus petite


valeur de FREQ(V1) > 0
Trouver V2 pour plus petite
valeur suivante de FREQ(V2) > 0

Non
V2 existe?

Oui
Fait

FREQ(V1) =
FREQ(V1) +
FREQ(V2)
FREQ(V2) = 0

CODESIZE(V1) =
V1 = OTHERS(V1) CODESIZE(V1) + 1

Non
OTHERS(V1) = –1?

Oui

OTHERS(V1) = V2

CODESIZE(V2) =
V2 = OTHERS(V2) CODESIZE(V2) + 1

Non Oui
OTHERS(V2) = –1?

TISO1730-93/d111

Figure K.1 – Procédure de détermination des longueurs des codes de Huffman

Rec. T.81 du CCITT (1992 F) 147


ISO/CEI 10918-1 : 1993(F)

Count_BITS

I=0

Non
CODESIZE(I) = 0? BITS(CODESIZE(I)) =
BITS(CODESIZE(I)) + 1

Oui

I=I+1

Non
I = 257

Oui

Adjust_BITS

Fait

TISO1740-93/d112

Figure K.2 – Procédure de détermination du nombre


de codes de chaque longueur

148 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Adjust_BITS

I = 32

Oui Non
BITS(I) > 0?

J=I–1 I=I–1

Non
I = 16?
J=J–1
Oui

Non
BITS(J) > 0? I=I–1

Oui
BITS(I) = BITS(I) – 2
BITS(I – 1) = BITS(I – 1) + 1 Oui
BITS(I) = 0?
BITS(J + 1) = BITS(J + 1) + 2
BITS(J) = BITS (J) – 1

Non

BITS(I) = BITS(I) – 1

Fait

TISO1750-93/d113

Figure K.3 – Procédure de limitation à 16 bits, des longueurs de code

Rec. T.81 du CCITT (1992 F) 149


ISO/CEI 10918-1 : 1993(F)

Sort_input

I=1
K=0

J=0

Oui HUFFVAL(K) = J
CODESIZE(J) = I?
K=K+1

Non

J=J+1

Non
J > 255?

Oui

I=I+1

Non
I > 32?

Oui

Fait

TISO1760-93/d114

Figure K.4 – Classement des valeurs d'entrée par longueurs de code

150 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

K.3 Tables de Huffman typiques pour une luminance et une chrominance de précision 8 bits

La syntaxe de définition de tables de Huffman est spécifiée en B.2.4.2.

K.3.1 Tables de Huffman typiques pour les coefficients DC

Les Tableaux K.3 et K.4 donnent des tables de Huffman établies à partir de statistiques moyennes portant sur un grand
nombre d'images vidéo de précision 8 bits. La table du Tableau K.3 est appropriée aux composantes de luminance et
celle du Tableau K.4 aux composantes de chrominance. Ce ne sont pas des tables par défaut, mais elles peuvent s'avérer
utiles pour beaucoup d'applications.

Tableau K.3 – Table des différences relatives


aux coefficients DC de luminance

Catégorie Longueur de code Mot de code

0 2 00
1 3 010
2 3 011
3 3 100
4 3 101
5 3 110
6 4 1110
7 5 11110
8 6 111110
9 7 1111110
10 8 11111110
11 9 111111110

Tableau K.4 – Tableau des différences relatives


aux coefficients DC de chrominance

Catégorie Longueur de code Mot de code

0 2 00
1 2 01
2 2 10
3 3 110
4 4 1110
5 5 11110
6 6 111110
7 7 1111110
8 8 11111110
9 9 111111110
10 10 1111111110
11 11 11111111110

Rec. T.81 du CCITT (1992 F) 151


ISO/CEI 10918-1 : 1993(F)

K.3.2 Tables de Huffman typiques pour les coefficients AC


Les Tableaux K.5 et K.6 donnent des tables de Huffman pour ces coefficients AC, établies à partir de satistiques
moyennes portant sur un grand nombre d'images de précision 8 bits. La table du Tableau K.5 est appropriée aux
composantes de luminance et celle du Tableau K.6 aux composantes de chrominance. Ces deux tables ne sont pas des
tables par défaut, mais peuvent s'avérer utiles pour beaucoup d'applications.

Tableau K.5 – Table des coefficients AC


de luminance (feuillet 1 sur 4)

Catégorie Longueur de Mot de code


R/S code

0/0 (EOB) 4 1010


0/1 2 00
0/2 2 01
0/3 3 100
0/4 4 1011
0/5 5 11010
0/6 7 1111000
0/7 8 11111000
0/8 10 1111110110
0/9 16 1111111110000010
0/A 16 1111111110000011
1/1 4 1100
1/2 5 11011
1/3 7 1111001
1/4 9 111110110
1/5 11 11111110110
1/6 16 1111111110000100
1/7 16 1111111110000101
1/8 16 1111111110000110
1/9 16 1111111110000111
1/A 16 1111111110001000
2/1 5 11100
2/2 8 11111001
2/3 10 1111110111
2/4 12 111111110100
2/5 16 1111111110001001
2/6 16 1111111110001010
2/7 16 1111111110001011
2/8 16 1111111110001100
2/9 16 1111111110001101
2/A 16 1111111110001110
3/1 6 111010
3/2 9 111110111
3/3 12 111111110101
3/4 16 1111111110001111
3/5 16 1111111110010000
3/6 16 1111111110010001
3/7 16 1111111110010010
3/8 16 1111111110010011
3/9 16 1111111110010100
3/A 16 1111111110010101

152 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.5 (feuillet 2 sur 4)

Catégorie Longueur de Mot de code


R/S code

4/1 6 111011
4/2 10 1111111000
4/3 16 1111111110010110
4/4 16 1111111110010111
4/5 16 1111111110011000
4/6 16 1111111110011001
4/7 16 1111111110011010
4/8 16 1111111110011011
4/9 16 1111111110011100
4/A 16 1111111110011101
5/1 7 1111010
5/2 11 11111110111
5/3 16 1111111110011110
5/4 16 1111111110011111
5/5 16 1111111110100000
5/6 16 1111111110100001
5/7 16 1111111110100010
5/8 16 1111111110100011
5/9 16 1111111110100100
5/A 16 1111111110100101
6/1 7 1111011
6/2 12 111111110110
6/3 16 1111111110100110
6/4 16 1111111110100111
6/5 16 1111111110101000
6/6 16 1111111110101001
6/7 16 1111111110101010
6/8 16 1111111110101011
6/9 16 1111111110101100
6/A 16 1111111110101101
7/1 8 11111010
7/2 12 111111110111
7/3 16 1111111110101110
7/4 16 1111111110101111
7/5 16 1111111110110000
7/6 16 1111111110110001
7/7 16 1111111110110010
7/8 16 1111111110110011
7/9 16 1111111110110100
7/A 16 1111111110110101
8/1 9 111111000
8/2 15 111111111000000

Rec. T.81 du CCITT (1992 F) 153


ISO/CEI 10918-1 : 1993(F)

Tableau K.5 (feuillet 3 sur 4)

Catégorie Longueur de Mot de code


R/S code

8/3 16 1111111110110110
8/4 16 1111111110110111
8/5 16 1111111110111000
8/6 16 1111111110111001
8/7 16 1111111110111010
8/8 16 1111111110111011
8/9 16 1111111110111100
8/A 16 1111111110111101
9/1 9 111111001
9/2 16 1111111110111110
9/3 16 1111111110111111
9/4 16 1111111111000000
9/5 16 1111111111000001
9/6 16 1111111111000010
9/7 16 1111111111000011
9/8 16 1111111111000100
9/9 16 1111111111000101
9/A 16 1111111111000110
A/1 9 111111010
A/2 16 1111111111000111
A/3 16 1111111111001000
A/4 16 1111111111001001
A/5 16 1111111111001010
A/6 16 1111111111001011
A/7 16 1111111111001100
A/8 16 1111111111001101
A/9 16 1111111111001110
A/A 16 1111111111001111
B/1 10 1111111001
B/2 16 1111111111010000
B/3 16 1111111111010001
B/4 16 1111111111010010
B/5 16 1111111111010011
B/6 16 1111111111010100
B/7 16 1111111111010101
B/8 16 1111111111010110
B/9 16 1111111111010111
B/A 16 1111111111011000
C/1 10 1111111010
C/2 16 1111111111011001
C/3 16 1111111111011010
C/4 16 1111111111011011

154 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.5 (feuillet 4 sur 4)

Catégorie Longueur de Mot de code


R/S code

C/5 16 1111111111011100
C/6 16 1111111111011101
C/7 16 1111111111011110
C/8 16 1111111111011111
C/9 16 1111111111100000
C/A 16 1111111111100001
D/1 11 11111111000
D/2 16 1111111111100010
D/3 16 1111111111100011
D/4 16 1111111111100100
D/5 16 1111111111100101
D/6 16 1111111111100110
D/7 16 1111111111100111
D/8 16 1111111111101000
D/9 16 1111111111101001
D/A 16 1111111111101010
E/1 16 1111111111101011
E/2 16 1111111111101100
E/3 16 1111111111101101
E/4 16 1111111111101110
E/5 16 1111111111101111
E/6 16 1111111111110000
E/7 16 1111111111110001
E/8 16 1111111111110010
E/9 16 1111111111110011
E/A 16 1111111111110100
F/0 (ZRL) 11 11111111001
F/1 16 1111111111110101
F/2 16 1111111111110110
F/3 16 1111111111110111
F/4 16 1111111111111000
F/5 16 1111111111111001
F/6 16 1111111111111010
F/7 16 1111111111111011
F/8 16 1111111111111100
F/9 16 1111111111111101
F/A 16 1111111111111110

Rec. T.81 du CCITT (1992 F) 155


ISO/CEI 10918-1 : 1993(F)

Tableau K.6 – Table des coefficients AC


de chrominance (feuillet 1 sur 4)

Catégorie Longueur de Mot de code


R/S code

0/0 (EOB) 2 00
0/1 2 01
0/2 3 100
0/3 4 1010
0/4 5 11000
0/5 5 11001
0/6 6 111000
0/7 7 1111000
0/8 9 111110100
0/9 10 1111110110
0/A 12 111111110100
1/1 4 1011
1/2 6 111001
1/3 8 11110110
1/4 9 111110101
1/5 11 11111110110
1/6 12 111111110101
1/7 16 1111111110001000
1/8 16 1111111110001001
1/9 16 1111111110001010
1/A 16 1111111110001011
2/1 5 11010
2/2 8 11110111
2/3 10 1111110111
2/4 12 111111110110
2/5 15 111111111000010
2/6 16 1111111110001100
2/7 16 1111111110001101
2/8 16 1111111110001110
2/9 16 1111111110001111
2/A 16 1111111110010000
3/1 5 11011
3/2 8 11111000
3/3 10 1111111000
3/4 12 111111110111
3/5 16 1111111110010001
3/6 16 1111111110010010
3/7 16 1111111110010011
3/8 16 1111111110010100
3/9 16 1111111110010101
3/A 16 1111111110010110
4/1 6 111010

156 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.6 (feuillet 2 sur 4)

Catégorie Longueur de Mot de code


R/S code

4/2 9 111110110
4/3 16 1111111110010111
4/4 16 1111111110011000
4/5 16 1111111110011001
4/6 16 1111111110011010
4/7 16 1111111110011011
4/8 16 1111111110011100
4/9 16 1111111110011101
4/A 16 1111111110011110
5/1 6 111011
5/2 10 1111111001
5/3 16 1111111110011111
5/4 16 1111111110100000
5/5 16 1111111110100001
5/6 16 1111111110100010
5/7 16 1111111110100011
5/8 16 1111111110100100
5/9 16 1111111110100101
5/A 16 1111111110100110
6/1 7 1111001
6/2 11 11111110111
6/3 16 1111111110100111
6/4 16 1111111110101000
6/5 16 1111111110101001
6/6 16 1111111110101010
6/7 16 1111111110101011
6/8 16 1111111110101100
6/9 16 1111111110101101
6/A 16 1111111110101110
7/1 7 1111010
7/2 11 11111111000
7/3 16 1111111110101111
7/4 16 1111111110110000
7/5 16 1111111110110001
7/6 16 1111111110110010
7/7 16 1111111110110011
7/8 16 1111111110110100
7/9 16 1111111110110101
7/A 16 1111111110110110
8/1 8 11111001
8/2 16 1111111110110111
8/3 16 1111111110111000

Rec. T.81 du CCITT (1992 F) 157


ISO/CEI 10918-1 : 1993(F)

Tableau K.6 (feuillet 3 sur 4)

Catégorie Longueur de Mot de code


R/S code

8/4 16 1111111110111001
8/5 16 1111111110111010
8/6 16 1111111110111011
8/7 16 1111111110111100
8/8 16 1111111110111101
8/9 16 1111111110111110
8/A 16 1111111110111111
9/1 9 111110111
9/2 16 1111111111000000
9/3 16 1111111111000001
9/4 16 1111111111000010
9/5 16 1111111111000011
9/6 16 1111111111000100
9/7 16 1111111111000101
9/8 16 1111111111000110
9/9 16 1111111111000111
9/A 16 1111111111001000
A/1 9 111111000
A/2 16 1111111111001001
A/3 16 1111111111001010
A/4 16 1111111111001011
A/5 16 1111111111001100
A/6 16 1111111111001101
A/7 16 1111111111001110
A/8 16 1111111111001111
A/9 16 1111111111010000
A/A 16 1111111111010001
B/1 9 111111001
B/2 16 1111111111010010
B/3 16 1111111111010011
B/4 16 1111111111010100
B/5 16 1111111111010101
B/6 16 1111111111010110
B/7 16 1111111111010111
B/8 16 1111111111011000
B/9 16 1111111111011001
B/A 16 1111111111011010
C/1 9 111111010
C/2 16 1111111111011011
C/3 16 1111111111011100
C/4 16 1111111111011101
C/5 16 1111111111011110

158 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.6 (feuillet 4 sur 4)

Catégorie Longueur de Mot de code


R/S code

C/6 16 1111111111011111
C/7 16 1111111111100000
C/8 16 1111111111100001
C/9 16 1111111111100010
C/A 16 1111111111100011
D/1 11 11111111001
D/2 16 1111111111100100
D/3 16 1111111111100101
D/4 16 1111111111100110
D/5 16 1111111111100111
D/6 16 1111111111101000
D/7 16 1111111111101001
D/8 16 1111111111101010
D/9 16 1111111111101011
D/A 16 1111111111101100
E/1 14 11111111100000
E/2 16 1111111111101101
E/3 16 1111111111101110
E/4 16 1111111111101111
E/5 16 1111111111110000
E/6 16 1111111111110001
E/7 16 1111111111110010
E/8 16 1111111111110011
E/9 16 1111111111110100
E/A 16 1111111111110101
F/0 (ZRL) 10 1111111010
F/1 15 111111111000011
F/2 16 1111111111110110
F/3 16 1111111111110111
F/4 16 1111111111111000
F/5 16 1111111111111001
F/6 16 1111111111111010
F/7 16 1111111111111011
F/8 16 1111111111111100
F/9 16 1111111111111101
F/A 16 1111111111111110

Rec. T.81 du CCITT (1992 F) 159


ISO/CEI 10918-1 : 1993(F)

K.3.3 Exemples de spécification de tables de Huffman

K.3.3.1 Spécification de tables typiques pour le codage des différences DC

Un ensemble de tables typiques pour le codage de la composante DC est donné en K.3.1. La spécification de ces tables
est la suivante:

Pour la table du Tableau K.3 (coefficients DC de luminance), les 16 bits qui spécifient la liste des longueurs de code de
la table sont:

X’00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00’

L'ensemble de valeurs suivant cette liste est:

X’00 01 02 03 04 05 06 07 08 09 0A 0B’

Pour la table du Tableau K.4 (coefficients DC de chrominance), les 16 octets qui spécifient la liste des codes de
longueurs de la table sont:

X’00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00’

L'ensemble de valeurs suivant cette liste est:

X’00 01 02 03 04 05 06 07 08 09 0A 0B’

K.3.3.2 Spécification de tables typiques pour le codage des coefficients AC

Un ensemble de tables typiques pour le codage de la composante AC est donné en K.3.2. La spécification de ces tables
est la suivante:

Pour la table du Tableau K.5 (coefficients AC de luminance), les 16 octets qui spécifient la liste des longueurs de code
de la table sont:

X’00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7D’

L'ensemble de valeurs suivant cette liste est:

X’01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07

X’22 71 14 32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0

X’24 33 62 72 82 09 0A 16 17 18 19 1A 25 26 27 28

X’29 2A 34 35 36 37 38 39 3A 43 44 45 46 47 48 49

X’4A 53 54 55 56 57 58 59 5A 63 64 65 66 67 68 69

X’6A 73 74 75 76 77 78 79 7A 83 84 85 86 87 88 89

X’8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7

X’A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5

X’C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2

X’E3 E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8

X’F9 FA’

160 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Pour la table du Tableau K.6 (coefficients AC de chrominance), les 16 octets qui spécifient la liste des longueurs de code
de la table sont:

X’00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77’

L'ensemble de valeurs suivant cette liste est:

X’00 01 02 03 11 04 05 21 31 06 12 41 51 07 61 71

X’13 22 32 81 08 14 42 91 A1 B1 C1 09 23 33 52 F0

X'15 62 72 D1 0A 16 24 34 E1 25 F1 17 18 19 1A 26

X'27 28 29 2A 35 36 37 38 39 3A 43 44 45 46 47 48

X'49 4A 53 54 55 56 57 58 59 5A 63 64 65 66 67 68

X'69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86 87

X'88 89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 A5

X'A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3

X'C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA

X'E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 F8

X'F9 FA’

K.4 Informations complémentaires sur le codage arithmétique

K.4.1 Séquence de test du codeur arithmétique pour un petit ensemble de données

La séquence de test suivante de 256 bits (de forme hexadécimale) est structurée en sorte de tester le plus grand nombre
de branches de procédures du codeur et du décodeur:

X’00020051 000000C0 0352872A AAAAAAAA 82C02000 FCD79EF6 74EAABF7 697EE74C’

Les Tableaux K.7 et K.8 donnent la liste, symbole par symbole, des opérations du codeur et du décodeur arithmétiques.
Dans ces tableaux, le compteur d'événement, EC, est la première entrée, suivie de la valeur de Qe utilisée pour le codage
et le décodage de cet événement. La décision D à coder (et décoder) est indiquée ensuite. La colonne libellée MPS
contient la signification du MPS; si elle est suivie d'un CE (dans la colonne «CX») la permutation condition-
nelle MPS/LPS a lieu lors du codage et du décodage de la décision (voir Figures D.3, D.4 et D.17). Les contenus des
registres A et C sont les valeurs avant le codage et le décodage de l'événement. ST est le nombre d'octets X’FF’ empilés
dans le codeur en attente de résolution de retenue. A noter que le registre A est toujours plus grand que X’7FFF’. (La
valeur initiale implicite est X’10000’.)

Dans le test du codeur, les octets de code de la colonne (B) figurent s'ils ont été obtenus durant le codage de l'événement
précédent. Si des octets additionnels suivent, ils ont également été obtenus durant le codage de l'événement précédent. Si
un octet figure dans la colonne Bx, l'octet précédent de la colonne B a été modifié par une retenue.

Dans le décodeur, les octets de code figurent s'ils ont été placés dans le registre de code juste avant l'événement EC.

Pour cette table, le nombre de bits codés est 240, y compris les bits supplémentaires de calage des données finales issues
du registre C. Quand le marqueur X’FFD9’ est accolé, la sortie a un total de 256 bits. La séquence effective de données
comprimées sortant du codeur est (sous forme hexadécimale):

X’655B5144 F7969D51 7855BFFF 00FC5184 C7CEF939 00287D46 708ECBC0 F6FFD900’

Rec. T.81 du CCITT (1992 F) 161


ISO/CEI 10918-1 : 1993(F)

Tableau K.7 – Séquence de test du codeur (feuillet 1 sur 7)

EC D MPS CX Qe A C CT ST Bx B
(hexadécimal) (hexadécimal) (hexadécimal)

1 0 0 5A1D 0000 00000000 11 0


2 0 0 CE 5A1D A5E3 00000000 11 0
3 0 0 2586 B43A 0000978C 10 0
4 0 0 2586 8EB4 0000978C 10 0
5 0 0 1114 D25C 00012F18 9 0
6 0 0 1114 C148 00012F18 9 0
7 0 0 1114 B034 00012F18 9 0
8 0 0 1114 9F20 00012F18 9 0
9 0 0 1114 8E0C 00012F18 9 0
10 0 0 080B F9F0 00025E30 8 0
11 0 0 080B F1E5 00025E30 8 0
12 0 0 080B E9DA 00025E30 8 0
13 0 0 080B E1CF 00025E30 8 0
14 0 0 080B D9C4 00025E30 8 0
15 1 0 080B D1B9 00025E30 8 0
16 0 0 17B9 80B0 00327DE0 4 0
17 0 0 1182 D1EE 0064FBC0 3 0
18 0 0 1182 C06C 0064FBC0 3 0
19 0 0 1182 AEEA 0064FBC0 3 0
20 0 0 1182 9D68 0064FBC0 3 0
21 0 0 1182 8BE6 0064FBC0 3 0
22 0 0 0CEF F4C8 00C9F780 2 0
23 0 0 0CEF E7D9 00C9F780 2 0
24 0 0 0CEF DAEA 00C9F780 2 0
25 0 0 0CEF CDFB 00C9F780 2 0
26 1 0 0CEF C10C 00C9F780 2 0
27 0 0 1518 CEF0 000AB9D0 6 0 65
28 1 0 1518 B9D8 000AB9D0 6 0
29 0 0 1AA9 A8C0 005AF480 3 0
30 0 0 1AA9 8E17 005AF480 3 0
31 0 0 174E E6DC 00B5E900 2 0
32 1 0 174E CF8E 00B5E900 2 0
33 0 0 1AA9 BA70 00050A00 7 0 5B
34 0 0 1AA9 9FC7 00050A00 7 0
35 0 0 1AA9 851E 00050A00 7 0
36 0 0 174E D4EA 000A1400 6 0

162 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.7 – Séquence de test du codeur (feuillet 2 sur 7)

EC D MPS CX Qe A C CT ST Bx B
(hexadécimal) (hexadécimal) (hexadécimal)

37 0 0 174E BD9C 000A1400 6 0


38 0 0 174E A64E 000A1400 6 0
39 0 0 174E 8F00 000A1400 6 0
40 0 0 1424 EF64 00142800 5 0
41 0 0 1424 DB40 00142800 5 0
42 0 0 1424 C71C 00142800 5 0
43 0 0 1424 B2F8 00142800 5 0
44 0 0 1424 9ED4 00142800 5 0
45 0 0 1424 8AB0 00142800 5 0
46 0 0 119C ED18 00285000 4 0
47 0 0 119C DB7C 00285000 4 0
48 0 0 119C C9E0 00285000 4 0
49 0 0 119C B844 00285000 4 0
50 0 0 119C A6A8 00285000 4 0
51 0 0 119C 950C 00285000 4 0
52 0 0 119C 8370 00285000 4 0
53 0 0 0F6B E3A8 0050A000 3 0
54 0 0 0F6B D43D 0050A000 3 0
55 0 0 0F6B C4D2 0050A000 3 0
56 0 0 0F6B B567 0050A000 3 0
57 1 0 0F6B A5FC 0050A000 3 0
58 1 0 1424 F6B0 00036910 7 0 51
59 0 0 1AA9 A120 00225CE0 4 0
60 0 0 1AA9 8677 00225CE0 4 0
61 0 0 174E D79C 0044B9C0 3 0
62 0 0 174E C04E 0044B9C0 3 0
63 0 0 174E A900 0044B9C0 3 0
64 0 0 174E 91B2 0044B9C0 3 0
65 0 0 1424 F4C8 00897380 2 0
66 0 0 1424 E0A4 00897380 2 0
67 0 0 1424 CC80 00897380 2 0
68 0 0 1424 B85C 00897380 2 0
69 0 0 1424 A438 00897380 2 0
70 0 0 1424 9014 00897380 2 0
71 1 0 119C F7E0 0112E700 1 0
72 1 0 1424 8CE0 001E6A20 6 0 44
73 0 0 1AA9 A120 00F716E0 3 0

Rec. T.81 du CCITT (1992 F) 163


ISO/CEI 10918-1 : 1993(F)

Tableau K.7 – Séquence de test du codeur (feuillet 3 sur 7)

EC D MPS CX Qe A C CT ST Bx B
(hexadécimal) (hexadécimal) (hexadécimal)

74 1 0 1AA9 8677 00F716E0 3 0


75 0 0 2516 D548 00041570 8 0 F7
76 1 0 2516 B032 00041570 8 0
77 0 0 299A 9458 00128230 6 0
78 0 0 2516 D57C 00250460 5 0
79 1 0 2516 B066 00250460 5 0
80 0 0 299A 9458 00963EC0 3 0
81 1 0 2516 D57C 012C7D80 2 0
82 0 0 299A 9458 0004B798 8 0 96
83 0 0 2516 D57C 00096F30 7 0
84 0 0 2516 B066 00096F30 7 0
85 0 0 2516 8B50 00096F30 7 0
86 1 0 1EDF CC74 0012DE60 6 0
87 1 0 2516 F6F8 009C5FA8 3 0
88 1 0 299A 9458 0274C628 1 0
89 0 0 32B4 A668 0004C398 7 0 9D
90 0 0 2E17 E768 00098730 6 0
91 1 0 2E17 B951 00098730 6 0
92 0 0 32B4 B85C 002849A8 4 0
93 1 0 32B4 85A8 002849A8 4 0
94 0 0 3C3D CAD0 00A27270 2 0
95 1 0 3C3D 8E93 00A27270 2 0
96 0 0 415E F0F4 00031318 8 0 51
97 1 0 415E AF96 00031318 8 0
98 0 0 CE 4639 82BC 000702A0 7 0
99 1 0 415E 8C72 000E7E46 6 0
100 0 0 CE 4639 82BC 001D92B4 5 0
101 1 0 415E 8C72 003B9E6E 4 0
102 0 0 CE 4639 82BC 0077D304 3 0
103 1 0 415E 8C72 00F01F0E 2 0
104 0 0 CE 4639 82BC 01E0D444 1 0
105 1 0 415E 8C72 0002218E 8 0 78
106 0 0 CE 4639 82BC 0004D944 7 0
107 1 0 415E 8C72 000A2B8E 6 0
108 0 0 CE 4639 82BC 0014ED44 5 0
109 1 0 415E 8C72 002A538E 4 0
110 0 0 CE 4639 82BC 00553D44 3 0

164 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.7 – Séquence de test du codeur (feuillet 4 sur 7)

EC D MPS CX Qe A C CT ST Bx B
(hexadécimal) (hexadécimal) (hexadécimal)

111 1 0 415E 8C72 00AAF38E 2 0


112 0 0 CE 4639 82BC 01567D44 1 0
113 1 0 415E 8C72 0005738E 8 0 55
114 0 0 CE 4639 82BC 000B7D44 7 0
115 1 0 415E 8C72 0017738E 6 0
116 0 0 CE 4639 82BC 002F7D44 5 0
117 1 0 415E 8C72 005F738E 4 0
118 0 0 CE 4639 82BC 00BF7D44 3 0
119 1 0 415E 8C72 017F738E 2 0
120 0 0 CE 4639 82BC 02FF7D44 1 0
121 1 0 415E 8C72 0007738E 8 0 BF
122 0 0 CE 4639 82BC 000F7D44 7 0
123 1 0 415E 8C72 001F738E 6 0
124 0 0 CE 4639 82BC 003F7D44 5 0
125 1 0 415E 8C72 007F738E 4 0
126 0 0 CE 4639 82BC 00FF7D44 3 0
127 1 0 415E 8C72 01FF738E 2 0
128 0 0 CE 4639 82BC 03FF7D44 1 0
129 1 0 415E 8C72 0007738E 8 1
130 0 0 CE 4639 82BC 000F7D44 7 1
131 0 0 415E 8C72 001F738E 6 1
132 0 0 3C3D 9628 003EE71C 5 1
133 0 0 375E B3D6 007DCE38 4 1
134 0 0 32B4 F8F0 00FB9C70 3 1
135 1 0 32B4 C63C 00FB9C70 3 1
136 0 0 3C3D CAD0 03F0BFE0 1 1
137 1 0 3C3D 8E93 03F0BFE0 1 1
138 1 0 415E F0F4 000448D8 7 0 FF00FC
139 0 0 CE 4639 82BC 0009F0DC 6 0
140 0 0 415E 8C72 00145ABE 5 0
141 0 0 3C3D 9628 0028B57C 4 0
142 0 0 375E B3D6 00516AF8 3 0
143 0 0 32B4 F8F0 00A2D5F0 2 0
144 0 0 32B4 C63C 00A2D5F0 2 0
145 0 0 32B4 9388 00A2D5F0 2 0
146 0 0 2E17 C1A8 0145ABE0 1 0

Rec. T.81 du CCITT (1992 F) 165


ISO/CEI 10918-1 : 1993(F)

Tableau K.7 – Séquence de test du codeur (feuillet 5 sur 7)

EC D MPS CX Qe A C CT ST Bx B
(hexadécimal) (hexadécimal) (hexadécimal)

147 1 0 2E17 9391 0145ABE0 1 0


148 0 0 32B4 B85C 00084568 7 0 51
149 0 0 32B4 85A8 00084568 7 0
150 0 0 2E17 A5E8 00108AD0 6 0
151 0 0 299A EFA2 002115A0 5 0
152 0 0 299A C608 002115A0 5 0
153 0 0 299A 9C6E 002115A0 5 0
154 0 0 2516 E5A8 00422B40 4 0
155 0 0 2516 C092 00422B40 4 0
156 0 0 2516 9B7C 00422B40 4 0
157 0 0 1EDF ECCC 00845680 3 0
158 0 0 1EDF CDED 00845680 3 0
159 0 0 1EDF AF0E 00845680 3 0
160 0 0 1EDF 902F 00845680 3 0
161 1 0 1AA9 E2A0 0108AD00 2 0
162 1 0 2516 D548 000BA7B8 7 0 84
163 1 0 299A 9458 00315FA8 5 0
164 1 0 32B4 A668 00C72998 3 0
165 1 0 3C3D CAD0 031E7530 1 0
166 1 0 415E F0F4 000C0F0C 7 0 C7
167 0 0 CE 4639 82BC 00197D44 6 0
168 0 0 415E 8C72 0033738E 5 0
169 1 0 3C3D 9628 0066E71C 4 0
170 1 0 415E F0F4 019D041C 2 0
171 0 0 CE 4639 82BC 033B6764 1 0
172 1 0 415E 8C72 000747CE 8 0 CE
173 0 0 CE 4639 82BC 000F25C4 7 0
174 1 0 415E 8C72 001EC48E 6 0
175 1 0 CE 4639 82BC 003E1F44 5 0
176 1 0 4B85 F20C 00F87D10 3 0
177 1 0 CE 504F 970A 01F2472E 2 0
178 0 0 CE 5522 8D76 03E48E5C 1 0
179 0 0 504F AA44 00018D60 8 0 F9
180 1 0 4B85 B3EA 00031AC0 7 0
181 1 0 CE 504F 970A 0007064A 6 0
182 1 0 CE 5522 8D76 000E0C94 5 0
183 1 0 59EB E150 00383250 3 0

166 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.7 – Séquence de test du codeur (feuillet 6 sur 7)

EC D MPS CX Qe A C CT ST Bx B
(hexadécimal) (hexadécimal) (hexadécimal)

184 0 1 59EB B3D6 0071736A 2 0


185 1 0 59EB B3D6 00E39AAA 1 0
186 1 1 59EB B3D6 0007E92A 8 0 38
187 1 1 5522 B3D6 000FD254 7 0
188 1 1 504F BD68 001FA4A8 6 0
189 0 1 4B85 DA32 003F4950 5 0
190 1 1 CE 504F 970A 007FAFFA 4 0
191 1 1 4B85 A09E 00FFED6A 3 0
192 0 1 4639 AA32 01FFDAD4 2 0
193 0 1 CE 4B85 8C72 04007D9A 1 0
194 1 1 CE 504F 81DA 0000FB34 8 0 39 00
195 1 1 4B85 A09E 0002597E 7 0
196 1 1 4639 AA32 0004B2FC 6 0
197 0 1 415E C7F2 000965F8 5 0
198 1 1 CE 4639 82BC 0013D918 4 0
199 0 1 415E 8C72 00282B36 3 0
200 0 1 CE 4639 82BC 0050EC94 2 0
201 1 1 4B85 F20C 0003B250 8 0 28
202 1 1 4B85 A687 0003B250 8 0
203 1 1 4639 B604 000764A0 7 0
204 0 1 415E DF96 000EC940 6 0
205 1 1 CE 4639 82BC 001ECEF0 5 0
206 0 1 415E 8C72 003E16E6 4 0
207 1 1 CE 4639 82BC 007CC3F4 3 0
208 0 1 415E 8C72 00FA00EE 2 0
209 1 1 CE 4639 82BC 01F49804 1 0
210 0 1 415E 8C72 0001A90E 8 0 7D
211 1 1 CE 4639 82BC 0003E844 7 0
212 0 1 415E 8C72 0008498E 6 0
213 1 1 CE 4639 82BC 00112944 5 0
214 0 1 415E 8C72 0022CB8E 4 0
215 1 1 CE 4639 82BC 00462D44 3 0
216 1 1 415E 8C72 008CD38E 2 0
217 1 1 3C3D 9628 0119A71C 1 0
218 1 1 375E B3D6 00034E38 8 0 46
219 1 1 32B4 F8F0 00069C70 7 0
220 1 1 32B4 C63C 00069C70 7 0

Rec. T.81 du CCITT (1992 F) 167


ISO/CEI 10918-1 : 1993(F)

Tableau K.7 – Séquence de test du codeur (feuillet 7 sur 7)

EC D MPS CX Qe A C CT ST Bx B
(hexadécimal) (hexadécimal) (hexadécimal)

221 0 1 32B4 9388 00069C70 7 0


222 1 1 3C3D CAD0 001BF510 5 0
223 1 1 3C3D 8E93 001BF510 5 0
224 1 1 375E A4AC 0037EA20 4 0
225 0 1 32B4 DA9C 006FD440 3 0
226 1 1 3C3D CAD0 01C1F0A0 1 0
227 1 1 3C3D 8E93 01C1F0A0 1 0
228 0 1 375E A4AC 0003E140 8 0 70
229 1 1 3C3D DD78 00113A38 6 0
230 0 1 3C3D A13B 00113A38 6 0
231 0 1 415E F0F4 00467CD8 4 0
232 1 1 CE 4639 82BC 008E58DC 3 0
233 0 1 415E 8C72 011D2ABE 2 0
234 1 1 CE 4639 82BC 023AEBA4 1 0
235 1 1 415E 8C72 0006504E 8 0 8E
236 1 1 3C3D 9628 000CA09C 7 0
237 1 1 375E B3D6 00194138 6 0
238 1 1 32B4 F8F0 00328270 5 0
239 1 1 32B4 C63C 00328270 5 0
240 0 1 32B4 9388 00328270 5 0
241 1 1 3C3D CAD0 00CB8D10 3 0
242 1 1 3C3D 8E93 00CB8D10 3 0
243 1 1 375E A4AC 01971A20 2 0
244 0 1 32B4 DA9C 032E3440 1 0
245 0 1 3C3D CAD0 000B70A0 7 0 CB
246 1 1 415E F0F4 002FFCCC 5 0
247 1 1 415E AF96 002FFCCC 5 0
248 1 1 3C3D DC70 005FF998 4 0
249 0 1 3C3D A033 005FF998 4 0
250 1 1 415E F0F4 01817638 2 0
251 0 1 415E AF96 01817638 2 0
252 0 1 CE 4639 82BC 0303C8E0 1 0
253 1 1 4B85 F20C 000F2380 7 0 C0
254 1 1 4B85 A687 000F2380 7 0
255 0 1 4639 B604 001E4700 6 0
256 0 1 CE 4B85 8C72 003D6D96 5 0
Calage: 81DA 007ADB2C 4 0 F6
FFD9

168 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.8 – Séquence de test du décodeur (feuillet 1 sur 7)

EC D MPS CX Qe A C CT B
(hexadécimal) (hexadécimal) (hexadécimal)

1 0 0 5A1D 0000 655B0000 0 65 5B


2 0 0 CE 5A1D A5E3 655B0000 0
3 0 0 2586 B43A 332AA200 7 51
4 0 0 2586 8EB4 332AA200 7
5 0 0 1114 D25C 66554400 6
6 0 0 1114 C148 66554400 6
7 0 0 1114 B034 66554400 6
8 0 0 1114 9F20 66554400 6
9 0 0 1114 8E0C 66554400 6
10 0 0 080B F9F0 CCAA8800 5
11 0 0 080B F1E5 CCAA8800 5
12 0 0 080B E9DA CCAA8800 5
13 0 0 080B E1CF CCAA8800 5
14 0 0 080B D9C4 CCAA8800 5
15 1 0 080B D1B9 CCAA8800 5
16 0 0 17B9 80B0 2FC88000 1
17 0 0 1182 D1EE 5F910000 0
18 0 0 1182 C06C 5F910000 0
19 0 0 1182 AEEA 5F910000 0
20 0 0 1182 9D68 5F910000 0
21 0 0 1182 8BE6 5F910000 0
22 0 0 0CEF F4C8 BF228800 7 44
23 0 0 0CEF E7D9 BF228800 7
24 0 0 0CEF DAEA BF228800 7
25 0 0 0CEF CDFB BF228800 7
26 1 0 0CEF C10C BF228800 7
27 0 0 1518 CEF0 B0588000 3
28 1 0 1518 B9D8 B0588000 3
29 0 0 1AA9 A8C0 5CC40000 0
30 0 0 1AA9 8E17 5CC40000 0
31 0 0 174E E6DC B989EE00 7 F7
32 1 0 174E CF8E B989EE00 7
33 0 0 1AA9 BA70 0A4F7000 4
34 0 0 1AA9 9FC7 0A4F7000 4
35 0 0 1AA9 851E 0A4F7000 4
36 0 0 174E D4EA 149EE000 3
37 0 0 174E BD9C 149EE000 3
38 0 0 174E A64E 149EE000 3
39 0 0 174E 8F00 149EE000 3
40 0 0 1424 EF64 293DC000 2

Rec. T.81 du CCITT (1992 F) 169


ISO/CEI 10918-1 : 1993(F)

Tableau K.8 – Séquence de test du décodeur (feuillet 2 sur 7)

EC D MPS CX Qe A C CT B
(hexadécimal) (hexadécimal) (hexadécimal)

41 0 0 1424 DB40 293DC000 2


42 0 0 1424 C71C 293DC000 2
43 0 0 1424 B2F8 293DC000 2
44 0 0 1424 9ED4 293DC000 2
45 0 0 1424 8AB0 293DC000 2
46 0 0 119C ED18 527B8000 1
47 0 0 119C DB7C 527B8000 1
48 0 0 119C C9E0 527B8000 1
49 0 0 119C B844 527B8000 1
50 0 0 119C A6A8 527B8000 1
51 0 0 119C 950C 527B8000 1
52 0 0 119C 8370 527B8000 1
53 0 0 0F6B E3A8 A4F70000 0
54 0 0 0F6B D43D A4F70000 0
55 0 0 0F6B C4D2 A4F70000 0
56 0 0 0F6B B567 A4F70000 0
57 1 0 0F6B A5FC A4F70000 0
58 1 0 1424 F6B0 E6696000 4 96
59 0 0 1AA9 A120 1EEB0000 1
60 0 0 1AA9 8677 1EEB0000 1
61 0 0 174E D79C 3DD60000 0
62 0 0 174E C04E 3DD60000 0
63 0 0 174E A900 3DD60000 0
64 0 0 174E 91B2 3DD60000 0
65 0 0 1424 F4C8 7BAD3A00 7 9D
66 0 0 1424 E0A4 7BAD3A00 7
67 0 0 1424 CC80 7BAD3A00 7
68 0 0 1424 B85C 7BAD3A00 7
69 0 0 1424 A438 7BAD3A00 7
70 0 0 1424 9014 7BAD3A00 7
71 1 0 119C F7E0 F75A7400 6
72 1 0 1424 8CE0 88B3A000 3
73 0 0 1AA9 A120 7FBD0000 0
74 1 0 1AA9 8677 7FBD0000 0
75 0 0 2516 D548 9F7A8800 5 51
76 1 0 2516 B032 9F7A8800 5
77 0 0 299A 9458 517A2000 3
78 0 0 2516 D57C A2F44000 2
79 1 0 2516 B066 A2F44000 2
80 0 0 299A 9458 5E910000 0

170 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.8 – Séquence de test du décodeur (feuillet 3 sur 7)

EC D MPS CX Qe A C CT B
(hexadécimal) (hexadécimal) (hexadécimal)

81 1 0 2516 D57C BD22F000 7 78


82 0 0 299A 9458 32F3C000 5
83 0 0 2516 D57C 65E78000 4
84 0 0 2516 B066 65E78000 4
85 0 0 2516 8B50 65E78000 4
86 1 0 1EDF CC74 CBCF0000 3
87 1 0 2516 F6F8 F1D00000 0
88 1 0 299A 9458 7FB95400 6 55
89 0 0 32B4 A668 53ED5000 4
90 0 0 2E17 E768 A7DAA000 3
91 1 0 2E17 B951 A7DAA000 3
92 0 0 32B4 B85C 72828000 1
93 1 0 32B4 85A8 72828000 1
94 0 0 3C3D CAD0 7E3B7E00 7 BF
95 1 0 3C3D 8E93 7E3B7E00 7
96 0 0 415E F0F4 AF95F800 5
97 1 0 415E AF96 AF95F800 5
98 0 0 CE 4639 82BC 82BBF000 4
99 1 0 415E 8C72 8C71E000 3
100 0 0 CE 4639 82BC 82BBC000 2
101 1 0 415E 8C72 8C718000 1
102 0 0 CE 4639 82BC 82BB0000 0
103 1 0 415E 8C72 8C71FE00 7 FF 00
104 0 0 CE 4639 82BC 82BBFC00 6
105 1 0 415E 8C72 8C71F800 5
106 0 0 CE 4639 82BC 82BBF000 4
107 1 0 415E 8C72 8C71E000 3
108 0 0 CE 4639 82BC 82BBC000 2
109 1 0 415E 8C72 8C718000 1
110 0 0 CE 4639 82BC 82BB0000 0
111 1 0 415E 8C72 8C71F800 7 FC
112 0 0 CE 4639 82BC 82BBF000 6
113 1 0 415E 8C72 8C71E000 5
114 0 0 CE 4639 82BC 82BBC000 4
115 1 0 415E 8C72 8C718000 3
116 0 0 CE 4639 82BC 82BB0000 2
117 1 0 415E 8C72 8C700000 1
118 0 0 CE 4639 82BC 82B80000 0
119 1 0 415E 8C72 8C6AA200 7 51
120 0 0 CE 4639 82BC 82AD4400 6

Rec. T.81 du CCITT (1992 F) 171


ISO/CEI 10918-1 : 1993(F)

Tableau K.8 – Séquence de test du décodeur (feuillet 4 sur 7)

EC D MPS CX Qe A C CT B
(hexadécimal) (hexadécimal) (hexadécimal)

121 1 0 415E 8C72 8C548800 5


122 0 0 CE 4639 82BC 82811000 4
123 1 0 415E 8C72 8BFC2000 3
124 0 0 CE 4639 82BC 81D04000 2
125 1 0 415E 8C72 8A9A8000 1
126 0 0 CE 4639 82BC 7F0D0000 0
127 1 0 415E 8C72 85150800 7 84
128 0 0 CE 4639 82BC 74021000 6
129 1 0 415E 8C72 6EFE2000 5
130 0 0 CE 4639 82BC 47D44000 4
131 0 0 415E 8C72 16A28000 3
132 0 0 3C3D 9628 2D450000 2
133 0 0 375E B3D6 5A8A0000 1
134 0 0 32B4 F8F0 B5140000 0
135 1 0 32B4 C63C B5140000 0
136 0 0 3C3D CAD0 86331C00 6 C7
137 1 0 3C3D 8E93 86331C00 6
138 1 0 415E F0F4 CF747000 4
139 0 0 CE 4639 82BC 3FBCE000 3
140 0 0 415E 8C72 0673C000 2
141 0 0 3C3D 9628 0CE78000 1
142 0 0 375E B3D6 19CF0000 0
143 0 0 32B4 F8F0 339F9C00 7 CE
144 0 0 32B4 C63C 339F9C00 7
145 0 0 32B4 9388 339F9C00 7
146 0 0 2E17 C1A8 673F3800 6
147 1 0 2E17 9391 673F3800 6
148 0 0 32B4 B85C 0714E000 4
149 0 0 32B4 85A8 0714E000 4
150 0 0 2E17 A5E8 0E29C000 3
151 0 0 299A EFA2 1C538000 2
152 0 0 299A C608 1C538000 2
153 0 0 299A 9C6E 1C538000 2
154 0 0 2516 E5A8 38A70000 1
155 0 0 2516 C092 38A70000 1
156 0 0 2516 9B7C 38A70000 1
157 0 0 1EDF ECCC 714E0000 0
158 0 0 1EDF CDED 714E0000 0
159 0 0 1EDF AF0E 714E0000 0
160 0 0 1EDF 902F 714E0000 0

172 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.8 – Séquence de test du décodeur (feuillet 5 sur 7)

EC D MPS CX Qe A C CT B
(hexadécimal) (hexadécimal) (hexadécimal)

161 1 0 1AA9 E2A0 E29DF200 7 F9


162 1 0 2516 D548 D5379000 4
163 1 0 299A 9458 94164000 2
164 1 0 32B4 A668 A5610000 0
165 1 0 3C3D CAD0 C6B4E400 6 39
166 1 0 415E F0F4 E0879000 4
167 0 0 CE 4639 82BC 61E32000 3
168 0 0 415E 8C72 4AC04000 2
169 1 0 3C3D 9628 95808000 1
170 1 0 415E F0F4 EE560000 7 00
171 0 0 CE 4639 82BC 7D800000 6
172 1 0 415E 8C72 81FA0000 5
173 0 0 CE 4639 82BC 6DCC0000 4
174 1 0 415E 8C72 62920000 3
175 1 0 CE 4639 82BC 2EFC0000 2
176 1 0 4B85 F20C BBF00000 0
177 1 0 CE 504F 970A 2AD25000 7 28
178 0 0 CE 5522 8D76 55A4A000 6
179 0 0 504F AA44 3AA14000 5
180 1 0 4B85 B3EA 75428000 4
181 1 0 CE 504F 970A 19BB0000 3
182 1 0 CE 5522 8D76 33760000 2
183 1 0 59EB E150 CDD80000 0
184 0 1 59EB B3D6 8CE6FA00 7 7D
185 1 0 59EB B3D6 65F7F400 6
186 1 1 59EB B3D6 1819E800 5
187 1 1 5522 B3D6 3033D000 4
188 1 1 504F BD68 6067A000 3
189 0 1 4B85 DA32 C0CF4000 2
190 1 1 CE 504F 970A 64448000 1
191 1 1 4B85 A09E 3B130000 0
192 0 1 4639 AA32 76268C00 7 46
193 0 1 CE 4B85 8C72 245B1800 6
194 1 1 CE 504F 81DA 48B63000 5
195 1 1 4B85 A09E 2E566000 4
196 1 1 4639 AA32 5CACC000 3
197 0 1 415E C7F2 B9598000 2
198 1 1 CE 4639 82BC 658B0000 1
199 0 1 415E 8C72 52100000 0
200 0 1 CE 4639 82BC 0DF8E000 7 70

Rec. T.81 du CCITT (1992 F) 173


ISO/CEI 10918-1 : 1993(F)

Tableau K.8 – Séquence de test du décodeur (feuillet 6 sur 7)

EC D MPS CX Qe A C CT B
(hexadécimal) (hexadécimal) (hexadécimal)

201 1 1 4B85 F20C 37E38000 5


202 1 1 4B85 A687 37E38000 5
203 1 1 4639 B604 6FC70000 4
204 0 1 415E DF96 DF8E0000 3
205 1 1 CE 4639 82BC 82AC0000 2
206 0 1 415E 8C72 8C520000 1
207 1 1 CE 4639 82BC 827C0000 0
208 0 1 415E 8C72 8BF31C00 7 8E
209 1 1 CE 4639 82BC 81BE3800 6
210 0 1 415E 8C72 8A767000 5
211 1 1 CE 4639 82BC 7EC4E000 4
212 0 1 415E 8C72 8483C000 3
213 1 1 CE 4639 82BC 72DF8000 2
214 0 1 415E 8C72 6CB90000 1
215 1 1 CE 4639 82BC 434A0000 0
216 1 1 415E 8C72 0D8F9600 7 CB
217 1 1 3C3D 9628 1B1F2C00 6
218 1 1 375E B3D6 363E5800 5
219 1 1 32B4 F8F0 6C7CB000 4
220 1 1 32B4 C63C 6C7CB000 4
221 0 1 32B4 9388 6C7CB000 4
222 1 1 3C3D CAD0 2EA2C000 2
223 1 1 3C3D 8E93 2EA2C000 2
224 1 1 375E A4AC 5D458000 1
225 0 1 32B4 DA9C BA8B0000 0
226 1 1 3C3D CAD0 4A8F0000 6 C0
227 1 1 3C3D 8E93 4A8F0000 6
228 0 1 375E A4AC 951E0000 5
229 1 f1 3C3D DD78 9F400000 3
230 0 1 3C3D A13B 9F400000 3
231 0 1 415E F0F4 E9080000 1
232 1 1 CE 4639 82BC 72E40000 0
233 0 1 415E 8C72 6CC3EC00 7 F6
234 1 1 CE 4639 82BC 435FD800 6
235 1 1 415E 8C72 0DB9B000 5
236 1 1 3C3D 9628 1B736000 4
237 1 1 375E B3D6 36E6C000 3
238 1 1 32B4 F8F0 6DCD8000 2
239 1 1 32B4 C63C 6DCD8000 2
240 0 1 32B4 9388 6DCD8000 2

174 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Tableau K.8 – Séquence de test du décodeur (feuillet 7 sur 7)

EC D MPS CX Qe A C CT B
(hexadécimal) (hexadécimal) (hexadécimal)

241 1 1 3C3D CAD0 33E60000 0


242 1 1 3C3D 8E93 33E60000 0
Marqueur détecté: octet zéro transmis au décodeur
243 1 1 375E A4AC 67CC0000 7
244 0 1 32B4 DA9C CF980000 6
245 0 1 3C3D CAD0 9EC00000 4
246 1 1 415E F0F4 40B40000 2
247 1 1 415E AF96 40B40000 2
248 1 1 3C3D DC70 81680000 1
249 0 1 3C3D A033 81680000 1
Marqueur détecté: octet zéro transmis au décodeur
250 1 1 415E F0F4 75C80000 7
251 0 1 415E AF96 75C80000 7
252 0 1 CE 4639 82BC 0F200000 6
253 1 1 4B85 F20C 3C800000 4
254 1 1 4B85 A687 3C800000 4
255 0 1 4639 B604 79000000 3
256 0 1 CE 4B85 8C72 126A0000 2

K.5 Filtre de sous-échantillonnage passe-bas pour le codage hiérarchique


Ce paragraphe donne des exemples simples de filtres de sous-échantillonnage compatibles avec le filtre de
suréchantillonnage défini en J.1.1.2.

La Figure K.5 indique la pondération des échantillons voisins pour des filtres passe-bas simples unidimensionnels,
vertical et horizontal. La sortie du filtre doit être normalisée par la somme des pondérations des échantillons voisins.

1 2 1 1

TISO1770-93/d115

Figure K.5 – Exemple de filtre passe-bas

L'échantillon central de la Figure K.5 doit être aligné sur la colonne de gauche ou la ligne du haut de l'image à haute
résolution lors du calcul de la colonne de gauche ou de la rangée du bas de l'image à basse résolution. Les valeurs des
bords sont obtenues en donnant à des échantillons situés en dehors des limites de l'image les valeurs des limites de
l'image.

Si l'image sous-échantillonnée a une largeur ou une longueur impaire, la dimension impaire est augmentée d'une unité
par copie de l'échantillon du bord droit ou de la ligne du bas, avant le sous-échantillonnage.

Rec. T.81 du CCITT (1992 F) 175


ISO/CEI 10918-1 : 1993(F)

K.6 Domaine d'application des techniques de codage DCT et spatial


Le codeur DCT est destiné au codage avec perte, dans une gamme allant de pertes tout à fait visibles, à des distorsions
bien en dessous du seuil de visibilité. Toutefois, les processus basés DCT ne peuvent généralement pas être utilisés pour
un véritable codage sans perte.

Le codeur sans perte est destiné au codage absolument sans perte. Le processus de codage sans perte est nettement moins
efficace que les processus basés DCT, pour des distorsions proches ou au-dessus du seuil de visibilité.

Le codage sans perte avec transformation point à l'entrée du codeur sans perte permet une forme de codage ayant des
pertes très limitées. (Après la transformation point à l'entrée, le codeur est encore «sans perte».) Comme la DCT est
destinée au codage avec perte, le choix des conditions d'utilisation de ces deux techniques peut présenter certaines
difficultés.

Le codage sans perte avec transformation point à l'entrée, est destiné aux applications auxquelles ne s'appliquent pas les
techniques de codage DCT. Figurent parmi celles-ci:
– le véritable codage sans perte, à précision spécifiée;
– le codage avec perte, avec une limite d'erreur définie avec précision;
– la progression hiérarchique vers un état final véritablement sans perte.

Si le codage sans perte avec transformation point à l'entrée est utilisé dans les applications pour lesquelles le
codage DCT serait efficace, les résultats seront nettement moins satisfaisants. Par exemple, une distorsion des contours
visibles apparaît en général quand la précision de la composante de luminance est réduite à 6 bits. Pour des données
d'image normales, ceci se produit à des débits binaires bien supérieurs à ceux pour lesquels la DCT donne des sorties
visuellement indiscernables de la source.

K.7 Domaine d'application des modes de fonctionnement en codage progressif


En codage progressif, deux modes de fonctionnement très différents ont été définis: le codage progressif des
coefficients DCT et la progression hiérarchique. Le codage progressif des coefficients DCT comporte deux procédures
complémentaires: la sélection spectrale et les approximations successives. Avec cette diversité de choix, il peut être
difficile de déterminer la méthode progressive à utiliser pour une application donnée.

K.7.1 Codage progressif de la DCT

En codage progressif des coefficients DCT, deux procédures complémentaires sont définies pour la décomposition du
tableau de 8 ×€8 coefficients DCT: la sélection spectrale et les approximations successives. La sélection spectrale divise
le tableau en zigzag des coefficients DCT en «bandes», une bande étant codée à chaque balayage. Les approximations
successives codent les coefficients avec une précision réduite dans le premier balayage, puis augmentée d'un bit à chaque
balayage suivant.

Une même DCT directe est calculée pour ces procédures. Quand tous les coefficients sont codés en pleine précision,
la DCT est la même qu'en mode séquentiel. De même que le codage DCT séquentiel, le codage progressif des
coefficients DCT est donc destiné aux applications nécessitant une très bonne compression, à niveau donné de distorsion
visuelle.

La technique de codage progressif la plus simple est la sélection spectrale. Cette simplicité pourra conduire, pour
certaines applications – et ce malgré la progression limitée réalisable – à utiliser uniquement la sélection spectrale. A
noter, toutefois, que l'absence de bandes haute fréquence conduit généralement – à débit binaire donné – à une qualité
d'image nettement inférieure, aux stades intermédiaires, à celle qui serait obtenue avec les progressions plus générales.
L'efficacité globale nette de codage est généralement comparable à celle du DCT séquentiel, ou légèrement inférieure.

Un système progressif beaucoup plus souple est obtenu, au prix d'une complexité supplémentaire, en ajoutant les
approximations successives à la progression par sélection spectrale. A débit binaire donné, ce système donne une qualité
d'image nettement meilleure que la sélection spectrale seule. L'efficacité globale nette de codage est généralement
comparable à celle du DCT séquentiel, ou légèrement meilleure.

K.7.2 Progression hiérarchique

La progression hiérarchique donne une succession de sorties de résolution spatiale croissante, permettant une
amélioration de la qualité d'image à résolution spatiale donnée. Les versions DCT et spatiale de la progression
hiérarchique sont autorisées et le codage progressif des coefficients DCT peut être utilisé dans une trame de la
progression hiérarchique DCT.

176 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

La progression hiérarchique DCT est destinée aux applications nécessitant une très bonne compression à niveau donné
de distorsion visuelle; la progression hiérarchique spatiale est destinée aux applications nécessitant une progression
simple avec un stade final véritablement sans perte. La Figure K.6 donne deux exemples illustrant ces progressions
hiérarchiques de base.

Procédure DCT Procédure sans perte

DCT (dif) Prédite (dif)

DCT (dif) Prédite (dif)

Sans perte (dif) Prédite (dif)


+
Transformation point

Erreur limitée sur Pas d'erreur sur


l'image reconstruite l'image reconstruite

TISO1780-93/d116

Figure K.6 – Schéma des opérations de base du mode hiérarchique

K.7.2.1 Progression hiérarchique DCT

Si une progression hiérarchique DCT utilise une résolution spatiale réduite, les premiers stades de la progression peuvent
avoir, à débit binaire donné, une meilleure qualité d'image que les premiers stades d'un codage progressif non
hiérarchique des coefficients DCT. Toutefois, au point où la distorsion entre la source et la sortie devient indiscernable,
l'efficacité de codage réalisée avec une progression hiérarchique DCT est généralement nettement inférieure à celle du
codage progressif non hiérarchique des coefficients DCT.

Bien que la progression DCT hiérarchique soit destinée au codage progressif sans perte, un stade de codage différentiel
spatial final peut être ajouté: la sortie peut alors être presque sans perte, la seule limitation résultant des différences
entre les réalisations du codeur et du décodeur IDCT. Comme les réalisations IDCT peuvent différer de façon
significative, un véritable codage sans perte après une progression hiérarchique DCT ne peut pas être garanti. Une
solution – importante – est donc d'utiliser la transformation point d'entrée du stade de codage différentiel sans perte final
pour réduire la précision de l'entrée différentielle. On limite ainsi la différence entre la source et la sortie, à un coût en
bits codés, nettement inférieur à celui du codage de la différence spatiale en pleine précision.

Rec. T.81 du CCITT (1992 F) 177


ISO/CEI 10918-1 : 1993(F)

K.7.2.2 Progression hiérarchique spatiale

Si la progression sans perte est requise, une progression hiérarchique très simple peut être utilisée, dans laquelle le
codage sans perte spatial avec transformation point à l'entrée est utilisé en un premier stade, suivi d'un ou plusieurs
stades de codage différentiel spatial. Le premier stade doit être presque sans perte, en sorte que les bits de faible poids
tronqués par la transformation point soient essentiellement aléatoires – autrement l'efficacité de compression serait
dégradée par rapport à celle du codage sans perte non progressif.

K.8 Suppression des discontinuités entre blocs dans les images décodées (effet de blocs)

Une technique simple existe pour supprimer les discontinuités entre blocs (dites «effet de blocs») pouvant se présenter
dans des images comprimées par des techniques DCT.

Quelques-uns des premiers coefficients DCT basse fréquence (cinq dans cet exemple) sont prédits à partir des neuf
valeurs DC du bloc et des huit blocs les plus voisins, les valeurs ainsi prédites étant utilisées pour supprimer les effets de
la division en blocs dans les zones régulières de l'image.

Les équations de prédiction de ces cinq premiers coefficients AC de la séquence en zigzag sont obtenues comme suit:

K.8.1 Prédiction AC

Le champ d'échantillons, dans un tableau 3 × 3 de blocs (chaque bloc contenant un tableau 8 × 8 d'échantillons) est
modélisé par une forme polynomiale bidimensionnelle du second degré:

P(x,y) = A1(x2y2) + A2(x2y) + A3(xy2) + A4(x2) + A5(xy) + A6(y2) + A7(x) + A8(y) + A9

Les neuf coefficients A1 à A9 sont déterminés de façon unique, en imposant la contrainte que la moyenne de P(x,y) sur
chacun des neuf blocs, doit donner les valeurs DC correctes.

L'application de la DCT au champ quadratique de prédiction des échantillons du bloc central donne une prédiction des
coefficients AC basse fréquence indiqués Figure K.7.

DC x x

x x

TISO1790-93/d117

Figure K.7 – Positions dans le tableau DCT des coefficients AC prédits

Les équations de prédiction ainsi obtenues sont les suivantes.

Pour le tableau bidimensionnel de valeurs DC ci-après:

DC1 DC2 DC3


DC4 DC5 DC6
DC7 DC8 DC9

178 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Les équations des prédictions non quantifiées sont:

AC01 = 1,13885 (DC4 – DC6)


AC10 = 1,13885 (DC2 – DC8)
AC20 = 0,27881 (DC2 + DC8 – 2 × DC5)
AC11 = 0,16213 ((DC1 – DC3) – (DC7 – DC9))
AC02 = 0,27881 (DC4 + DC6 – 2 × DC5)

La mise à l'échelle des coefficients AC prédits est conforme à la normalisation DCT définie en A.3.3.

K.8.2 Prédiction AC quantifiée

Les équations de prédiction peuvent être ramenées à une forme utilisant les valeurs quantifiées des coefficients DC, les
coefficients AC quantifiés étant calculés en utilisant une arithmétique entière. Une mise à l'échelle des coefficients AC
quantifiés doit toutefois être effectuée, en sorte que les coefficients prédits aient une précision binaire fractionnelle.

Les coefficients des équations de prédiction sont d'abord multipliés par 32 et arrondis au plus proche entier:

1,13885 × 32 = 36

0,27881 × 32 = 39

0,16213 × 32 = 35

Les facteurs multiplicatifs sont ensuite multipliés par le rapport des facteurs de quantification DC et AC, puis arrondis de
façon appropriée. La normalisation définie pour la DCT introduit un autre facteur 8 dans les valeurs DC non quantifiées.
Les coefficients AC quantifiés prédits sont donc donnés en fonction des valeurs DC quantifiées, par les équations
ci-après. A noter que si les valeurs DC sont multipliées (par exemple) par un facteur 4, les prédictions AC auront deux
bits fractionnels de précision relative, par rapport aux coefficients DCT quantifiés.

QAC01 = ( (Rd × Q01) + (36 × Q00 × (QDC4 – QDC6)))/(256 × Q01)


QAC10 = ( (Rd × Q10) + (36 × Q00 × (QDC2 – QDC8)))/(256 × Q10)
QAC20 = ( (Rd × Q20) + ( 9 × Q00 × (QDC2 + QDC8 – 2 × QDC5)))/(256 × Q20)
QAC11 = ( (Rd × Q11) + ( 5 × Q00 × ((QDC1 – QDC3) – (QDC7 – QDC9))))/(256 × Q11)
QAC02 = ( (Rd × Q02) + ( 9 × Q00 × (QDC4 + QDC6 – 2 × QDC5)))/(256 × Q02)

où QDCx et QACxy sont les valeurs des coefficients DC et AC, quantifiées et mises à l'échelle. La constante Rd est
ajoutée pour obtenir un arrondi correct dans la division. Rd a la valeur 128 pour les prédictions positives et –128 pour
les prédictions négatives.

Les valeurs prédites ne doivent pas supplanter les valeurs codées. Elles doivent être mises à zéro pour des coefficients
déjà non nuls. Les prédictions doivent être écrêtées si elles dépassent une valeur qui serait quantifiée à une valeur non
nulle pour la précision courante en approximations successives.

K.9 Modification de la déquantification en vue d'améliorer la qualité d'image affichée

Pour une progression où le paramètre Al de position binaire des approximations successives, est mis dans un premier
stade à 3, une quantification uniforme de la DCT donne les niveaux suivants de quantification et de déquantification,
pour des balayages successifs en approximations successives, comme indiqué à la Figure K.8.

La colonne de gauche libellée «Al» donne la position binaire spécifiée dans l'en-tête de balayage. Les valeurs absolues
des coefficients DCT quantifiés sont donc divisées par 2Al lors de ce balayage.

Concernant le balayage final (Al = 0), les points marqués «t» sont des valeurs seuil, alors que les points marqués «r»
sont des valeurs reconstruites. La sortie non quantifiée est obtenue en multipliant l'échelle horizontale de la Figure K.8
par la valeur de quantification.

L'intervalle de quantification pour une valeur nulle du coefficient est indiqué par la ligne en position basse. Lorsque la
valeur du paramètre Al de position binaire augmente, un intervalle de quantification «tout à zéro» se développe autour
de la valeur nulle du coefficient DCT. Dans le cas limite d'un facteur multiplicatif très grand, l'intervalle «tout à zéro» est
deux fois plus grand que le reste de l'intervalle de quantification.

Rec. T.81 du CCITT (1992 F) 179


ISO/CEI 10918-1 : 1993(F)

Al

3 r¯t r t¯r

2 r¯t x r¯t r t ¯r x t ¯r

1 r¯t x¯ r ¯t x¯ r¯t x¯r¯t r t¯r ¯x t¯r¯x t¯r ¯x t ¯r

0 r ¯t ¯ r¯ t ¯ r¯ t¯ r¯ t ¯ r¯ t¯ r ¯ t ¯ r¯ t¯ r ¯ t _r _t ¯ r¯ t¯ r ¯ t¯ r ¯ t ¯ r ¯ t¯ r ¯ t ¯ r ¯ t¯ r¯ t ¯r

–8 –7 –6 –5 –4 –3 –2 –1 0 +1 +2 +3 +4 +5 +6 +7 +8
T0812990-93/d118
Valeurs des coefficients DCT quantifiés

Figure K.8 – Exemple de deux stratégies de reconstruction

Deux stratégies de reconstruction sont présentées. Les points «r» sont obtenus en appliquant les règles normales
d'arrondi de la DCT à une sortie complète pleine précision. Cette stratégie semble donner une meilleure qualité d'image
avec des dispositifs d'affichages à large bande. Les points «x» sont obtenus par une autre stratégie de reconstruction, qui
tend à donner de meilleures images avec des dispositifs d'affichages à moins large bande. «x» et «r» sont identiques
pour Al = 0. Il appartient au concepteur du système de déterminer la stratégie appropriée au dispositif d'affichage utilisé.

K.10 Exemple de transformation point

L'exemple qui suit montre la différence entre le décalage arithmétique à droite de Pt et la division par 2Pt.

Après décalage, le niveau DC a des valeurs comprises entre +127 et –128. Considérons des valeurs voisines de zéro
(après décalage) et le cas Pt = 1:

Avant Avant Après Après


décalage transformation division décalage arithmétique
de niveau point par 2 à droite de 1
131 +3 +1 +1
130 +2 +1 +1
129 +1 +0 +0
128 +0 +0 +0
127 –1 +0 –1
126 –2 –1 –1
125 –3 –1 –2
124 –4 –2 –2
123 –5 –2 –3

La différence essentielle est la troncature de la précision: la division tronque la valeur absolue; le décalage arithmétique
tronque le LSB. Une division par 2 donnerait une quantification non uniforme des valeurs DC; le décalage arithmétique
à droite est donc utilisé.

Pour les valeurs positives, la division par 2 et le décalage arithmétique à droite de 1 sont identiques. Le décalage
arithmétique à droite de 1 est en effet une division par 2 lorsque la transformation point est opérée avant le décalage de
niveau.

180 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe L

Brevets
(Cette annexe ne fait pas partie intégrante de la présente Recommandation | Norme internationale)

L.1 Remarques introductives


L'attention de l'utilisateur est attirée sur le fait que – pour certains des processus de codage spécifiés dans les Annexes F,
G, H et J – la conformité à la présente Spécification peut nécessiter l'utilisation d'une invention couverte par des brevets.

La publication de la présente Spécification n'implique aucune prise de position quant à la validité dudit titre de propriété
industrielle ou de tout autre brevet en connexion avec celui-ci. Toutefois, pour chacun des brevets mentionnés dans la
présente annexe, le titulaire du brevet a déposé auprès du Groupe de travail sur les technologies de l'information (ITTF)
[information technology task force] et du TSB une déclaration aux termes de laquelle il est disposé à concéder une
licence de ses droits, selon des termes et conditions raisonnables et non discriminatoires, à tous ceux qui exprimeront le
désir d'obtenir une telle licence.

Les critères d'insertion de brevets dans la présente annexe sont:


a) le brevet a été identifié par un expert familiarisé avec les domaines techniques concernés par la présente
Spécification qui considère que l'utilisation de l'invention couverte par le brevet est requise pour la mise
en oeuvre d'un ou plusieurs des processus de codage spécifiés dans les Annexes F, G, H et J;
b) le titulaire du brevet a envoyé une lettre à l'ITTF et au TSB, déclarant qu'il est disposé à concéder une
licence à un nombre illimité de postulants, du monde entier, selon des termes et conditions raisonnables,
manifestement exempts de toute discrimination non équitable.

La liste de brevets devra être mise à jour, le cas échéant, lors de la publication de toutes les révisions de la
Recommandation | Norme internationale.

L.2 Liste de brevets


L'utilisation des brevets suivants peut être nécessaire pour la mise en oeuvre de l'un des processus spécifiés dans les
Annexes F, G, H et J, utilisant le codage arithmétique:

US 4.633.490, 30 décembre 1986, IBM, MITCHELL (J.L.) et GOERTZEL (G.): Système de


compression/décompression de données adaptatif symétrique («Symmetrical Adaptive Data
Compression/Decompression System).

US 4.652.856, 4 février 1986, IBM, MOHIUDDIN (K.M.) et RISSANEN (J.J.): Code arithmétique multi-
alphabets sans multiplication (A Multiplication-free Multi-Alphabet Code).

US 4.369.463, 18 janvier 1983, IBM, ANASTASSIOU (D.) et MITCHELL (J.L.): Compression d'image à
niveaux de gris avec mots de code fonction de l'historique de l'image (Grey Scale Image Compression with
Code Words a Function of Image History).

US 4.749.983, 7 juin 1988, IBM, LANGDON (G.): Compression de signaux à plusieurs niveaux
(Compression of Multilevel Signals).

US 4.935.882, 19 juin 1990, IBM, PENNEBAKER (W.B.) et MITCHELL (J.L): Adaptation de probabilité
pour les codeurs arithmétiques (Probability Adaption for Arithmetic Coders).

US 4.905.297, 27 février 1990, IBM, LANGDON (G.G.) Jr., MITCHELL (J.L.), PENNEBAKER (W.B.) et
RISSANEN (J.J.): Système de codage et de décodage arithmétique (Arithmetic Coding Encoder and Decoder
System).

US 4.973.961, 27 novembre 1990, AT&T, CHAMZAS (C.), DUTTWEILER (D.L.): Méthode et dispositif de
contrôle de retenue pour le codage entropique arithmétique (Method and Apparatus for Carry-over Control in
Arithmetic Entropy Coding).

US 5.025.258, 18 juin 1991, AT&T, DUTTWEILER (D.L): Estimateur de probabilité adaptative pour le
codage/décodage entropique (Adaptive Probability Estimator for Entropy Encoding/Decoding).

US 5.099.440, 24 mars 1992, IBM, PENNEBAKER (W.B.) et MITCHELL (J.L.): Adaptation des probabilités
pour les codeurs arithmétiques (Probability Adaptation for Arithmetic Coders).

Rec. T.81 du CCITT (1992 F) 181


ISO/CEI 10918-1 : 1993(F)

Demande de brevet japonais 2-46275, 26 février 1990, MEL ONO (F.), KIMURA (T.), YOSHIDA (M.) et
KINO (S.): Système de codage (Coding System).
L'utilisation des brevets suivants peut être nécessaire pour la mise en oeuvre de l'un des processus hiérarchiques spécifiés
dans l'Annexe H, utilisé avec une trame finale sans perte.
US 4.665.436, 12 mai 1987, EI OSBORNE (J.A.) et SEIFFERT (C.): Transmission de signal à bande étroite
(Narrow Bandwith Signal Transmission).
Aucun autre brevet dont l'utilisation est nécessaire pour la mise en oeuvre de l'un des autres processus spécifiés dans les
Annexes F, G, H ou J n'a été identifié à la date de publication de la présente Spécification.

L.3 Adresses à contacter pour des renseignements sur les brevets


Directeur du Bureau de la normalisation des télécommunications (ancien CCITT)
Union internationale des télécommunications
Place des Nations
CH-1211 Genève 20, Suisse
Tél: +41 (22) 730 5111
Fax: +41 (22) 730 5853
Information Technology Task Force (ITTF)
Organisation Internationale de Normalisation
1, rue de Varembé
CH-1211 Genève 20, Suisse
Tél: +41 (22) 734 0150
Fax: +41 (22) 733 3843
Program Manager, Licensing
Intellectual Property and Licensing Services
IBM Corporation
208 Harbor Drive
P.O. Box 10501
Stamford, Connecticut 08904-2501, USA
Tél: +1 (203) 973 7935
Fax: +1 (203) 973 7981 ou +1 (203) 973 7982
Mitsubishi Electric Corp.
Intellectual Property License Department
1-2-3 Morunouchi, Chiyoda-ku
Tokyo 100, Japan
Tél: +81 (3) 3218 3465
Fax: +81 (3) 3215 3842
AT&T Intellectual Property Division Manager
Room 3A21
10 Independence Blvd.
Warren, NJ 07059, USA
Tél: +1 (908) 580 5392
Fax: +1 (908) 580 6355
Senior General Manager
Corporate Intellectual Property and Legal Headquarters
Canon Inc.
30-2 Shimomaruko 3-chome
Ohta-ku Tokyo 146, Japan
Tél: +81 (3) 3758 2111
Fax: +81 (3) 3756 0947
Chief Executive Officer
Electronic Imagery, Inc.
1100 Park Central Boulevard South
Suite 3400
Pompano Beach, FL 33064, USA
Tél: +1 (305) 968 7100
Fax: +1 (305) 968 7319

182 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

Annexe M

Bibliographie
(Cette annexe ne fait pas partie intégrante de la présente Recommandation | Norme internationale)

M.1 Références générales


LEGER (A.), OMACHI (T.) et WALLACE (G.K.): Algorithme JPEG de compression d'images fixes (JPEG Still Picture
Compression Algorithm), Optical Engineering, Vol. 30, no 7, p. 947-954, 1991.

RABBANI (M.) et JONES (P.): Techniques de compression d'images numériques (Digital Image Compression
Techniques), Tutorial Texts in Optical Engineering, Vol. TT7, SPIE Press, 1991.

HUDSON (G.), YASUDA (H.) et SEBESTYEN (I.): La normalisation internationale d'une technique de compression
d'images fixes (The International Standardization of a Still Picture Compression Technique), Proc. of IEEE Global
Telecommunications Conference, p. 1016-1021, 1988.

LEGER (A.), MITCHELL (J.) et YAMAZAKI (Y.): Evaluation d'un algorithme de compression d'images fixes en vue
de la normalisation internationale (Still Picture Compression Algorithm Evaluated for International Standardization),
Proc. of the IEEE Global Telecommunications Conference, p. 1028-1032, 1988.

WALLACE (G.), VIVIAN (R.) et POULSEN (H.): Résultats de tests subjectifs d'algorithmes de compression d'images
fixes en vue de la normalisation internationale (Subjective Testing Results for Still Picture Compression Algorithms for
International Standardization), Proc. of the IEEE Global Telecommunications Conference, p. 1022-1027, 1988.

MITCHELL (J.L.) et PENNEBAKER (W.B.): Evolution de la norme de compression de données en couleur JPEG
(Evolving JPEG Colour Data Compression Standard), Standards for Electronic Imaging Systems, M. Nier, M.E.
Courtot, Editors, SPIE, Vol. CR37, p. 68-97, 1991.

WALLACE (G.K.): La norme de compression d'images fixes JPEG (The JPEG Still Picture Compression Standard),
Communications of the ACM, Vol. 34, no 4, p. 31-44, 1991.

NETRAVALI (A.N.) et HASKELL (B.G.): Images numériques: représentation et compression (Digital Pictures:
Representation and Compression), Plenum Press, New York 1988.
PENNEBAKER (W.B.) et MITCHELL (J.L.): JPEG: Still Image Data Compression Standard, Van Nostrand Reinhold,
New York 1993.

M.2 Références relatives à la DCT


CHEN (W.), SMITH (C.H.) et FRALICK (S.C.): Un algorithme de calcul rapide pour la transformation en cosinus
discret (A Fast Computational Algorithm for the Discrete Cosine Transform), IEEE Trans. on Communications, Vol.
COM-25, p. 1004-1009, 1977.
AHMED (N.), NATARAJAN (T.) et RAO (K.R.): Transformation en cosinus discret (Discrete Cosine Transform),
IEEE Trans. on Computers, Vol. C-23, p. 90-93, 1974.

NARASINHA (N.J.) et PETERSON (A.M.): Sur le calcul de la transformation en cosinus discret (On the Computation
of the Discrete Cosine Transform), IEEE Trans. on Communications, Vol. COM-26, no 6, p. 966-968, 1978.
DUHAMEL (P.) et GUILLEMOT (C.): Calcul de la transformation polynomiale de la DCT 2-D (Polynomial Transform
Computation of the 2-D DCT), Proc. IEEE ICASSP-90, p. 1515-1518, Albuquerque, New Mexico 1990.
FEIG (E.): Un algorithme DCT rapide adapté (A Fast Scaled DCT Algorithm), in Image Processing Algorithms and
Techniques, Proc. SPIE, Vol. 1244, K.S. Pennington et R. J. Moorhead II, Editeurs, p. 2-13, Santa Clara, California,
1990.
HOU (H.S.): Un algorithme récursif rapide de calcul de la transformée en cosinus discret (A Fast Recursive Algorithm
for Computing the Discrete Cosine Transform), IEEE Trans. on Acoust., Speech and Signal Processing, Vol. ASSP-35,
no 10, p. 1455-1461.
LEE (B.G.): A New Algorithm to Compute the Discrete Cosine Transform, IEEE Trans. on Acoust., Speech and Signal
Processing, Vol. ASSP-32, no 6, p. 1243-1245, 1984.

Rec. T.81 du CCITT (1992 F) 183


ISO/CEI 10918-1 : 1993(F)

LINZER (E.N.) et FEIG (E.): Nouveaux algorithmes DCT et DCT échelonnée pour architecture fusionnée de
multiplication/addition (New DCT and Scaled DCT Algorithms for Fused Multiply/Add Architectures), Proc. IEEE
ICASSP-91, p. 2201-2204, Toronto, Canada, 1991.

VETTERLI (M.) et NUSSBAUMER (H.J.): Algorithmes simples FTT et DCT avec nombre d'opérations réduit (Simple
FFT and DCT Algorithms with Reduced Number of Operations), Signal Processing, 1984.

VETTERLI (M.): Transformation en cosinus discret 2-D rapide (Fast 2-D Discrete Cosine Transform), Proc. IEEE
ICASSP-85, p. 1538-1541, Tampa, Floride, 1985.

ARAI (Y.), AGUI (T.) et NAKAJIMA (M.): Un schéma rapide DCT-SQ pour les images (A Fast DCT-SQ Scheme for
Images), Trans. of IEICE, Vol. E.71, no 11, p. 1095-1097, 1988.

SUEHIRO (N.) et HATORI (M.): Algorithmes rapides pour la DFT et d'autres transformations sinusoïdales (Fast
Algorithms for the DFT and other Sinusoidal Transforms), IEEE Trans. on Acoust., Speech and Signal Processing,
Vol. ASSP-34, no 3, p. 642-644, 1986.

M.3 Références relatives à la quantification et au modèle visuel humain


CHEN (W.H.) et PRATT (W.K.): Codeur adaptatif de scène (Scene adaptive coder), IEEE Trans. on Communications,
Vol. COM-32, p. 225-232, 1984.

GRANRATH (D.J.): Rôle des modèles visuels humains dans le traitement de l'image (The role of human visual models
in image processing), Proceedings of the IEEE, Vol. 67, p. 552-561, 1981.

LOHSCHELLER (H.): Transmission progressive de l'image, adaptée à la vision (Vision adapted progressive image
transmission), Proceedings of EUSIPCO, Vol. 83, p. 191-194, 1983.

LOHSCHELLER (H.) et FRANKE (U.): Codage d'images en couleur – Optimisation de l'algorithme et réalisation
technique (Colour picture coding – Algorithm optimization and technical realization), Frequenze, Vol. 41, p. 291-299,
1987.

LOHSCHELLER (H.): Un système de communication d'images à adaptation subjective (A subjectively adapted image
communication system), IEEE Trans. on Communications, Vol. COM-32, p. 1316-1322, 1984.

PETERSON (H.A.) et al: Quantification des composantes d'image en couleur dans le domaine DCT (Quantization of
colour image components in the DCT domain), SPIE/IS&T 1991 Symposium on Electronic Imaging Science and
Technology, 1991.

M.4 Références relatives au codage arithmétique


LANGDON (G.): Une introduction au codage arithmétique (An Introduction to Arithmetic Coding), IBM J. Res.
Develop., Vol. 28, p. 135-149, 1984.

PENNEBAKER (W.B.), MITCHELL (J.L.), LANGDON (G.) Jr. et ARPS (R.B.): Une revue des principes de base du
codeur arithmétique binaire à codage Q (An Overview of the Basic Principles of the Q-Coder Binary Arithmetic Coder),
IBM J. Res. Develop., Vol. 32, no 6, p. 717-726, 1988.

MITCHELL (J.L.) et PENNEBAKER (W.B.): Procédures optimales de codage arithmétique matériel et logiciel pour le
codeur arithmétique binaire à codage Q (Optimal Hardware and Software Arithmetic Coding Procedures for the
Q-Coder Binary Arithmetic Coder), IBM J. Res. Develop., Vol. 32, no 6, p. 727-736, 1988.

PENNEBAKER (W.B.) et MITCHELL (J.L.): Estimation de probabilité pour le codeur Q (Probability Estimation for the
Q-Coder), IBM J. Res. Develop., Vol. 32, no 6, p. 737-752, 1988.

MITCHELL (J.L.) et PENNEBAKER (W.B.): Mises en oeuvre logicielles du codeur Q (Software Implementations of
the Q-Coder), IBM J. Res. Develop., Vol. 32, no 6, p. 753-774, 1988.

ARPS (R.B.), TRUONG (T.K.), LU (D.J.), PASCO (R.C.) et FRIEDMAN (T.D.): Un circuit VLSI polyvalent pour la
compression adaptative des images en deux tons (A Multi-Purpose VLSI Chip for Adaptive Data Compression of
Bilevel Images), IBM J. Res. Develop., Vol. 32, no 6, p. 775-795, 1988.

ONO (F.), YOSHIDA (M.), KIMURA (T.) et KINO (S.): Codage arithmétique de type soustractif avec permutation
conditionnelle MPS/LPS (Subtraction-type Arithmetic Coding with MPS/LPS Conditional Exchange), Annual Spring
Conference of IECED, Japan, D-288, 1990.

184 Rec. T.81 du CCITT (1992 F)


ISO/CEI 10918-1 : 1993(F)

DUTTWEILER (D.) et CHAMZAS (C.): Estimation de probabilité dans les codeurs entropiques arithmétique et
Huffman adaptatif (Probability Estimation in Arithmetic and Adaptive-Huffman Entropy Coders), submitted to IEEE
Trans. on Image Processing.

JONES (C.B.): Un système de codage efficace des séquences source longues (An Efficient Coding System for Long
Source Sequences), IEEE Trans. Inf. Theory,Vol. IT-27, p. 280-291, 1981.

LANGDON (G.): Méthode de limitation de la retenue dans une chaîne arithmétique codée FIFO (Method for Carry-over
Control in a Fifo Arithmetic Code String), IBM Technical Disclosure Bulletin, Vol. 23, no 1, p. 310-312, 1980.

M.5 Références relatives au codage de Huffman


HUFFMAN (D.A.): Une méthode de construction de codes à redondance minimale (A Method for the Construction of
Minimum Redundancy codes), Proc. IRE, Vol. 40, p. 1098-1101, 1952.

Rec. T.81 du CCITT (1992 F) 185


Genève, 1994

Vous aimerez peut-être aussi