TD – Informatique – PSI
Q9. Créer de même le tableau Py et le représenter par une image en niveau de gris.
L’association des deux tableaux (Px, Py) peut être interprétée comme un vecteur qui indique la direction dans laquelle la variation
d'intensité est maximale pour chaque pixel. La norme de ce vecteur correspond à cette intensité maximale.
Q10. Créer alors un tableau P de même taille de Px (ou Py) dont les composantes seront les normes des vecteurs définis ci-
dessus. Dans quel cas obtient-on de grandes valeurs dans les cellules de ce tableau et le représenter par une image en
niveau de gris.
Nous avons au final trouvé une méthode qui permet de détecter les contours dans une image.
4. Images en couleur
Le codage informatique des couleurs est l'ensemble des conventions
permettant l'affichage ou l'impression par un périphérique
informatique d'une image en couleurs, plutôt qu'en noir et blanc. Le
codage se base sur la synthèse additive trichrome des couleurs. On
s’intéresse alors à une image codée au format RGB (Red-Green-Blue).
Pour cela, on a trois images nommées « canal0.jpeg », « canal1.jpeg »
et « canal2.jpeg » qui sont les trois canaux RGB d’une même image. Les
canaux 0, 1 et 2 représentent respectivement les intensités de rouge,
de vert et de bleu. Chaque combinaison d'intensités correspond à une
couleur particulière.
Q11. Observer la structure de chacune de ces images, après les
avoirs ouvertes et les avoir affichées. En déduire de combien de couleurs différentes on peut coder dans le format RGB. De
quelle couleur sont les manches des pinceaux ?
Une image RGB complète est représentée par un tableau Numpy à trois dimensions (une dimension par canal) :
>>> pixels[2, 5, 0] # Canal 0 du pixel (2, 5)
165
>>> pixels[2, 5] # Les trois canaux du pixel (2, 5)
array([165, 168, 180], dtype=uint8)
>>> pixels[:, :, 2] # Canal 2 complet
array([[180, 179, 178, ..., 161, 160, 159],
[180, 180, 180, ..., 162, 161, 160],
[180, 180, 181, ..., 162, 161, 160],
...,
[162, 163, 164, ..., 100, 100, 101],
[165, 165, 166, ..., 96, 98, 101],
[167, 167, 167, ..., 88, 94, 101]], dtype=uint8)
L’objectif va être de reconstruire l’image à partir des 3 canaux. Pour cela, on va créer un tableau Numpy de taille (h,w,3), où (h,w)
est la taille d’un tableau correspondant à un canal.
Q12. Créer alors un tel tableau, que l’on pourra nommer pixels et l’afficher sur une nouvelle figure. (Quand on utilisera imshow,
il ne faudra bien entendu ne plus spécifier cmap).
Q13. Assembler de manière différente les canaux pour obtenir une image avec des manches de pinceaux jaunes.
5. Photomaton
Soit l’image « mona-lisa.jpeg » contenue dans le dossier Images. L’afficher. Nous allons trouver une méthode pour réaliser la
transformation suivante :