Voir : 
le fichier Maple "zippé"
Des images bmp pour faire fonctionner le programme ci-dessus :  images_bmp.zip (70 Ko)

Transformation du boulanger
Transformations bijectives d'une image




Ce programme a été développé suite à la demande de LG Vidiani qui désirait écrire un article sur ce sujet.
Si l'on itère une transformation bijective sur les pixels d'une image, celle-ci se brouille plus ou moins puis après un cycle plus ou moins long revient à l'image de départ.

Une telle transformation bijective sur une image de L lignes et H colonnes de pixels revient à faire une permutation sur ces LxH pixels ; donc si l'on itère un nombre suffisant de fois cette permutation on va arriver à l'identité donc retrouver l'image initiale.
Dans des cas "bien choisis", le cycle est suffisament court pour que l'on puisse en un temps "raisonnable" faire le calcul des images successives.

janvier 2008 : Suite à la demande d'élèves pour leur TIPE, j'ai modifié le programme pour qu'il accepte des images de taille quelconque sous forme de fichiers bitmap *.BMP en 256 couleurs ou niveaux de gris; je l'ai ajouté dans le "zip" ci-dessus.

mai 2011 : Les nouvelles versions de Maple permettent de manipuler beaucoup plus facilement les images.
Le petit programme boulanger_maple11.mw "zippé" permet d'effectuer quelques transformations sur des images de format bmp, tiff ou jpeg de n'importe quelle taille( plus la taille est importante et plus les temps de calcul sont longs !)

On pourra consulter un article de Jean-Paul Delahaye et Philippe Mathieu paru dans la revue « Pour la Science », numéro 242 de décembre 1997. et consultable à l'adresse :
http://www.pourlascience.com/index.php?ids=YjnKjNcqupvaAoGGGGww&Menu=Pls&FROM=&Action=3&idn1=&idn2=&idn3=2460

et le site de Philippe Mathieu :
http://www.lifl.fr/~mathieu/transform/index.html



Le programme Maple développé applique quelques transformations à une image en format bmp en noir et blanc ou en 256 couleurs.
Je me suis limité à des images carrées de n sur n pixels avec n pair. Le programme fait avec Maple ver'sion 8 peut facilement s'adapter à des images de n sur p pixels.

I. Version initiale : image noir et blanc

Partant d'une image bmp en noir et blanc, je récupère les couleurs des pixels : un bit par pixel soit un octet pour 8 pixels. Ces n*n/8 octets sont stockés dans le fichier bmp à partir du rang 63.
A partir de cela, je forme la liste Lcoul des bits 1 et 0 qui codent les couleurs de chaque pixel.
Une transformation (f,g) qui à un pixel [i,j] fait correspondre le pixel [f(i,j),g(i,j)] est traduite :
    soit sur la liste Lcoul des codage des couleurs des pixels, puis "PLOT(MESH ..." permet de simuler une image en noir et blanc.
    soit sur la liste Lpts des coordonnées des pixels noirs, puis "plotpoint(Lpts ..." permet d'obtenir le tracé des points.
Voir ci-dessous.

Exemple 1 : transformation du boulanger
L'image étirée en largeur dans un rapport 2 puis la moitié droite est repliée au-dessus de la première moitié.
Pour cela, chaque pixel des lignes impaires est intercalé entre deux pixels des lignes paires : ce qui étire l'image ; puis la deuxième moitié de chaque ligne est transférée à la place convenable pour réaliser le repliement.
       

Exemple 2 : transformation du store Si l'image a n=2m lignes, on transforme en prenant pour m premières lignes les lignes paires et les m suivantes, les lignes impaires, on obtient ainsi deux copies approchées et aplaties de l'image initiale.
transformation du photomaton : on procède de la même façon, simultanément sur les lignes et les colonnes ; on obtient quatre copies de l'image initiale.
On peut généraliser en remplaçant 2 par un diviseur de n.
  

La trajectoire d'un point par les itération successives de la transformation du boulanger :
Le point [5,10]
Le point [30,30]
Le point [10,100]
Le point [100,10]




II. Image en 256 couleurs

Le fichier de l'image bmp est constitué d'un en-tête A, des octets 1 à 1078 et de la partie B, des octets 1079 à la fin, codant les couleurs des pixels ( 1 octet par pixel ).
Par la transformation étudiée, la partie B devient B1, on obtient ainsi le fichier bmp de l'image transformée avec A et B1.
Le programme permet soit d'obtenir dans Maple les images en nuances de gris avec "PLOT(MESH..", soit d'obtenir les images en format bmp-256 couleurs des itérés de la transformation ; avec ces images bmp, on peut ensuite obtenir un gif animé.


Image en nuances de gris obtenue avec PLOT(MESH(...".

Animation passant les différents itérés de :
"store" horizontal
"store" vertical
boulanger
photomaton


La suite des différents itérés dans la transformation du store ( 4 lamelles ) :


La suite des différents itérés dans la transformation du photomaton :


Une suite de transformés pour lesquels les itérés sont peu brouillés : cliquer ici
Les premiers itérés de quelques transformations du fichier Maple :
avec la transformation (f7,g7)

avec la transformation (f6,g6)


Quelques transformations réalisés avec Maple 11 :
Translation modulo


Translation et permutation de tranches horizontales



Début