AccueilAlgorithmes et IACompression d'image DCT (principe JPEG)

🖼️ Compression d'image DCT (principe JPEG)

La transformée en cosinus discrète compresse un bloc de pixels 8x8 comme JPEG. DCT-II : X_k = 2·Σx_n·cos(π(2n+1)k/2N). Quantifiez les coefficients haute fréquence. Voyez le taux de compression par rapport à la qualité.

Algorithmes et IA3DFacile60 FPS
dct-compression ↗ Ouvrir en autonome

Comment ça marche

JPEG divise l'image en blocs de pixels 8×8, décale les valeurs en soustrayant 128, puis applique la DCT-II 2D. Les 64 coefficients résultants sont divisés par une matrice de quantification (mise à l'échelle par le facteur de qualité) et arrondis en entiers. La DCT inverse reconstruit le bloc — avec une approximation avec perte. Le coefficient DC représente la moyenne du bloc ; les coefficients AC encodent le contenu de fréquence spatiale.

DCT-II : X[u][v] = (2/N) c(u)c(v) ΣΣ f[x][y] cos(π(2x+1)u/2N) cos(π(2y+1)v/2N) c(0) = 1/√2, c(k) = 1 pour k>0 Qualité → échelle : s = (100−Q)/50 si Q<50 sinon 50/Q Quantifié : Q[u][v] = arrondi(X[u][v] / (pas[u][v] · s))

La matrice de quantification standard de luminance JPEG attribue de petites tailles de pas aux basses fréquences (en haut à gauche) et de grandes tailles de pas aux hautes fréquences (en bas à droite). À faible qualité, la plupart des coefficients AC deviennent zéro, produisant des artefacts de bloc mais une petite taille de fichier.

Foire aux questions

Qu'est-ce que la transformée en cosinus discrète (DCT) ?

La DCT exprime une séquence de valeurs en termes de fonctions de base cosinus à différentes fréquences. La DCT-II est utilisée dans JPEG : X_k = 2·Σ x_n·cos(π(2n+1)k/2N) pour k=0…N-1.

Pourquoi JPEG utilise-t-il des blocs de 8×8 ?

Les blocs de 8×8 équilibrent coût computationnel et corrélation : les pixels voisins sont très corrélés, donc la DCT à 64 coefficients concentre efficacement l'énergie dans les termes basse fréquence. Des blocs plus grands augmentent les artefacts à faible qualité.

Qu'est-ce que la quantification en JPEG ?

La quantification divise chaque coefficient DCT par une taille de pas et arrondit à un entier. Les coefficients haute fréquence utilisent des tailles de pas plus grandes, donc ils deviennent zéro — la principale source de compression avec perte. Qualité plus basse → pas plus grands → plus de zéros.

Que sont les artefacts de compression JPEG ?

Les artefacts de bloc apparaissent aux limites des blocs car les blocs 8×8 adjacents sont compressés indépendamment. Les artefacts d'ondulation (phénomène de Gibbs) apparaissent près des bords nets lorsque les coefficients haute fréquence sont écartés.

Pourquoi la DCT concentre-t-elle mieux l'énergie que la DFT ?

La DCT suppose implicitement une extension symétrique paire du signal, éliminant la discontinuité aux limites de bloc que la DFT verrait. Cela fait de la base DCT une transformée de Karhunen-Loève quasi optimale pour les statistiques d'image typiques.

Qu'est-ce que le coefficient DC ?

Le coefficient DC (k=0) est proportionnel à la valeur moyenne des pixels du bloc. C'est le plus grand coefficient et il est généralement codé avec DPCM (différence par rapport au DC du bloc précédent) en JPEG.

Qu'est-ce que le balayage en zigzag en JPEG ?

Après quantification, la matrice de coefficients 8×8 est lue dans un ordre en zigzag de la basse à la haute fréquence. Cela regroupe les coefficients basse fréquence non nuls au début et produit de longues séries de zéros pour le codage entropique.

Comment le sous-échantillonnage de chrominance améliore-t-il la compression JPEG ?

La vision humaine est plus sensible à la luminance (Y) qu'à la chrominance (Cb, Cr). JPEG convertit RGB en YCbCr et sous-échantillonne Cb/Cr (par exemple, 4:2:0 divise les deux dimensions par deux), réduisant les données avant même que la DCT ne s'exécute.

Quelle est la différence entre JPEG et JPEG 2000 ?

JPEG utilise la DCT par blocs 8×8 ; JPEG 2000 utilise la transformée en ondelettes (DWT) sur l'image entière. JPEG 2000 évite les artefacts de bloc, prend en charge un mode sans perte, et fournit une meilleure qualité à des taux de compression élevés, mais est plus lent.

Quel facteur de qualité dois-je utiliser pour les images web ?

Une qualité de 75–85 est standard pour un usage web, offrant un bon équilibre entre taille de fichier et qualité visuelle. Une qualité inférieure à 60 provoque des artefacts de bloc visibles. Pour les vignettes, une qualité de 50–65 est souvent acceptable.

À propos de cette simulation

Cette simulation exécute le cœur exact de la compression JPEG sur un seul bloc de pixels 8×8 : une transformée DCT-II 2D, une division par la matrice de quantification de luminance JPEG standard mise à l'échelle par le facteur de qualité choisi, et une DCT inverse pour reconstruire le résultat avec perte. Changer de type de motif montre comment les dégradés, les bords, les damiers et le bruit aléatoire se compressent de façon complètement différente sous le même réglage de qualité.

🔬 Ce que ça montre

Quatre panneaux 8×8 côte à côte — Original, Coefficients DCT (à échelle logarithmique), Reconstruit et Erreur×5 — ou, après avoir basculé la vue, une carte thermique rouge/bleu des coefficients quantifiés eux-mêmes avec leurs valeurs entières imprimées sur chaque cellule.

🎮 Comment l'utiliser

Choisissez un motif de bloc dans le menu déroulant, faites glisser le curseur Facteur de qualité de 1 à 100 pour observer le compromis entre taux de compression et PSNR en temps réel, ajustez le Zoom pour un examen plus rapproché, et appuyez sur Basculer la vue (ou la touche I) pour inspecter directement la grille de coefficients quantifiés.

💡 Le saviez-vous ?

Le motif Bruit aléatoire est le pire cas pour tout ce schéma — car la DCT ne concentre bien l'énergie que lorsque les pixels voisins sont corrélés, le bruit disperse une énergie à peu près égale sur les 64 coefficients, donc même à des réglages de qualité élevés le taux de compression s'améliore à peine, contrairement au motif Dégradé où presque tout le bloc s'effondre sur le seul coefficient DC.

Foire aux questions

Pourquoi le motif Bord net produit-il des artefacts « Erreur×5 » visibles que Dégradé ne produit pas ?

Un bord net à l'intérieur du bloc a de l'énergie répartie sur de nombreux coefficients DCT haute fréquence, et ce sont exactement les coefficients que la matrice de quantification divise par les plus grandes tailles de pas — une fois quantifiés à zéro, la DCT inverse ne peut pas récupérer la transition nette, produisant l'ondulation de type Gibbs visible dans le panneau d'erreur.

Pourquoi abaisser le curseur de Qualité augmente-t-il autant la compression « Coeff non nuls » ?

Le facteur d'échelle de quantification croît fortement en dessous de la qualité 50 (échelle = 5000/Q), multipliant chaque entrée de la matrice de quantification JPEG et poussant de plus en plus de petits coefficients AC à s'arrondir exactement à zéro — les statistiques Coeff non nuls et Compression se mettent à jour en direct pour montrer moins de coefficients survivants à faible qualité.

Que mesure réellement le nombre PSNR ici ?

Le PSNR (rapport signal sur bruit de crête) est calculé directement à partir de l'erreur quadratique moyenne entre le bloc 8×8 original et reconstruit en utilisant 10·log10(255²/MSE) — un PSNR plus élevé signifie une reconstruction plus fidèle, et vous pouvez le voir grimper vers l'infini à mesure que vous augmentez la qualité et que le MSE se rapproche de zéro.

Pourquoi seule une poignée de cellules dans la carte thermique des coefficients ont-elles de grands nombres ?

Pour les motifs structurés, la DCT 2D concentre la majeure partie de l'énergie du bloc dans les coefficients basse fréquence près du coin supérieur gauche (u=0, v=0 est le terme DC), ce qui explique précisément pourquoi la matrice de quantification JPEG attribue à ces cellules de petites tailles de pas — les grands nombres survivants que vous voyez sont presque toujours regroupés là.

Pourquoi le motif Damier se comporte-t-il si différemment du Dégradé à la même qualité ?

Un damier alterne chaque pixel, ce qui est la fréquence spatiale la plus élevée possible et correspond presque entièrement à la seule fonction de base DCT de plus haute fréquence plutôt qu'au terme DC — donc à faible qualité ce coefficient est entièrement quantifié à zéro et la reconstruction s'effondre en un bloc gris uni, contrairement au dégradé qui survit car son énergie se trouve dans des fréquences basses et bien préservées.

⚙ Sous le capot

La transformée en cosinus discrète compresse un bloc de pixels 8×8 comme JPEG. DCT-II : X_k = 2·Σx_n·cos(π(2n+1)k/2N). Quantifiez les coefficients haute fréquence. Voyez le taux de compression par rapport à la qualité.

DCTJPEGcompression d'imagetransformée en cosinus discrètequantification

3D · Moteur Three.js / WebGL · Cible 60 FPS · Fonctionne entièrement côté client, sans installation

Qu'avez-vous trouvé ?

Ajouter des étapes de reproduction (facultatif)