Aller au contenu

TP sur les images : suite et approfondissements

Compression par le format d'image (jpg,png) vs avec zip/7z

Reprenez la version .pnm de l'image de pomme créée avec Gimp dans le TP précédent, et :

  • compressez la au format .zip
  • compressez la au format .7z

Quelles tailles de fichier obtient-on par rapport à l'original ? Et par rapport à la version .png de l'image ? Que peut-on conclure ?

Compressez le fichier pomme.png avec au format zip. Quelle taille obtient-on ? Pourquoi ?

Couleurs

Les logiciels d'image permettent d'accentuer le contraste d'une image, c'est à dire rendre les pixels clairs encore plus clairs, et les pixels sombres encore plus sombres.

Dessinez un graphique avec en abscisse la valeur originale d'un pixel (entre 0 et 255) et en ordonnée la valeur modifiée (entre 0 et 255). Commencez par tracer la diagonale (qui représente une transformation qui ne change pas le pixel), puis essayez de tracer la forme de la courbe qui représente une accentuation du contraste.

Manipulation d'image en python

Niveaux de gris bis

En général, on ne fait pas exactement la moyenne des trois couleurs pour avoir l'image en niveaux de gris mais plutôt gris = int(0.299*rouge + 0.587*vert + 0.114*bleu).

Re-testez avec cette méthode et comparez le résultat avec la méthode précédente.

Négatif de l'image

Reprendre le code de modification de l'image de pomme, et affichez le négatif de l'image : il suffit de transformer chaque valeur x de couleur en la valeur symétrique 255-x.

Conversion en noir/blanc

Convertissez l'image non plus en niveaux de gris mais en noir et blanc. Pour cela on peut définir un seuil, et mettre chaque pixel en blanc si la valeur de rouge+vert+bleu dépasse ce seuil et en noir sinon. Expérimentez avec plusieurs valeurs de seuil.

Détection de contours

Reprendre le code qui décode le secret dans l'image, et à la place faites de la détection de contours !

Pour cela, on ne va commencer à la 2e ligne en changeant range(nb_ligne) en range(1,nb_ligne), puis juste après avoir récupéré les valeurs rouge,vert,bleu du pixel (i,j), faites pareil pour récupérer des valeurs rouge2,vert2,bleu2 du pixel (i-1,j) : celui juste au dessus.

Ensuite, mettez un pixel noir dans secret seulement si la valeur du rouge a suffisamment changé avec le test abs(rouge-rouge2) > 20, et affichez le résultat. Vous pouvez varier la valeur de seuil de 20, et utiliser les 3 couleurs pour plus de précision.

Réduire la taille de l'image

Créez une image 4 fois plus petite en divisant le nombre de lignes et de colonnes par 2. Puis choisissez la valeur de chaque pixel de l'image réduite en faisant la moyenne des 4 pixels correspondant dans l'image d'origine.

Réflexion

Comment pourrait-on cacher du texte à la place d'une image en noir et blanc comme on l'a fait au TP précédent ?