31 janvier 2023 — Transformée en cosinus, PCA
Pour compresser une image, la norme JPEG utilise une représentation intermédiaire obtenue par un changement de base orthogonale, la transformée en cosinus.
Sous certaines conditions, cette représentation présente une propriété de compaction : l’information est « concentrée » dans la nouvelle base sur un petit nombre de coefficients.
À partir des propriétés statistiques d’un signal, il est possible de construire une base orthogonale optimale du point de vue de la compaction : c’est la transformation de Karhunen–Loève, utilisée pour l’analyse en composantes principales.
Nous allons présenter ici la transformée en cosinus utilisée dans la norme JPEG et verrons comment l’analyse en composantes principales nous éclaire quant à l’efficacité d’une telle transformation.
Dans la norme JPEG, une image est divisée en blocs de pixels, qui sont ensuite compressés individuellement.
Cette procédure repose sur un changement de base, utilisant la transformée en cosinus discrète bidimensionnelle.
Pour ce faire, un bloc est assimilé à un signal que l’on va représenter dans une base différente.
En pratique, l’image est composée de plusieurs de ces signaux représentant les intensités en rouge, vert et bleu. Nous considérons ici un unique signal correspondant à une image en niveaux de gris.
La base choisie pour représenter le signal est celle de la transformée en cosinus bidimensionnelle, composée des signaux définis par :
Cette base est orthogonale, ce qui signifie que la transformation s’obtient par un calcul de produit scalaire (en prenant soin de normaliser les vecteurs ).
Concrètement, voici une représentation des vecteurs de base obtenus :
La transformée en cosinus de est la fonction définie par .
Le code source de l’animation est disponible ici.
La quantification est la phase de la compression JPEG durant laquelle de l’information est perdue.
On introduit une matrice de quantification , comme celle définie ci-dessous :
Chaque coefficient de la transformée va être « réduit » par le coefficient correspondant.
Concrètement, les coefficients de aux positions correspondant à des grandes valeurs de vont avoir tendance à être effacés.
Il s’agit (à peu près) des coefficients situés en bas et à droite de la matrice, qui correspondent à des fréquences plus élevées et donc à des détails plus fins.
Ces coefficients sont généralement plus faibles pour une image suffisamment régulière — sans variation brusque d’intensité entre pixels proches.
En traitement du signal, on parle de propriété de compaction d’énergie pour signifier que le signal concentre une grande partie de son « énergie » dans un faible nombre de termes de cette somme.
La transformée de Fourier discrète (DFT) est une autre transformée reposant sur un changement de base orthogonale. Pourquoi ne pas l’utiliser directement ?
On montre en fait que la transformée en cosinus (DCT) correspond à une transformée de Fourier discrète d’un signal construit en symétrisant .
Prendre directement la transformée de Fourier discrète du signal source introduirait des composantes de hautes fréquences du fait de la discontinuité entre deux extrémités du signal — qui n’est pas périodique.
Ces aspects sont notamment évoqués dans le cours de Stéphane Mallat au Collège de France.
La transformée en cosinus, utilisée par JPEG, a été introduite au début des années 1970 par Nasir Ahmed. Dans un article, il revient sur cette découverte et indique :
The results again showed that this transform performed better than all the others, and its performance compared very closely with that of the KLT.
KLT désigne ici la transformée de Karhunen–Loève, également connue dans le cas d’un signal discret comme l’analyse en composantes principales (PCA).
Cette transformation consiste à construire une base orthogonale dans laquelle représenter le signal, en s’appuyant sur les propriétés statistiques de celui-ci.
On modélise un signal de taille comme une variable aléatoire que l’on suppose centrée (i.e. pour tout ).
La matrice de covariance de est la matrice définie par :
Cette matrice est symétrique réelle positive, donc diagonalisable avec des valeurs propres réelles et une matrice de passage orthogonale.
Considérons la variable aléatoire , qui correspond à la représentation de dans une base de vecteurs propres de . La matrice de covariance de est la matrice diagonale de coefficients diagonaux .
En particulier, on remarque que :
On retrouve la propriété de compaction de l’énergie, et on peut montrer que ce changement de base est optimal à cet égard (c’est abordé ici).
Pour cette raison, l’analyse en composantes principales est souvent utilisée pour de la réduction de dimension, c’est-à-dire pour représenter approximativement un signal de grande dimension avec un nombre de variables .
Notons qu’en pratique, la base de composantes principales n’est pas calculée en diagonalisant la matrice de covariance (trop grande) mais en calculant la décomposition en valeurs singulières du jeu de données.
C’est ainsi que procède par exemple la fonction PCA de scikit-learn.
L’analyse en composantes principales est optimale du point de vue de la compaction d’énergie — pourquoi alors ne pas l’utiliser pour la compression d’image ?
On peut par exemple considérer le jeu de données des sous-images d’une image source et en déduire une base optimale pour la représentation de ces sous-images.
La base obtenue a de bonnes propriétés de compaction… mais elle dépend de l’image source. Cette méthode nécessite d’enregistrer les composantes principales en plus des représentations des sous-images, afin de pouvoir reconstruire l’image par transformation inverse.
Comme expliqué ici, la transformée en cosinus s’affranchit de ce problème en définissant une unique base commune.
Par ailleurs, il semble expérimentalement qu’elle fournisse des capacités de compaction proches de celles obtenues avec la PCA. Ceci peut également se justifier théoriquement en considérant que les images correspondent à des réalisations de processus stationnaires.
Un processus stationnaire est une séquence aléatoire dont les propriétés statistiques sont invariantes par translation. En particulier, le coefficient de la matrice de covariance ne dépend que de et la matrice est circulante.
Les matrices circulantes étant diagonalisées dans une base de vecteurs propres correspondant à la transformée de Fourier discrète, on retrouve pour ces processus des composantes principales se développant comme sommes de fonctions trigonométriques.
Maths et applications, avec les mains et avec du code 💻
Suivre sur Twitter