• Aucun résultat trouvé

Compression d’images ENSEA 3ième année SyM / Master SIC

N/A
N/A
Protected

Academic year: 2022

Partager "Compression d’images ENSEA 3ième année SyM / Master SIC"

Copied!
48
0
0

Texte intégral

(1)

Compression d’images

ENSEA 3ième année SyM / Master SIC

David Picard

ETIS / ENSEA - Université de Cergy-Pontoise - CNRS UMR 8051 F-95000 Cergy-Pontoise Cedex, France

2011

(2)

Format d’image brut

16 11 10 16 24 40 12 12 14 19 26 58 14 13 16 24 40 57 14 17 22 29 51 87 18 22 37 56 68 109 24 35 55 64 81 104

Matrice de pixels 3 types d’images

Image noir et blanc⇒1bit par pixel (peu commun)

Image niveau de gris⇒8 bits par pixel (ou 12, 16, peu commun) Image Couleur⇒NbChanelsx8bits par pixel (souvent 3 cannaux -

(3)

Quantité d’information

Taille utilisée pour stocker l’image

Cas d’une image niveau de gris de taille MxN : M×N×8 bits utilisés

Taille de l’information contenue

En fait, l’image concerne un scan de document texte (beaucoup de blanc, quelques lignes noires ) :

Probabilité de blanc :P(0) =0.8 Probabilité de noir :P(1) =0.2

Entropie de Shannon :−(0.8∗log2(0.8) +0.2∗log2(0.2)) =0.7 Taille nécéssaire : 0.7×M×N bits

Rappel : Entropie de Shannon=Mesure de la quantité d’information

(4)

Système de communication de Shannon

Comment transmettre efficacement l’info ?⇒codage de source Comment transmettre robustement l’info ?⇒codage de cannal Cas de la compression d’images

Codage de source : réduire le nombre de bits utilisés pour transmettre l’image

(5)

Transformation :

De la source vers un signal plus compact : compression (ou encodage)

Du signal plus compact vers la destination : décompression (ou décodage)

Deux grands principes des algo de compression d’image :

1 Réduire la redondance des données (réduire la quantité d’info en choisissant mieux les symboles)

2 Produire une image reconstruite avec une erreur insignifiante par rapport à l’originale (approximer par un signal plus compact)

⇒Possibilité de combiner les deux !

(6)

Quantification scalaire

Découpage de l’amplitude du signal en un nombre fini de valeurs possibles :

Dans le cas d’une image :

Chaque bande est découpé en N valeurs possibles

Le pixels prends la valeur la plus proche sur chaque bande

⇒Réduit le nombre de couleurs présentes dans l’image à

(7)

Quantification adaptative/vectorielle

Découpage adaptatif de l’espace couleur en une palette de taille fixe (utilisation d’un algorithme de clustering)

(8)

Tramage - Dithering

Bruit ajouté volontairement afin de répartir les erreurs de quantification.

Exemple : Floyd-Steinberg

Diffusion de l’erreur de quantification au voisinage du pixel :

0 0 0

0 0 7

3 5 1

(9)

Codage entropique - Run Length Coding

Principe : Dénombrer les symboles identiques qui se suivent.

Exemple : lignes de pixels blancs ou noirs

WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWW WWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW

⇒67 symboles Résultat

12W1B12W3B24W1B14W

⇒18 symboles

Particulièrement efficace dans le cas de longue répétition de symboles (régions uniformes en couleur de l’image)

(10)

Codage entropique - LZW

Principe : Dictionnaire à la volée (déductible au décodage) Exemple : ABABCABC

In Mem Out Dico

A - - -

B A A AB = [256]

A B B BA = [257]

B A - -

C AB [256] ABC = [258]

A C C CA = [259]

B A - -

C AB - -

- ABC [258] -

Résultat : AB[256]C[258] = 5×9 bits au lieu de 8×8 bits

(11)

Graphics Interchange Format - GIF

Caractéristiques

8 bits par pixels⇒256 couleurs dans l’image Pixels compressées par LZW⇒pas de perte

Le dictionnaire est déduit de l’image, si elle contient plus de 256 couleurs il faut la quantifier⇒pertes possible en prétraitement Améliorations :

Possibilité de coder des animations : suite d’images de palettes différentes

Possibilité de coder des images en vraies couleurs en animation (autant d’images que de palettes de 256 couleurs nécéssaires)

(12)

Compression avec pertes

Idée : construire une image visuellement proche de l’original, mais plus compacte.

Image “proche” 100 fois plus petite...

(13)

Proche ?Mesures d’erreur

Mean Square Error (MSE) : MSE = 1

m n

m−1

X

i=0 n−1

X

j=0

[I(i,j)−K(i,j)]2 (1) Moyenne des carrés des erreurs entre original et copie.

Peak Signal to Noise Ratio (PSNR) :

PSNR =10·log10 MAX2I MSE

!

(2) Rapport entre l’intensité max et l’erreur moyenne.

(14)

Principe de la compression avec pertes

Schéma le plus courant :

1 Trouver une transformation qui sépare l’information visuellement importante de l’information non perçue.

2 Appliquer une quantification pour supprimer les détails peu perçus.

3 Appliquer une codage entropique sur le signal quantifié (efficace car beaucoup de zéros à l’issue de la quantification).

(15)

Exemple naïf

FFT + suppression des hautes fréquences (filtre passe bas)

0

100

200

300

400

500

0 100 200 300 400 500

0

100

200

300

400

500

0 100 200 300 400 500

Image lena FFT

(16)

Exemple naïf

FFT + suppression des hautes fréquences (contours)

0

100

200

300

400

500

0 100 200 300 400 500

0

100

200

300

400

500

0 100 200 300 400 500

Image lena FFT filtrée

(17)

Exemple naïf

FFT + suppression des hautes fréquences (contours)

0

100

200

300

400

500

0 100 200 300 400 500

0

100

200

300

400

500

0 100 200 300 400 500

Image lena iFFT de lena filtrée

(18)

Exemple naïf

Erreur entre l’original et la version compressée :

0

100

200

300

400

500

0 100 200 300 400 500

(19)

Exemple naïf

Bilan de compression :

0

100

200

300

400

500

0 100 200 300 400 500

0

100

200

300

400

500

0 100 200 300 400 500

512×512×8bits=262ko 192×256×8bits+nb_zeros≈75ko

(20)

Format JPEG

Objectifs (1991) :

Atteindre un taux de compression proche de l’état de l’art et une qualité d’image excellente.

Être capable de compresser n’importe quelle image couleur, en niveaux de gris, de n’importe quelle taille.

Avoir une complexité qui autorise des implantations software sur des machines courantes, et hardware à bas coûts.

(21)

Schéma général

(22)

Séparation en blocs

Encodage de la séquence des sous-imagettes 8×8 pixels.

(23)

Transformée en cosinus discrète - DCT

Fonction direct (FDCT pour Forward DCT) : Fu,v =

7

X

x=0 7

X

y=0

α(u)α(v)fx,ycos π

8

x +1 2

u

cos

π 8

y +1

2

v

Avecu la fréquence horizontale,v la fréquence verticale et un facteur de normeα(u) =

q1

8, siu=0 q2

8, sinon Fonction inverse (IDCT) :

fx,y =

7

X

u=0 7

X

v=0

α(u)α(v)Fu,vcos π

8

x+1 2

u

cos

π 8

y +1

2

v

(24)

DCT - Exemple

Image lena :

0

100

200

300

400

500

0 100 200 300 400 500

50

100

150

200

250

50 100 150 200 250

Originale Transformée

(25)

DCT - Exemple

Imagette 8×8 de lena :

1

2

3

4

5

6

7

8

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

1 2 3 4 5 6 7 8

Originale Transformée

(26)

Quantification scalaire

Idée : Allouer plus de bits pour les basses fréquences et moins de bits pour les hautes fréquences.

Q=

16 11 10 16 24 40 51 61

12 12 14 19 26 58 60 55

14 13 16 24 40 57 69 56

14 17 22 29 51 87 80 62

18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99

Matrices de quantification issues d’expériences psycho-visuelles.

(Mise à zéro d’un grand nombre de coefficients non visibles)

(27)

Exemple sur l’image globale

Quantification de l’image globale :

50

100

150

200

250

50 100 150 200 250

50

100

150

200

250

50 100 150 200 250

50

100

150

200

250

50 100 150 200 250

50

100

150

200

250

50 100 150 200 250

(28)

Codage entropique 1 : RLC

Parcours de chaque bloc 8x8 en zig-zag :

Optimise le nombre de zéros (hautes fréquences) rencontrés⇒Run Length Coding efficace.

( Rappel RLC : Remplace les répétitions de symboles BBAAAAACCAAAA⇒2B5A2C4A )

(29)

Codage entropique 1 : RLC

Composantes continues (premier coefficient) et harmoniques codées séparément

Moyenne de bloc adjacent souvent identique⇒meilleur RLC Codage sous forme d’une suite de symboles 1 et 2 :

Symbole 1 : paire {Runlength, Size}

Runlength (∈[0,15]) = nombre de zéros qui se suivent

Size = nombre de bits nécéssaires pour coder le symbole 2 suivant {15,0}représente 16 zéros à la suite

{0,0}représente la fin de bloc (EOB)

4x{15,0}+EOB = un bloc complet de zéros

Symbole 2 : valeur d’amplitude d’un coefficient non nul (nombre de bits variable)

(30)

Codage entropique 2 : Huffman

2 tables de codage différentes pour les composantes continues et les composantes harmoniques :

Composantes continues (moyenne du bloc - premier coefficient) codage de Huffman à part.

Composantes harmoniques (autres coefficients) :

Symboles 1 : Codage de Huffman sur 16 (Runlength) x 10 (Size) + EOB = 161 entrées

Symboles 2 : laissés tels quels, pas de codage.

(31)

Encodage progressif

Envoyer les données de manière à pouvoir reconstruire l’image 2 options possibles

Tranches horizontales : dans l’ordre des coefficients DCT Tranches verticales : dans l’ordre du MSB vers le LSB

(32)

Cas des images couleurs

Transformation de l’espace RGB vers un espace Luminance-chrominance

Y Cr Cb

=

0.299 0.587 0.114

−0.169 −0.331 0.500 0.500 −0.419 −0.081

R G B

+

0 128 128

Sous-échantillonage des composantes de chrominance (↓2 complet = 4 :2 :0 ou seulement horizontal 4 :2 :2)

Matrices de quantification spécifique pour les canneaux de chrominance.

(33)

Effets de blocs

Forte compression, blocs uniformes⇒limites des blocs visible

296ko 2.9ko

(34)

JPEG2000

Points clés :

Performances supérieures (PSNR) à faible bit-rate (< 0.25 bit/pixel)

Jusqu’à 38 bits de précision par pixel (seul standard > 16) Grandes images (taille codée sur 32bits)

Compression avec et sans perte Possibilité de taille ciblée

(35)

Principe

(36)

Prétraitements

Tiling

Découpage en blocs adjacents (généralement 256x256 ou 512x512) appelés "tiles"

Traitement indépendant de chaque tile

Ressources nécéssaires réduites avec de petites tiles, mais moins bonne compression

Centrage

Centrage des tiles de manière à avoir une moyenne nulle Transformation couleur

Comme pour jpeg, passage dans un espace luminance-chrominance

(37)

Transformée en ondelettes discrète

Pour chaque tile :

Décomposition dyadique jusqu’à 32 niveaux (rarement utile au dessus de 5)

Filtres utilisés

CDF 9/7 pour la compression avec pertes CDF 5/3 pour la compression sans perte

(38)

Exemple (CDF 9/7)

50

100

150

200

250

50 100 150 200 250

50

100

150

200

250

50 100 150 200 250

(39)

Quantification

Quantification scalaire de chaque bande Ajout d’une zone double centrée sur l’origine

qb(i,j) =sign(yb(i,j))

"

|yb(i,j)|

b

#

(3) Avecbla bande,yb(i,j)le site, et∆ble pas de quantification

(40)

Codage entropique

Découpage de chaque bande en blocs (code blocks), souvent 64x64 ou 32x32

Chaque bloc décomposé enP bit-planes(du MSB au LSB) 2 étapes de codage

Tier-1 : Codage de chaque bloc

Tier-2 : Codage de l’information des mot de code obtenus en 1

(41)

Fractional bit-plane coding (Tier-1)

Embedded Block Coding with Optimized Trucation (EBCOT) Codage en trois passes

1 Significance Propagation pass (SPP) : codage des premiers bits non nuls d’un échantillon

2 Magnitude Refinement pass (MRP) : codage des bits non nuls non codé en SPP

3 Cleanup pass (CUP) : codage des bits restant (avec une forme de RLC)

Parcours vertical de l’image (pattern en ’N’ à l’envers).

Utilisation des voisinnages du bits codé dans le plan dans la SPP et la MRP (pixels voisin→luminance proche).

(42)

Compression fractale

Iterated function systems

Un système de fonctions itérées est un ensemble de fonctions contractantes

Une fonction contractante est une fonctionf avec un point fixe x?=f(x?)tel que toute suitexn+1=f(xn)converge versx? (théorème du collage)

⇒Principe d’une photocopieuse qui dupliquerait l’image en de plus petits exemplaires

(43)

Encodage

Chercher la collection de transformations affines{wi}

yi =wi(x) =Ax+b (4) Qui minimisent l’erreur entre les petits blocs (yi) et les gros blocs (x)

(44)

Décodage

On part d’une image de bruit

(45)

Décodage

On applique{wi}i

(46)

Décodage

On itère

(47)

Décodage

On itère encore

(48)

Décodage

Le théorème du collage fait converger vers l’original

Références

Documents relatifs

Calculer la taille du fichier si l’on codait l’information de manière classique, à l’aide d’un code à longueur fixe comprenant 8 bits.. Évaluer le gain en taille de

Proposer un code binaire à l’aide de la méthode de Huffman et calculer la longueur moyenne des mots de celui-ci.. Expliquer le

A l'aide d'un diaporama, le professeur présente la ompression RLE puis elle de Human.. Ensuite, les élèves pratiquent le odage de diérent mots donnés par

Toute suite de bits ou de caractères identiques est remplacée par un couple (nombre d’occurrences ; bit ou caractère répété).... Toute suite de bits ou de caractères identiques

Le codage arithmétique, comme toute autre technique de compression statistique, dépend uniquement de la distribution probabiliste des symboles à coder, toutefois, grâce à

Théorème 3.1 — fondamental du codage source — Dans le codage d’une

Les Etats-Unis semblent relativement en avance, ayant plusieurs millions de téléspectateurs desservis par des chaînes en télévision numérique, diffusées par câble

Pour tout code préfixe K mots sur un alphabet de D symboles dont les mots codes ont pour longueur n 1 ,n 2 ,…,n k , ces entiers satisfont.. Inversement, étant donnés des entiers n