On part d'une image carrée de côté 256 pixels (remarquer que 256=28 ) et à chaque étape, les pixels sont déplacés suivant le schéma suivant.
![]() |
![]() |
| Avant | Après |
![]() |
![]() |
| ![]() | ![]() |
![]() |
![]() |
![]() |
En 8 étapes, on retombe sur l'image de départ .
On a pris une image de 128 pixels de côté (n=7) . On voit l'évolution vers le gris avec un brusque retour au départ.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
#-*- coding:Latin-1 -*-
def bijection(m,a,b):
#creation d une liste nulle de meme longueur que m
p=[0]*a*b
for k in range(a*b):
#on transforme en ligne et colonne
l=k//a
c=k%a
if l%2==0:
l=l/2
else:
l=l/2+b/2
if c%2==0:
c=c/2
else:
c=c//2+a/2
p[a*l+c]=m[k]
return p
import Image
im = Image.open("lancelot.jpg")
#on recupere les dimensions de l image
w,h=im.size
#On eclate l image en trois (rouge vert bleu)
r,g,b=im.split()
#on transforme l image en liste
r=list(r.getdata())
g=list(g.getdata())
b=list(b.getdata())
#nombre d iterations
it=7
for z in range(it):
r=bijection(r,w,h)
g=bijection(g,w,h)
b=bijection(b,w,h)
#creation de trois nouvelles images
nr = Image.new("L",(w,h))
nr.putdata(r)
ng = Image.new("L",(w,h))
ng.putdata(g)
nb = Image.new("L",(w,h))
nb.putdata(b)
#fusion des trois nouvelles images
imgnew = Image.merge('RGB',(nr,ng,nb))
imgnew.save("lan"+str(it)+".png")
fait le 10 juin 2014 pour Stéphane