TP TI: images discrètes

<< | Liste des exercices | Sur et sous-échantillonnage >>

Composantes d'une image couleur

La mire affichée ci-dessous peut être utilisée afin de calibrer des dispositifs de transmission ou de reproduction d'une image couleur. Elle comporte des zones de couleur uniforme, permettant le calibrage des gains et offsets des dispositifs, ainsi que des portions de droites perpendiculaires, permettant la correction d'éventuelles distorsions.

mire de calibrage couleur
Mire de calibrage couleur



  1. Enregistrer cette image dans un répertoire de travail et la charger sous python. Pour cela, on utilisera la librairie scipy:
from scipy import misc
my_image = misc.imread('file_name',mode = 'RGB')

Afin de l'afficher, on utilisera matplotlib:

import matplotlib.pyplot as plt
plt.imshow(image)
plt.show()

Quelle sont les dimensions de la variable utilisée pour stocker l'image et que représentent-t-elles? On utilisera "image.shape":

print image.shape

Dans le cas d'un tableau numpy contenant 3 composantes, imshow va l'afficher comme une image dont la première composante représente le rouge, la seconde pour le vert, la troisième pour le bleue. Dans le cas d'un tableau numpy "image2D" contenant une seule composante (donc un tableau 2D classique), on pourra l'afficher en faisant:

plt.imshow(image2D,cmap="gray")
plt.show()
  1. Séparer les composantes rouge, verte et bleue de cette image afin de les afficher tout d'abord sous la forme de trois images en niveaux de gris (cf. première ligne d'images ci-dessous):
composantes affichées en niveaux de gris
Composantes affichées en niveaux de gris



On cherche ensuite à afficher les composantes sous la forme d'images en pseudo-couleurs (cf. deuxième ligne d'images ci-dessous):

composantes affichées en couleurs
Composantes affichées en couleurs



Pour cela, on créera une image à 3 composantes ne contenant que des 0:

image_0 = np.zeros((dimensionX,dimensionY,composantes)).astype(np.uint8)

On copiera ensuite la composante rouge précédente (un tableau 2D) dans la première composante de "image_0":

image_0[:,:,0] = compos_rouge

On concaténera alors les 3 images pseudo-couleurs et on les affichera avec "imshow" de la même façon qu'une image couleur classique.

Vérifier qu'on retrouve l'image initiale en additionnant les trois variables décrivant les pseudo-images (une somme de deux tableaux fera la somme élément par élément).

PS: pour afficher plusieurs images de mêmes dimensions, il faut concaténer les tableaux à l'aide de la fonction hstack de numpy:

import numpy as np
concat = np.hstack((im1,im2,...))

Il suffit alors d'afficher l'image "concat".