La transformée s’effectue sur chaque tuile de chaque composante. Elle s’effectue sur une grille dyadique, i.e. chaque itération des filtres d’analyse est suivie d’une décimation par 2. Elle décompose l’image en 3NL + 1 sous-bandes où NL est le nombre de niveaux de décomposition (le nombre d’itérations des filtres d'analyse). La norme prévoit un nombre de niveaux de décomposition maximal de 32.
Il est possible d’utiliser deux types de transformées en ondelettes dans JPEG 2000.
JPEG 2000 permet l’implémentation de ces filtres soit par une classique convolution ou par la méthode du « lifting ».
Dans certains cas, il peut être intéressant de découper l’image en tuiles (de l’anglais tile : tuile, carreau). Il s’agit simplement d’un découpage rectangulaire de l’image, découpage à spécifier, qui est généralement utilisé pour compresser des images de grande taille. Les tuiles sont alors un moyen de réduire la complexité mémoire pour le codeur comme pour le décodeur, en travaillant sur des sous-images indépendantes. Les tuiles peuvent avoir un impact visuel : on perçoit parfois les bornes des tuiles (lignes horizontales et verticales sur l’image).
Par défaut, l’image entière est considérée comme une seule tuile.
La première étape, très simple, consiste à transformer les valeurs des pixels en valeurs signées. Typiquement, on passe d’une représentation de [0 255] à [-128 127], afin d’avoir un signal centré autour de zéro.
La transformée couleur est optionnelle. Elle consiste à passer de l’espace couleur de l’image d’origine (RVB en général) à l’espace couleur YUV (1 luminance, 2 chrominances) plus adapté pour la compression car les 3 composantes sont beaucoup moins corrélées.
Deux transformées sont spécifiées : une irréversible (ICT pour Irreversible Component Transform), à coefficients réels, et une réversible (RCT pour Reversible Component Transform) à coefficients entiers. L’intérêt de la RCT est d’être utilisée en combinaison avec la transformée en ondelette réversible 5/3 pour la compression sans pertes.
Bien que la RCT puisse être utilisée pour du codage avec pertes, c’est généralement l’ICT qui est utilisée car elle donne de meilleurs résultats.
Le codage entropique s'effectue indépendamment sur un code-bloc, un ensemble de coefficients d'ondelettes quantifiés d'une sous-bande. Le codage est constitué de deux étapes.
La première étape est l'algorithme EBCOT (Embedded Block Coding with Optimal Truncation), inventé en 1998 par David Taubman. Cet algorithme est un codeur par plan de bits. Chaque plan est encodé en trois passes : une passe de propagation de la signifiance (Significance Propagation), une passe d’affinage de l’amplitude (Magnitude Refinement), et une passe de nettoyage (Cleanup).
La deuxième étape consiste en un codage arithmétique de la sortie EBCOT, par un codeur arithmétique dit codeur-MQ.
Cette partie de la norme est la plus consommatrice en CPU.