Compression JPEG. Benjamin Navaro et Cédric Rabasse

Documents pareils
Formats d images. 1 Introduction

Transmission d informations sur le réseau électrique

Les algorithmes de base du graphisme

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Recherche dans un tableau

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Cours Informatique Master STEP

Introduction à MATLAB R

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

LABO PROJET : IMPLEMENTATION D UN MODEM ADSL SOUS MATLAB

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Corrigé des TD 1 à 5

Projet de Traitement du Signal Segmentation d images SAR

M1107 : Initiation à la mesure du signal. T_MesSig

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP


Codage hiérarchique et multirésolution (JPEG 2000) Codage Vidéo. Représentation de la couleur. Codage canal et codes correcteurs d erreur

Initiation à la programmation en Python

NOMBRES COMPLEXES. Exercice 1 :

Le signal GPS. Les horloges atomiques à bord des satellites GPS produisent une fréquence fondamentale f o = Mhz

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

TD : Codage des images

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Cryptographie. Cours 3/8 - Chiffrement asymétrique

IPHONE BANNIÈRE CLASSIQUE DIMENSIONS. Standard : 320 x 53 (portrait) 20Ko Jpeg/Gif/Png. HD : 640 x 106 (portrait) 20Ko Jpeg/Gif/Png DESCRIPTION

Cours 7 : Utilisation de modules sous python

Plan du cours Cours théoriques. 29 septembre 2014

Projet audio. Analyse des Signaux ELE2700

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

TD1 Signaux, énergie et puissance, signaux aléatoires

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Encryptions, compression et partitionnement des données

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Correction de l examen de la première session

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Calcul Formel et Numérique, Partie I

BTS Groupement A. Mathématiques Session Spécialités CIRA, IRIS, Systèmes électroniques, TPIL

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

Algorithmique et programmation : les bases (VBA) Corrigé

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Dans l Unité 3, nous avons parlé de la

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

1. Structure d'un programme FORTRAN 95

3.2. Matlab/Simulink Généralités

Chapitre 2 Le problème de l unicité des solutions

Simulation de variables aléatoires

Intérêt du découpage en sous-bandes pour l analyse spectrale

TP: Représentation des signaux binaires. 1 Simulation d un message binaire - Codage en ligne

Livrable 2.1 Rapport d analyse et de restructuration de code monothread des modules P, T, Q et F de l encodage MPEG-4 AVC

Application 1- VBA : Test de comportements d'investissements

Réseaux Multimédia et Qualité de Service

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

LES GENERATEURS DE NOMBRES ALEATOIRES

Exercices sur SQL server 2000

Nouveau Barème W.B.F. de points de victoire 4 à 48 donnes

Initiation à l algorithmique

Conventions d écriture et outils de mise au point

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Prototype de canal caché dans le DNS

Représentation d une distribution

Angles orientés et fonctions circulaires ( En première S )

Communications numériques

Chapitre I La fonction transmission

Génie Logiciel avec Ada. 4 février 2013

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

Algorithmique & programmation

Bases de programmation. Cours 5. Structurer les données

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Lire ; Compter ; Tester... avec R

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

TD3: tableaux avancées, première classe et chaînes

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Algorithmique, Structures de données et langage C

La couche physique de l ADSL (voie descendante)

Paginer les données côté serveur, mettre en cache côté client

Algorithmique et Programmation, IMA

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Outils pour la pratique

Algorithmique I. Algorithmique I p.1/??

Expérience 3 Formats de signalisation binaire

Corrigés des premiers exercices sur les classes

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Adobe Premiere Pro Exportation

Mesure agnostique de la qualité des images.

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

SPECIFICATIONS TECHNIQUES BANNIERES SITES PRISMA / TABLETTES / MOBILE

Apprentissage Automatique

Paris Airports - Web API Airports Path finding

Transcription:

Compression JPEG Benjamin Navaro et Cédric Rabasse Résumé DCT, IDCT, décorrélation, énergie, quantification 1 Le JPEG : une introduction La norme JPEG définit les étapes de transformation d une image en une image compressée. Elle ne définit en aucun cas le format de fichier généré en sortie. Dans le langage courant on utilise donc à tort le terme de fichier JPEG pour parler du format de fichier (réellement appelé JFIF) et non de la technique de transformation et d encodage de l image. " # $!! " # $ " # $ FIG. 1 Etapes de la transformation JPEG Nous allons ici étudier la transformation permettant de représenter différemment l image pour un encodage efficace : la DCT, Discrete Cosine Transform. Tout comme la

Compression JPEG 2 transformée de Fourier, cette transformation est conservatrice puisqu elle ne fait que représenter les pixels de l image dans un autre espace. 2 Le principe de la DCT 2.1 La DCT : une technique permettant de concentrer l énergie Soit la matrice W définie par : Soit un signal x défini par : 1. Calculer x new = Wx. W = 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 x = 4 6 5 2 2. Que représente la première valeur de x new? 3. Calculer l énergie du signal x et l énergie du signal x n ew. 4. Comparer l énergie de x au carré de la première de la valeur de x new. Conclure. 2.2 La DCT : une projection fréquentielle 1. Représenter chacune des lignes de W comme un signal monodimensionnel en utilisant la fonction subplot. 2. Comparer la fréquence de chacun des signaux? 3. Conclure quant aux valeurs de x new. 2.3 La DCT : une décorrélation des pixels Soit un signal monodimensionnel x(t) = sin(t) où t = 0 : T e : 2π T e de n points avec T e = 0.01. 1. Représenter dans un espace bidimensionnel en abscisse x(t) et en ordonnée x(t + 1) (x(n) = x(0)). Que représente-t-on ainsi? 2. Soit une matrice de rotation W définie par : ( ) sin(θ) cos(θ) W = cos(θ) sin(θ)

Compression JPEG 3 avec θ = π 4. Calculer X new = WX [ x(0)... x(n 2) x(n 1) = W x(1)... x(n 1) x(0) ] Commenter le résultat en expliquant l influence de la rotation sur la corrélation de x(t) et x(t + 1). 3. Comparer la matrice W de taille 2 2 avec la matrice W de taille 4 4 vue en 2.1. Conclure. 3 La DCT en 2 dimensions Dans le format JPEG, la transformation de l image (signal bidimensionnel) par une DCT s effectue sur des blocs de 8 8 pixels sans recouvrement. Nous allons donc prendre une image de taille L L où L est un multiple de 8 afin d éviter les problèmes de transformation au bord de l image. Sur chacun des blocs, on effectue une DCT définie par : DCT(i, j) = 1 N 1 N 1 ( (2x + 1)iπ ) ( (2y + 1) jπ ) C(i)C( j) p(x, y) cos cos x=0 y=0 N : la largeur d un bloc, ici N = 8. i, j : les indices d un coefficient de la DCT dans un bloc. x, y : les indices d un pixel de l image dans un bloc. DCT(i, j) : la valeur d un coefficient dans un bloc. C(x) = 1 si x 2 = 0, C(x) = 0 sinon. La DCT inverse est définie par : IDCT(x, y) = 1 N 1 i=0 N 1 C(i)C( j)dct(i, j) cos j=0 3.1 Programmation de la DCT en 2 dimensions ( (2x + 1)iπ ) ( (2y + 1) jπ ) cos 1. Programmer une fonction mydct2d(b) où B est un bloc de N N pixels réalisant la DCT bidimensionnelle. 2. Effectuer le découpage de l image cameraman.tif de Matlab en blocs de 8 8 pixels et utiliser la fonction mydct2d sur chacun des blocs. 3. Afficher l image I DCT obtenue. Commenter (cf. question 3 du 2.1).

Compression JPEG 4 3.2 Programmation de la DCT inverse en 2 dimensions 1. Programmer une fonction myidct2d(b) où B est un bloc de N N pixels réalisant la DCT inverse bidimensionnelle. 2. Effectuer le découpage de l image I DCT en blocs de 8 8 pixels et utiliser la fonction myidct2d sur chacun des blocs. 3. Afficher l image I IDCT obtenue. La comparer à l image I. Commenter. 4 Compression d une image La tranformation d une image par DCT ne réduit en rien le nombre de coefficients pour la compresser. Il convient donc d utiliser une matrice de quantification permettant de réduire la précision de l entier codé et ne conserver que les coefficients significatifs. Il faut cependant faire un compromis entre la compression et la qualité de l image : meilleure est la compression, moins bonne est la qualité de l image. 4.1 Quantification Soit la matrice de quantification Q définie pour chacun des blocs de l image par : Q(i, j) = 1 + (1 + i + j)f q Q(i, j) : valeur du pas de quantification dans un bloc (i = 0... N 1 et j = 0... N 1). F q : facteur de qualité de la quantification. 1. Programmer une fonction quantification(n, Fq) retournant la matrice Q de taille N N avec un facteur de qualite Fq. 2. Fixer F q = 5 et calculer Q avec N = 8. Commenter. 3. Faire varier F q et expliquer l influence de F q sur la quantification. 4. Application : effectuer cette quantification pour chacun des blocs de I DCT avec Q = 5. Arrondir les valeurs calculées en utilisant round() ou int16(). On appelle cette matrice I DCTQ. Calculer I IDCT à partir de I DCTQ. Recommencer en prenant Q = 10 et Q = 20. 4.2 Taux de compression Pour calculer le taux de compression de l image obtenue, il faut d abord encoder l image dans un format proche du format final du JPEG (le JFIF). Pour cela, il faut transformer chacun des blocs 8 8 pixels de l image I DCTQ en des vecteurs de 64 coefficients en parcourant ces blocs en zigzag (cf. figure 2). 1. Expliquer l intérêt de parcourir chacun des blocs 8 8 pixels de I DCTQ en zigzag. 2. Programmer une fonction zigzag(b), retournant un vecteur z résultat du parcours en zigzag d un bloc B de 8 8 pixels.

Compression JPEG 5 FIG. 2 Parcours des blocs 8 8 pixels en zigzag Après avoir parcouru un bloc B en zigzag, il convient d encoder ce bloc. Chaque bloc sera encodé par la méthode RLE, Run-Length Encoding. Cette méthode consiste à coder une paire de valeurs : l une est la valeur du nombre, l autre est le nombre de répétitions de ce nombre. Par exemple 0000000001110000 sera codé (0, 9), (1, 3), (0, 4). 1. Utiliser la fonction rle(b) pour encoder chacun des blocs B de I DCTQ. 2. Calculer le nombre total C de coefficients (2 par paire) utilisé pour encoder I DCTQ. 3. Calculer le taux de compression T entre le nombre C de coefficients de l image encodée et le nombre total N N de pixels de l image original. 4. Faire varier F q et commenter. 4.3 Rapport signal sur bruit 1. Calculer le rapport signal sur bruit RSB entre l image original et le bruit correspond à la différence entre I et I DCTQ. 2. Faire varier F q et commenter. 5 Annexes 5.1 Fonction Matlab effectuant l encodage et le décodage RLE 1 function data = rle ( x) 2 % data = rle ( x) ( de) compresses the data with the RLE - Algorithm 3 % Compression : 4 % if x is a numbervector data {1} contains the values 5 % and data {2} contains the run lenths 6 % 7 % Decompression : 8 % if x is a cell array, data contains the uncompressed values

Compression JPEG 6 9 % 10 % Version 1.0 by Stefan Eireiner ( < a href =" mailto : stefan - e@ web. de? subject = rle "> stefan - e@web.de </a >) 11 % based on Code by Peter J. Acklam 12 % last change 14. 05. 2004 13 14 if iscell ( x) % decoding 15 i = cumsum ([ 1 x {2} ]); 16 j = zeros (1, i( end ) -1); 17 j(i (1: end -1) ) = 1; 18 data = x {1}( cumsum (j)); 19 else % encoding 20 if size ( x,1) > size ( x,2), x = x ; end % if x is a column vector, tronspose 21 i = [ find (x (1: end -1) ~= x (2: end )) length (x) ]; 22 data {2} = diff ([ 0 i ]); 23 data {1} = x(i); 24 end