Brouiller une photo
La transformation du Photomaton !
L'image de la Joconde comporte 256 lignes et 256 colonnes numérotées de 0 à 255. La transformation du photomaton consiste à réaliser l'opération suivante sur les numéros des lignes : on prend les lignes de rang pair qu'on fait suivre de celles de numéro impair. De même, pour les numéros des colonnes — cela explique l'apparition de quatre versions en plus petit de l'image initiale. Le pixel (0, 0) reste donc en position (0, 0) ; le pixel (1, 0) passe en position (128, 0) ; le pixel en position (1, 1) passe en position (128, 128) ; le pixel en position (4, 5) passe en position (2, 130), etc. (pour un numéro pair 2k on passe à k, pour un numéro impair 2k + 1 on passe à 128 + k).
L'image ci-dessous illustre plus clairement la transformation réalisée.

Exemple : L'algorithme du photomaton
L'algorithme du photomaton illustrée ci-dessus a été retranscrit dans une fonction photomaton() dans le programme ci-dessous :
La fonction photomaton() prend en paramètre une image nommée img
La fonction photomaton() renvoie une image modifiée par la transformation du photomaton.
Recopiez, analysez et exécutez ce programme.
def setup():
size(256,256)
monImage = loadImage("monalisa_256.jpg")
newImage = photomaton(monImage)
image(newImage,0,0)
def draw():
pass
def photomaton(img):
l,h=img.width,img.height
newimg=createImage(l,h,RGB)
for y in range(h):
for x in range(l):
couleur = img.get(x,y)
if x%2==0 and y%2==0: # x et y sont pairs
newimg.set(x//2,y//2,couleur)
elif x%2==0: # x est pair et y impair
newimg.set(x//2,h//2+y//2,couleur)
elif y%2==0: # x est impair et y pair
newimg.set(l//2+x//2,y//2,couleur)
else: # x et y sont impairs
newimg.set(l//2+x//2,h//2+y//2,couleur)
return newimg
Exercice Im10 : Mona Lisa au photomaton
Dans cet exercice, vous allez transformer légèrement l'exemple ci-dessus de manière à
partie de l'image originale
à chaque appui sur la barre espace, vous appliquerez à l'image affichée à l'écran la transformation du photomaton
En appuyant plusieurs fois, vous obtiendrez donc une succession d'image de plus en plus brouillées.
Indications :
Dans cet exercice, vous n'avez pas à modifier la fonction photomaton qui applique la transformation.
Vous aurez par contre probablement besoin d'une variable globale monImage servant à stocker l'image qui est affichée à l'écran. Si nécessaire, nous pouvez vous référer aux exemples précédents qui utilisent une telle variable.
En appliquant 8 fois la transformation, vous aurez une surprise ! !
Ex Im11 : Challenge final
Téléchargez l'image ci-dessous et essayez de décoder le message qu'elle contient !