COMPRESSION/DECOMPRESSION D UNE IMAGE BINAIRE



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

Transmission d informations sur le réseau électrique

TD : Codage des images

Projet Matlab : un logiciel de cryptage

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

1 Introduction au codage

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Représentation des Nombres

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Formats d images. 1 Introduction

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

Conversion d un entier. Méthode par soustraction

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Compression de Données - Algorithme de Huffman Document de Conception

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Compression Compression par dictionnaires

Licence Sciences et Technologies Examen janvier 2010

V- Manipulations de nombres en binaire

Codage d information. Codage d information : -Définition-

Structure du format BMP, sa lecture, sa construction et son écriture

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

Chapitre 13 Numérisation de l information

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Théorie et codage de l information

nom : Collège Ste Clotilde

Gestion de gros fichiers binaires (images) en APL*PLUS III

TD 1 - Transmission en bande de passe

Introduction à MATLAB R

Traitement bas-niveau

Utilisation du logiciel ImageJ gratuit

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Chapitre 1 I:\ Soyez courageux!

ISO/CEI NORME INTERNATIONALE

Opérations de base sur ImageJ

Traitement numérique de l'image. Raphaël Isdant

Chap17 - CORRECTİON DES EXERCİCES

TP 1. Prise en main du langage Python

L utilisation d un réseau de neurones pour optimiser la gestion d un firewall

TP : Gestion d une image au format PGM

Q6 : Comment calcule t-on l intensité sonore à partir du niveau d intensité?

INFO 2 : Traitement des images

Bases de données documentaires et distribuées Cours NFE04

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

Python - introduction à la programmation et calcul scientifique

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

note technique 1RWLRQVVXUODFRPSUHVVLRQ GHVGRQQpHVGDQV OHVDSSOLFDWLRQVPXOWLPpGLDV Direction de l'ingénierie éducative

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Cours Informatique Master STEP

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Chapitre 22 : (Cours) Numérisation, transmission, et stockage de l information

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

ASR1 TD7 : Un microprocesseur RISC 16 bits

Programmation C. Apprendre à développer des programmes simples dans le langage C

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Le codage informatique

Les opérations binaires

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

Maintenir un service de traitement de son ou d image d ordinateur

TP SIN Traitement d image

Documentation SecurBdF

Chaine de transmission

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

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

Informatique Générale

Introduction à l algorithmique et à la programmation (Info 2)

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

Algorithme. Table des matières

La mémoire. Un ordinateur. L'octet. Le bit

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

Le format OpenPGP. Traduit par : Sébastien Person. personseb@yahoo.fr. Matthieu Hautreux. matthieu.hautreux@insa-rouen.fr.

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

de calibration Master 2: Calibration de modèles: présentation et simulation d

Définitions. Numéro à préciser. (Durée : )

L AUTOMATISME LE SIGNAL

Application 1- VBA : Test de comportements d'investissements

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Transmission de données. A) Principaux éléments intervenant dans la transmission

IV- Comment fonctionne un ordinateur?

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Initiation à LabView : Les exemples d applications :

TP 2 : Chiffrement par blocs

TOUT SAVOIR SUR LE SATELLITE

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Recherche dans un tableau

(Third-Man Attack) PASCAL BONHEUR PASCAL 4/07/2001. Introduction. 1 Domain Name Server. 2 Commandes DNS. 3 Hacking des serveurs DNS

Solutions web : instructions aux développeurs

Quantification Scalaire et Prédictive

Cours Informatique 1. Monsieur SADOUNI Salheddine

DM 1 : Montre Autoquartz ETA

GPA770 Microélectronique appliquée Exercices série A

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Encryptions, compression et partitionnement des données

1 Recherche en table par balayage

Cahier des charges Remontée des ventes

Le Data Mining au service du Scoring ou notation statistique des emprunteurs!

Transcription:

Le 29 novembre 2013, Rapport projet TS114 COMPRESSION/DECOMPRESSION D UNE IMAGE BINAIRE Par Marc BELLINGER et Antoine BINON. 2eme année Télécommunications. 1

Introduction : Le but de ce projet est d implémenter la compression et décompression sans perte d image binaire d après la recommandation T.4 de l ITU-T (RFC 804). Cette compression est basée sur un codage de Huffman modifié : elle code ligne par ligne les pixels noirs et blancs. Nous verrons dans un premier temps la compression et dans un deuxieme temps la décompression. On appliquera l algorithme de compression à l image monochrome suivante : Figure 1 :test_bin.tif I) Principe du codage à une dimension. a) Détection des séquences 0 et des 1 On va appliquer la fonction longueur_bits à toutes les lignes de l image. Celle-ci va renvoyer un tableau contenant la longueur des suites de pixels noirs (valeur 0) et blancs (valeur 1), en commençant toujours par le calcul des pixels blancs. Le cas où la ligne commence par des pixels noirs est traité au début de la fonction: la première valeur donnée par la fonction est alors 0. Sinon, tant que l on lit des pixels blancs, on incrémente la variable de longueur. Par exemple la séquence de bits suivant «000110010100» sera codé [0 3 2 1 1 1 2]. 2

b) Codage Cette deuxième étape consiste à coder une ligne complète de pixels en noirs et blancs. On va utiliser pour cela deux fichiers, white_codes et black_codes, qui vont coder les longueurs des séquences de pixels blancs et noirs obtenues précédemment avec un codage de Huffman. Ce codage sera fixe et donc pas adapté de manière optimale à l image traitée. Il en résultera cependant une réduction de nombre de bits à transmettre, d où la compression. Ces fichiers codent deux types d informations : Terminating et MakeUp. Chaque séquence de pixels est représentée soit par un code Terminating seul (longueur comprise entre 0 et 63) soit par la concaténation d un code MakeUp et d un code Terminating(longueur supérieure ou égale à 64).Dans le dernier cas, le code MakeUp indique le multiple de 64 le plus proche par valeur inférieure tandis que le code Terminating indique la différence de la longueur totale de la séquence avec la longueur ainsi codée. Dans le cas du code 64 (ou de n importe quel multiple de 64), on codera donc un Terminating nul. De plus à la suite du vecteur renvoyé par la fonction, on ajoute le code de fin de ligne (code EOL= End Of Line) 000000000001. Ce code ne fait pas partie des dictionnaires, il sert donc à resynchroniser le décodage en cas d erreur dans la transmission des données. On ajoute de plus à la fin du codage du document un code de fin de document (code EOF= End Of File), qui correspond à six codes EOL consécutifs On utilise la fonction lire_codes pour lire dans les fichiers, white_codes et black_codes,, les codes binaires correspondant aux différentes longueurs de séquences. Puis on utilise la fonction codage qui retourne le codage complet d une ligne obtenue par la concaténation des codes binaires correspondant aux séquences successives de pixels noirs et blancs. c) Ecriture dans le fichier Cette dernière étape de la compression consiste à simuler la transmission des données en écrivant la séquence retournée par la fonction précédente dans fichier. Pour cela les bits sont regroupés dans des formats permettant l écriture dans un fichier (uint8,uint16, etc ) dans ce TP nous avons choisi le format uint8 pour cela nous avons converti la suite binaire en décimal sur 8 bits.. Toutes la difficulté de cette partie réside dans la gestion des derniers bits car le code final n est pas obligatoirement multiple de 8 ou 16. Pour cela on rajoute nous effectuons un padding de 0 afin de chaine afin d obtenir un code multiple de 8. 3

II) Décompression On va reprendre les opérations effectuées sur l image dans l ordre inverse de la première partie. a) Lecture dans un fichier Cette étape est l inverse de la précédente.il s agit de lire un fichier en effet on lit les données en uint8 que l on convertit en binaire par le biais de la fonction imread qui prends en paramètre le format uint8. b) Décodage Cette étape consiste à décoder une suite de 0 et 1 en suivant un des principes du codage de Huffman disant qu un code ne peut pas être le préfixe d un autre. Ainsi en suivant l énoncé du TP, il est possible de représenter les codes sous la forme d un arbre : Figure 2 : Représentation des codes sous la forme d arbre Le meilleur moyen d implémenter ces arbres est l utilisation de tableau. Il en faut un pour les pixels blancs et un pour les pixels noirs. On peut donc stocker les codes binaires dans un tableau dont chaque case représente un code binaire et contient la longueur de la séquence associée au code binaire. Pour accéder au bon indice du tableau en fonction de la séquence décodée on suit l algorithme suivant: - Si c'est un 1, on multiplie l'indice actuel par deux et on lui ajoute un. -Si c'est un 0, on le multiplie simplement par deux. On décode les arbres grâce au fichier arbres_code.txt (Figure 2) qui contient white_tree et black_tree les deux arbres différents pour chaque couleur, en avancant dans l arbre grâce au 0 et 1 contenus dans la chaine, jusqu'à tombé sur une valeur de code de white ou black differentes de -1 ou 8193 correspondant a un EOL (2 2) 2 + 1. On remplis 4

alors le vecteurs par les chiffres retournés par les arbres. Ce sont les nombres de 1 pour les pixels blancs et 0 pour les pixels noirs qui se suivent. Il devient alors facile de reconstruire l image. c) Reconstruction des séquences de 0 et de 1 Une fois en possession de la matrice des longueurs de séquences de 0 et de 1, on parcourt chaque ligne de la matrice. On recrée l image en juxtaposant successivement des séquences de 1 puis de 0 de la longueur lue dans la matrice, sachant que la première longueur est celle d une séquence de 1. Et enfin on remets en forme le vecteurs à la taille de l image de base. d) Pertes et taux de compression A partir des vecteurs générer sous Matlab on a pu calculer les pertes entre le signal décompressé et le signal d origine, on n observe aucune perte. Puis on a calculé le taux de compression entre l image d origine et le fichier compressé qui est de l ordre 62%. Conclusion : Dans ce TP, nous avons pu aborder le fonctionnement d envoie d image par fax. En effet, nous avons d abord implémenté une partie de codage ligne par ligne ainsi que de transmission d un fichier binaire à partir d une image donnée. Ensuite, tout en respectant les normes de codage et d identification des lignes, nous avons restitué des lignes de pixels afin de reconstituer l image de départ. Il a été intéressant d étudier un type de compression qui s appuie sur la redondance des pixels et un codage de Huffman que nous avons pu étudier plus théoriquement en 1 ère année. Ainsi les répétitions de pixels redondants peuvent êtres binarisées avec moins de mémoire que l information portée par les pixels eux-mêmes. Ce TP nous a permis d illustrer l importance de la compression et notamment la nécessité de respecter des normes précises pour permettre le codage d une part et le décodage de l autre. 5