next_inactive up previous


UJF - M1 Informatique 2005-2006 : Infographie
TP1 : Images et espaces de couleur

version pdf
images


Dans ce premier TP nous verrons comment manipuler (lire et écrire) des fichiers images simples et ensuite nous utiliserons divers espaces dans le but d'appliquer différents traitements aux images.

1 Images au format PNM : Portable aNy Map

1.1 Description du format de fichier PNM

Le format PNM est un format d'images, surement le plus simple qu'il existe. Il permet très simplement de décrire des images en bitmap (2 couleurs : ''image.pbm''), graymap (niveaux de gris : ''image.pgm'') et pixmap (couleurs RGB : ''image.ppm''). Nous nous intéresserons uniquement à la version ''ASCII'' du format PNM.

1.1.1 Fichiers PBM (man pbm)

P1

24 7

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0

0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0

0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

En-tête
 
Données
 
Vient après la suite de 24x7=168 bits notés par 0 ou 1 (0 correspondant au blanc, 1 au noir).

  1. Ecrivez un programme qui puisse lire et écrire un fichier au format PBM.
  2. Dans ce programme, écrivez une fonction qui permette d'inverser les couleurs (ici le blanc et le noir).
Conseils :

1.1.2 Fichiers PGM (man pgm)

Le format PGM fonctionne de manière similaire. Dans l'ent-tête, P1 est remplacé par P2 et une ligne est ajoutée après la taille de l'image, indiquant la valeur maximum du niveau de gris (dans l'exemple 15) :

P2

24 7

15

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0

0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0

0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0

0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 

0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1.1.2.1 Modifiez votre programme pour qu'il puisse lire aussi ce format d'images (le format est déterminé par la première ligne : P2).

1.1.3 Fichiers PPM

  1. Lire la manpage : man ppm. Attention : maintenant il y a 3 couleurs (3 int) correspondant au canaux Rouge, Vert et Bleu par pixels !
  2. Ecrire une fonction qui fasse le négatif de l'image (prendre l'opposé des couleurs).
  3. Ecrire une fonction qui transforme naïvement une image couleur en niveaux de gris.

1.2 Manipulation des images

Utilisez l'image lena.ppm, il faut appliquer les traitements sur chaque canal de couleur.

1.2.1 Lissage

  1. Ecrivez une fonction qui lisse l'image : pour chaque pixel, la valeur du nouveau pixel est la moyenne des pixels autours.
  2. Ecrivez une fonction qui lisse l'image avec un noyau gaussien sur un carré de 3x3 pixels.
  3. Lissez plusieurs fois l'image lena_bruitee.pgm. Qu'observez vous ?

1.2.2 Redimensionnement (naïf)

  1. Ecrivez une fonction qui permette de diviser par deux la taille d'une image par différentes méthodes : prendre un pixel sur deux, prendre la moyenne des pixels autours, prendre un pixel sur deux puis lisser.
  2. Ecrivez une fonction qui permette de multiplier par deux la taille d'une image par différentes méthodes : prendre le pixel le plus proche, prendre la moyenne des pixels autours, prendre le pixel le plus proche puis lisser.

2 Espaces de couleur

Les fichiers au format PPM sont écrits uniquement en RGB.

2.1 Manipuler l'espace RGB

Jouez avec les différents canaux pour obtenir différents résultats :

  1. Visualisez les 3 canaux dans 3 fichiers différents en niveaux de gris (séparation des canaux).
  2. Masquez un canal (c'est-à-dire mettez toutes ses valeurs à 0) et visualisez l'image couleur correspondante.
  3. Inversez deux canaux
  4. Appliquez plusieurs fois le lissage sur un seul des canaux séparément (essayez cela sur les 3 canaux). Quelle observation pouvez vous faire ?
  5. Attenuez, augmentez (par addition ou multiplication), les valeurs dans un des canaux.

2.2 L'espace HSV (Teinte, Saturation, Valeur) (équivalent HSB)

  1. Ecrivez une fonction qui passe d'une image RGB à une image en HSV et inversement.
  2. Visualisez les 3 canaux H,S et V dans 3 fichiers différents en niveaux de gris.
  3. Jouez avec les différents canaux avant de repasser l'image en RGB : augmentation/réduction de la saturation, valeur

2.3 L'espace XYZ

  1. Ecrivez une fonction qui passe d'une image RGB à une image en XYZ et inversement.
  2. Créez une version en nuances de gris à partir de la luminosité. Que pouvez vous dire par rapport à la version naïve (directement à partir du RGB) ?

About this document ...

UJF - M1 Informatique 2005-2006 : Infographie
TP1 : Images et espaces de couleur

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -show_section_numbers TP1.tex

The translation was initiated by Mathieu Coquerelle on 2005-09-30


next_inactive up previous
Mathieu Coquerelle 2005-09-30