Images : exercices
Conversion image→ascii
Écrire un programme qui converti une image en caractères ascii.
Indications :
- télécharger l’image ci-contre,
- utiliser la bibliothèque PIL pour la convertir en niveaux de gris, puis en obtenir une liste de valeurs de pixels,
- utiliser les caractères suivants pour coder les couleurs :
coul70 = """$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. """
coul16 = "MNHQ$OC?7>!:-;. "
On constate que l’image est déformée. En effet, le rapport de dimension d’un caractère n’est pas 1:1 (sa hauteur est plus grande que sa largeur)
Corriger l’image avant d’appliquer l’algorithme afin qu’elle apparaisse avec les bonnes proportions en mode « ASCII ».
The Andy touch
source : http://isn.codelab.info/projets/mini-projets/mp03b-andy-dis-moi-oui/
À partir d’une image en couleur de votre choix, on se propose de dessiner une mosaïque inspirée par le portrait de Marylin Monroe réalisé par Andy Warhol. Vous devez coder un programme qui reproduira cette image avec les traitements suivants sur sa table de couleurs (R1,G1,B1) :
- Image n° 2 : les nouvelles couleurs (R2,G2,B2) des pixels sont permutées de telle manière que : R2=B1, G2=R1, B2=G1
- Image n° 3 : les nouvelles couleurs (R3,G3,B3) des pixels sont permutées de telle manière que : R3=G1, G3=B1, B3=R1
- Image n° 4 : les nouvelles couleurs (R4,G4,B4) des pixels sont inversées de telle manière que : R4=255-R1, G4=255-G1, B4=255-B1
- Image n° 5 : elle représente l’image en niveaux de gris en faisant la moyenne des composantes (R1,G1,B1) de l’image initiale
- Image n° 6 : les couleurs (R5,G5,B5) des pixels de l’image n° 5 sont inversées de telle manière que : R6=255-R5, G6=255-G5, B6=255-B5
- Image n° 7 : elle représente l’image initiale en supprimant la composante bleue.
- Image n° 8 : elle représente l’image initiale en supprimant la composante rouge.
- Image n° 9 : elle représente l’image initiale en supprimant la composante verte.
Détourage
Écrire une fonction permettant de réaliser un détourage automatique sur une image.
Idéalement, cela donnerait ça :
Mais en pratique, un tel résultat n’est pas possible de manière automatique.
En première approche, une solution consiste à « effacer », autour d’un pixel de départ, les pixels qui ont des propriétés (luminosité, teinte, …) « proches » de celles du pixel de départ.
Par exemple, un logiciel comme Paint.NET est capable de cela :