Projet Maths pour l info

Documents pareils
TP : Gestion d une image au format PGM

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

TP SIN Traitement d image

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

TD : Codage des images

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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

Formats d images. 1 Introduction

Chap17 - CORRECTİON DES EXERCİCES

Hiver 2013 IMN 259. Introduction à l analyse d images. Par Pierre-Marc Jodoin

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

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

S.P.S.N. Lac du Der 2008

Ecran : Processeur : OS : Caméra : Communication : Mémoire : Connectique : Audio : Batterie : Autonomie : Dimensions : Poids : DAS :

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

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Tuto pour connecter une source RVB RGB à un moniteur Commodore / Amiga

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

UE C avancé cours 1: introduction et révisions

UNE TECHNIQUE ÉPROUVÉE : LE ZONE SYSTEM

UE Programmation Impérative Licence 2ème Année

Sur trois couches, on obtient donc 2563 = de couleurs, soit 24bpp (Bit Per Pixel).

Algorithmique et Programmation, IMA

Choisir entre le détourage plume et le détourage par les couches.

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

Projet Matlab : un logiciel de cryptage

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

Opérations de base sur ImageJ

Quelques éléments de compilation en C et makefiles

Informatique Générale

Chap III : Les tableaux

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Petit guide des sous-réseaux IP

Chapitre 13 Numérisation de l information


Chapitre 1 I:\ Soyez courageux!

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

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

COURS WINDEV NUMERO 3

Conventions d écriture et outils de mise au point

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

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

1.1 L EXPLORATEUR WINDOWS

électronique du tarif bleu

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

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

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

ATELIER IMAGEJ. Différentes applications vous sont proposées pour apprendre à utiliser quelques fonctions d ImageJ :

INFO 2 : Traitement des images

Fête de la science Initiation au traitement des images

Vous avez cliqué sur le lien disponible sur le Site Uniformation. Vous venez d arriver sur cette page.

Initiation à linfographie

1 Introduction et installation

Cours d initiation à la programmation en C++ Johann Cuenin

Cours de numérisation sur Epson Perfection

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

Par Richard Beauregard. Novembre 2011

Chapitre 22 Optimisation pour diffusion à l'écran, pour le web

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

LES DIFFÉRENTS FORMATS AUDIO NUMÉRIQUES

Mise en pratique : Etude de spectres

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

PG208, Projet n 3 : Serveur HTTP évolué

Guide d usage pour Word 2007

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

Programmation en Java IUT GEII (MC-II1) 1

Feuille TD n 1 Exercices d algorithmique éléments de correction

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Structure fonctionnelle d un SGBD

Cours 1 : Qu est-ce que la programmation?

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

Utiliser le logiciel Photofiltre Sommaire

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

EXCEL TUTORIEL 2012/2013

Le codage informatique

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

GUIDE Excel (version débutante) Version 2013

THEME RESPONSIVE DESIGN

Algorithme. Table des matières

Projet de Traitement du Signal Segmentation d images SAR

Exercices de dénombrement

Projet audio. Analyse des Signaux ELE2700

Chapitre 02. La lumière des étoiles. Exercices :

Traitement bas-niveau

Rappels d architecture

Proposition année universitaire-informatique ( )

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Introduction à NetCDF

Initiation. àl algorithmique et à la programmation. en C

Brique BDL Gestion de Projet Logiciel

4D v11 SQL Release 5 (11.5) ADDENDUM

Algorithmique, Structures de données et langage C

Manuel de mise en page de l intérieur de votre ouvrage

Transcription:

Projet Maths pour l info IMAC 1 Histogramme rééquilibré Le traitement automatique d images a de nombreuses applications, que ce soit dans le domaine de la photographie artistique ou dans celui de la photographie technique. Le problème proposé dans ce projet concerne la manipulation d histogrammes permettant une meilleur lisibilité de l image. Ce projet a pour but d une part de vous entrainer à manipuler des concepts mathématiques et à les appliquer à des problèmes concrets. D autre part, ce projet vous permet de vous familiariser avec les notions de traitement d images. Enfin, ce projet est un bon entrainement à la programmation en langage C. 1 Position du problème Lors d une prise de vue, il peut arriver que la dynamique des couleurs soit mal répartie. Ce problème peut par exemple être lié à une sur-exposition, une sous-exposition, un contre-jour ou juste au mode de prise de vue. Le problème consiste ici à modifier les couleurs de l image de telle sorte que le contraste soit augmenté sans créer de saturation. Cette fonctionnalité est diponible dans les logiciels de traitement d images comme Gimp ou P hotoshop. La figure 1 montre une application dans le domaine médical où l aspect artistique est mis de coté au profit de la lisibilité de l image. Il est fondamental pour une telle application que le traitement soit automatique compte tenu du nombre d images à traiter dans certains cas. image initiale image traitée Fig. 1 Exemple 1

la figure 2 montre une application plus ordinaire sur des images sous-exposées. image initiale image traitée Fig. 2 Exemple 2 Image Une image est composée de pixels (picture element) répartis sous forme de tableau. On attribut à chaque pixel un niveau de gris codé en binaire sur n bits. S il s agit d une image couleur, chaque pixel a trois composantes : une composante rouge, une composante verte et une composante bleue. A partir de ces trois composantes, il est possible de représenter plus ou moins bien la quasi-totalité du spectre visible. Dans le cadre de ce projet, les images seront en couleurs et chaque niveau de gris sera codé sur un octet soit huit bits. Les valeurs de niveaux de gris variront donc de 0 à 2 8 1 = 255. Si l image traitée est en noir & blanc, les composantes rouge, verte et bleue auront la même valeur pour un pixel donné. Le paragraphe 7.1 détaille le format de stocage des images utilisées pour ce projet. 3 Histogramme 3.1 principe général Un histogramme est un ensemble de données statistiques permettant de représenter la distribution des intensités lumineuses des pixels d une image, c est-à-dire le nombre de pixels pour chaque niveau de gris. Pour une image en couleur, il est possible soit de faire un histogramme par composante (rouge, vert et bleue), soit de faire l histogramme de la moyenne des trois composantes pour chaque pixel. 2

3.2 interprétation d un histogramme Un histogramme donne des informations sur la distribution des couleurs dans une image. Il permet par exemple de savoir si une image est plutôt sombre lorsque les piques se trouvent plutôt vers la gauche (figure 3). Pour une image plutôt claire, les piques de l histogramme se trouveront vers la droite (figure 4). Fig. 3 image sombre Fig. 4 image claire Si la plupart des niveaux de gris sont situés vers le milieu de l histogramme, cela signifie que l image n est pas très contrastée (figure 5). Enfin, si les niveaux de gris sont situés sur les extrèmes de l histogramme, cela peut laisser penser que le contraste est trop fort (figure 6). Fig. 5 pas assez de contraste Fig. 6 contraste trop fort 3.3 construction d un histogramme Pour constuire un histogramme, il faut d abord créer un tableau H de taille k où k est le nombre de niveaux de gris différents. Les valeurs de H doivent être initialisées à 0. Il suffit alors de parcourir chaque pixel de l image et d ajouter 1 dans la case correspondant au niveau de gris du pixel traité. 4 Rééquilibrer un histogramme Rééquilibrer un histogramme consiste à créer une image dont la luminance est répartie de façon homogène sur l ensemble des niveaux de gris afin de mettre en valeur la dynamique des couleurs. Ce principe est illustré sur la figure 7 où H(p) représente l histogramme avant traitement et G(p) après. Le contraste de l image est alors augmenté pour les niveaux de gris avoisinant les maxima de l histogramme. Inversement, le contraste est diminué pour les niveaux de gris avoisinant les minima de l histogramme. 3

H(p) G(p) 0 max p 0 max p Fig. 7 Rééquilibrer un histogramme Pour rééquilibrer un histogramme, il faut donc trouver la transformation T sur les niveaux de gris des pixels de l image d origine telle que la répartition des pixels de l image d arrivée soit uniforme sur l intervalle [0,k 1] où k représente le nombre de niveaux de gris codables sur n bits. L histogramme d une image peut être considéré comme fonction discrette de probabilité de densité. La transformation T doit donc vérifier : k 1 k 1 G(p i ) = H(p i ) (1) i=0 i=0 Soit w la largeur de l image traitée et h sa hauteur. Idéalement, l histogramme rééquilibré G(p) correspond à la fonction de probabilité de densité uniforme f telle que f soit constante : G(p i ) = f = w.h i [0,k 1] (2) k 1 Il s agit d une configuration idéale qui ne peut être obtenue que sur des histogrammes continus (et non discrets). En réinjectant l équation (2) dans l équation (1), on obtient alors : w.h k 1 p 0 ds = w.h k 1 p = p où p [0,k 1]. La transformation T peut alors s écrire : q = T(p) = k 1 w.h L équation (5) définit la transformation T(p) sur l intervalle [0,k 1]. p 0 0 H(s)ds (3) H(s)ds (4) Concrètement, les histogrammes utilisés sont discrets, il faut donc réécrire l intégrale de l équation (5) sous forme d histogramme cumulé H c : p p H(s)ds H(i) = H c (p) (5) 0 Les figures 8 et 9 montrent une image et son histogramme avant et après qu ils aient été rééquilibrés. Des détails invisibles sur l image de départ sont dévoilés sur l image traitée. i=0 4

Fig. 8 image originale et son histogramme Fig. 9 image rééquilibrée et son histogramme 5 Look-up Table Une look-up table est un tableau permettant d effectuer des transformations sur les couleurs d une image. A chaque niveau de gris défini dans l image de départ est associé un niveau de gris d arrivée. Une look-up table n est donc pas nécessairement bijective et deux niveaux de gris de départ peuvent se voir attribuer le même niveau de gris d arrivé. D ailleurs, le nombre de niveaux de gris défini dans l image de départ n est pas forcément égal à celui défini dans l image d arrivée. L utilisation de look-up tables est courante dans les logiciels de traitement d images car elle permet de combiner plusieurs opérations sur une image sans la déteriorer au cours du traitement. L usage de look-up table est tout à fait adéquat pour l emploi de la fonction T. Celle-ci sera donc représentée par une look-up table. 5

6 Travail demandé 6.1 code Le but du projet est d implémenter en langage C un programme permettant de rééquilibrer l histogramme d une image. Ce programme devra générer sous forme de fichier ppm (cf. paragraphe 7.1) l image rééquilibrée ainsi que les histogrammes des deux images.votre programme sera composé de fichiers.c et.h. Il se compilera avec un makefile et comportera une option -h pour l aide. Toutes les options ainsi que le nom de l image à traiter seront spécifiées sur la ligne de commande et nulle part ailleurs. Votre programme devra compiler et fonctionner sous Linux. 6.2 rapport Vous devrez justifier le choix de vos méthodes dans un rapport d eviron 5-10 pages (pas plus). Ce rapport est fait pour montrer ce que vous avez compris de votre projet. Il doit montrer que vous savez prendre du recul par rapport à votre travail. Voici quelques règles à suivre pour mieux orienter son contenu : Ne perdez pas de temps à réexpliquer le sujet du projet, l enseignant le connait déjà, faites seulement un bref résumé de quelques lignes. De manière plus générale, ne détaillez pas des méthodes déjà expliquées dans l énoncé à moins que vous les ayez modifiées. Un rapport sert surtout à montrer comment vous avez fait face aux problèmes (d ordre algorithmique). Certains problèmes sont connus (on en parle dans l enoncé), d autres sont imprèvus. Montrez que vous les avez remarqués et compris. Donner la liste des solutions à ce problème et indiquez votre choix. Justifiez votre choix (vous avez le droit de dire que c est la méthode la plus facile à coder). Il ne doit figurer aucune ligne de code dans votre rapport. Un rapport n est pas un listing de votre programme où vous détaillez chaque fonction. Vous devez par contre détaillez vos structures de données et mettre du pseudocode pour expliquer vos choix algorithmiques. Il est autorisé d utiliser des racourcis tels que initialiser le tableau tab à 0 plutôt que de détailler la boucle faisant la même chose. n hésitez pas à mettre des images dans votre rapport pour illustrer vos propos et vos résultats. Enfin, il est très important de faire la liste de ce que vous avez fait, de ce qui fonctionne correctement et la liste des disfonctionnements. Précisez quand il s agit d options que vous avez rajoutées en plus de ce qui était demandé. 6

7 Documentation technique 7.1 fichier.ppm Il s agit d un format d images reconnu par divers éditeurs d images comme gimp ou P hotoshop. Il en existe plusieurs variantes : couleurs/niveaux de gris, ASCII/binaire. Le format le mieux adapté à notre problème est le format couleur en binaire. Le fichier commencera donc avec l en-tête correspondant. Un pixel en couleur est défini par 3 nombres : un pour la quantité de rouge (R), un pour la quantité de vert (V) et un pour la quantité de bleu (B), noté RVB (RGB en anglais). Nous coderons ces quantités par des unsigned char. Un unsigned char est codé sur 8 bits, soit un octet. Ces nombres vont donc de 0 à 255. Revenons au format ppm. Le premier nombre correspond au numéro de variante choisi, dans notre cas P6. Sur la ligne suivante, les deux nombres correspondent à la largeur et la hauteur de l image. Enfin, le dernier nombre correspont à la valeur maximale que l on puisse rencontrer (ici 255). Des commentaires peuvent être insérés dans l en-tête, une ligne de commentaires commence par un #. Chaque pixel sera écrit dans le fichier en procédant ligne par ligne, de gauche à doite, en commençant par le haut. Les pixels seront écrits sous forme de 3 octets écrits les uns à la suite des autres (RVB). exemple : P6 #commentaires eventuels 128 256 255 ^@y^@y^@y... 7

8 options Il est conseillé de rajouter à votre programme quelques options. En voici quelques unes : Proposer d autres transformations associées aux look-up tables comme le négatif d une image par exemple. Proposer différentes façons de traiter les images en couleurs. Travailler sur des images 16 bits.... Vous pouvez laisser libre cours à votre imagination, toute amélioration sera la bienvenue. vous trouverez quelques informations complémentaires à l adresse : http://www-igm.univ-mlv.fr/~vnozick/ Bon courage. 8