Documente Academic
Documente Profesional
Documente Cultură
et
modifications d'images
1 Prsentation 2
2 Permutations de pixels 5
3 Transformations affines 8
Exemple 1
= + 5
Appliquons la transformation : { quelques points du plan.
=
Le point (0; 1) a comme C
image le point (5; 1).
Le triangle a comme
image le triangle .
C'
Exemple 2
= + 300
Le programme ci-dessous applique la transformation : { tous les
= 300
points d'une image de 200 x 200 pixels.
Private Sub Command1_Click()
For x = 0 To 199
For y = 0 To 199
' Calcule l'image d'un point
Let nx = x + 300
Let ny = 300 y
' Lit la couleur du point original
Let C = Picture1.Point(x, y)
' Marque le point image
Picture1.PSet (nx, ny), C
Next y
Next x
End Sub
Dans la zone graphique l'image originale est affiche partir du coin suprieur
gauche.
Dans la pratique, on dispose de deux zones graphiques, l'une, nomme par
exemple Picture1, contient le dessin source, l'autre, Picture2, le dessin transform.
La 1re zone graphique a les mmes
dimensions que le dessin qu'elle
contient alors que la deuxime
doit tre suffisamment grande
pour contenir le dessin transform.
Dans le programme, une
seule instruction est modifie,
la ligne
Picture1.PSet (nx,ny), C
est remplace par
Picture2.PSet (nx,ny), C
Exemple 3 2
=
+200
Le programme ci-dessous applique la transformation : { 2
tous les
points d'une image de 200 x 200 pixels. =
+200
Private Sub Command1_Click()
For x = 0 To 199
For y = 0 To 199
Let nx = x ^ 2 / (y + 200)
Let ny = y ^ 2 / (x + 200)
Let C = Picture1.Point(x, y)
Picture2.PSet (nx, ny), C
Next y
Next x
End Sub
1 Prsentation 3
Exercice 1
crire un programme qui effectue 4 co-
pies d'une image contenue dans une
zone graphique.
Exercice 2
crire un programme qui effectue 4 co-
pies d'une image contenue dans une
zone graphique et produit les symtries
illustres ci-contre.
Exercice 3
a) crire un programme qui effectue le zoom de facteur
d'une image contenue dans une zone graphique.
Amliorer le programme de sorte que la couleur de
chaque pixel de limage construite soit la moyenne de 4
pixels de limage originale.
Exemple 2
La permutation bcdefghijkla revient dcaler les a b c d b c d e
lettres comme si elles taient crites autour dun e f g h f g h i
cercle. Cette transformation est une permutation cir- i j k l j k l a
culaire d'une unit.
Rappel
La division entier de par se note Div (ou \ ), par exemple 13 Div 3 = 4.
Le reste de la division entier de par se note Mod , par ex. 13 Mod 5 = 3.
Exercice
Pour rfrencer un lment (0;0) (1;0) (2;0) (3;0) 0 1 2 3
dun tableau, on peut utiliser (0;1) (1;1) (2;1) (3;1) ou 4 5 6 7
ses coordonnes (; ) ou
(0;2) (1;2) (2;2) (3;2) 8 9 10 11
son rang .
Donner les formules de pas-
sage coordonnes rang.
Exercice 4
crire un programme qui effectue
une permutation circulaire dont le
dcalage est donn dans une zone de
texte.
Composition de permutations
De manire gnrale, les permutations possibles des pixels dune image sont en
nombre fini. Plus prcisment si limage comporte n pixels, le nombre de permuta-
tions vaut n! . Ce nombre de permutations de pixels est ainsi norme mme pour
une petite image. Il y a par exemple 24 permutations pour une image 2x2 et
362'880 permutations pour une image 3x3.
Lorsque que lon compose deux permutations de pixels, on obtient une nouvelle
permutation, si bien quen rptant une mme permutation de pixels, on va obtenir
de nouvelles permutations. Cette manire de gnrer de nouvelles permutations
est toutefois limite par le nombre total de permutations.
2 Permutations de pixels 5
Ordre dune permutation
partir dune permutation , on peut construire par composition toute une suite
de permutations : , , , ,. .
Comme il nexiste quun nombre fini de permutations, on peut montrer qu'en rp-
tant une permutation, on finit par obtenir l'identit.
Pour une image et une permutation donnes, le plus petit nombre tel que la
composition donne la transformation identique est appel lordre
fois
de la permutation. Cet ordre est un diviseur de p! o p est le nombre de pixels de
limage.
Exemples
1) Lordre dune symtrie axiale vaut 2 quelle que soit la taille de limage.
2) Lordre de la permutation circulaire dune unit, pour une image forme de p
pixels, est gal p.
3) L'ordre de la permutation du photomaton illustre ci-dessous vaut 7, cet ordre
dpend de la taille de l'image initiale.
Exercice 5
On appelle photomaton la transformation qui, partir d'une image carre ayant un
nombre pair de lignes et de colonnes, cre une nouvelle image forme de 4 images
plus petites, extraites de l'image de dpart.
a) crire un programme qui, partir d'une image affiche sur la partie gauche de
l'cran, construit son image par la transformation du photomaton sur la partie
droite de l'cran.
b) Modifier votre programme de sorte qu'un
bouton de commande permette de dessi-
ner droite la transforme de l'image de
gauche et qu'un deuxime bouton de com-
mande permette de dessiner gauche la
transforme de l'image de droite.
Vrifier que l'on retrouve bien l'image de
dpart en appliquant plusieurs fois la
transformation du photomaton.
2 Permutations de pixels 7
3 Transformations affines
On a vu que pour dcrire une transformation qui envoie un point (; ) du plan
sur le point (; ), on peut donner les coordonnes et de en fonction des
coordonnes et de .
Cest Euler, en 1748, qui est lorigine du terme transformation affine , car dit-il,
deux courbes images lune de lautre par une telle transformation prsentent
entre elles une certaine affinit 1.
Exemple
= 3
a) Une homothtie de facteur 3 centre l'origine est donne par : { .
= 3
L'image du point (2; 3) est le point (6; 9).
= 3 6
b) : { dcrit une homothtie de facteur 3 centr en (3; 2).
= 3 4
Le centre de cette affinit est le seul point fixe de .
(3 6 = = 3, 3 4 = = 2).
= + 3 3
c) : { dcrit une translation de vecteur = ( ).
=+2 2
Application linaire
tant donn une transformation affine (ou application affine ou affinit)
= + + =
:{ , dterminons l'image d'un vecteur =
.
= ++
2 1
Si (1 ; 1 ) et (2 ; 2 ) sont deux points du plan, =
= ( ) = ( ) .
2 1
Afin de trouver l'image du vecteur , dterminons les images et par des
points et .
(1 + 1 + ; 1 + 1 + ) et (2 + 2 + ; 2 + 2 + ) et ainsi
(2 + 2 + ) (1 + 1 + ) (2 1 ) + (2 1 )
= ( )=( ).
(2 + 2 + ) (1 + 1 + ) (2 1 ) + (2 1 )
+
On obtient ainsi =
= ( ).
+
On remarque que et n'apparaissent pas dans l'image d'un vecteur.
1 Encyclopdie Wikipdia
Une application linaire est donne par sa matrice = ( ),
+
= = ( )( ) = ( ).
+
3 Transformations affines 9
Recherche de transformations affines
= + +
La transformation affine : { est dfinie par la matrice
= + +
=( ) de l'application linaire associe et par l'image (; ) de l'origine
(0; 0).
La transformation (; ) (; ) s'exprime alors par l'galit =
+
.
Exemples
a) La matrice de l'application linaire associe une homothtie de facteur 3
3 0
centr en (3; 2) est = ( ).
0 3
Pour dterminer l'image de l'origine on utilise le point fixe = .
=
= +
=
3 3 0 3 3 9 6
= ( ) ( ) ( ) = ( ) ( ) = ( ) , d'o ( 6; 4).
2 0 3 2 2 6 4
= 3 6
La transformation est dfinie par : {
= 3 4
b) Pour dterminer une rotation de 60 de centre (2; 0), on commence par
chercher la matrice d'une rotation de 60o:
1 3
cos(60) sin(60)
=( )=(2 2
),
sin(60) cos(60) 3 1
2 2
puis on dtermine l'image de l'origine :
1 3
2 2 2 1 1
=
= ( ) ( 2 2
)( ) = ( ) ( ) = ( ).
0 3 1 0 0 3 3
2 2
1 3
= +1
2 2
On en dduit : {
3 1
= + 3
2 2
Exercice 6
= + +
crire sous la forme : {
= + +
a) Une homothtie de facteur et de centre ( ; 0 ).
b) Une rotation d'angle autour d'un point ( ; 0 ).
c) Une symtrie d'axe passant par l'origine et formant un angle avec .
d) Une homothtie de facteur 4 autour de (0; 1) suivie par une rotation d'angle
= 45 autour de (1; 0). Trouver le point fixe de cette transformation.
e) Le changement d'chelle qui envoie le carr unit sur le rectangle de sommets
(0; 0), (5; 0), (5; 3), (0; 3).
f) L'affinit qui transforme le triangle de sommets (0; 0), 1 (1; 0), 2 (0; 1) en un
triangle de sommets (4; 5), 1 (1; 2), 2 (3; 0) et sa rciproque.
Exercice 8
a) Modifier le programme de l'exercice 7 de sorte qu'il utilise la rciproque.
On constate que la qualit de limage obtenue nest pas excellente, il est possible de
lisser les imperfections en appliquant une interpolation bilinaire.
Linterpolation bilinaire consiste attribuer chaque pixel de limage darrive
une moyenne pondre des couleurs des 4 pixels encadrant le point correspondant
de limage de dpart.
Les coefficients de
pondration sont gaux aux (x0 ; y0) (x0+1 ; y0) (x ; y)
surfaces correspondantes de
chacun des 4 pixels de centres
(x ; y)
(0 ; 0 ), (0 + 1; 0 ) , (0 ; 0 +
1) et (0 + 1; 0 + 1) comme
illustr ci-contre. (x0; y0+1) (x0+1 ; y0+1)
3 Transformations affines 11
Exercice 9
Construire, avec le logiciel Cabri ou GeoGebra, l'image d'un point par une
affinit donne par 3 points , et et leurs images , et comme indiqu ci-
dessous.
Construre ensuite l'image d'un cercle.
Exercice 10
crire un programme qui effectue une rotation autour du centre d'une image de
201 sur 201 pixels.
Exercice 11
a) Trouver l'affinit donne par les images de , 1 (1; 0) et 2 (0; 1).
b) crire un programme qui permet de donner une affinit par les images de trois
sommets du rectangle contenant la figure initiale puis qui dessine son image
par cette affinit.
La fougre initiale est donc la runion des images d'elle-mme par les affinits
1 , 2 , 3 et 4 .
= 1 2 3 4 o 1 = 1 ( ), 2 = 2 ( ), 3 = 3 ( ) et 4 = 4 ( ).
Ces 4 affinits qui engendrent limage partir delle-mme forment un systme
de fonctions itres (IFS).
La mthode de Barnsley propose une construction d'une image , pouvant tre d-
crite, telle cette fougre, par un systme de fonctions itres, 1 , 2 , 3 , , .
Cette construction est la suivante.
Prendre un point quelconque 0 (0 ; 0 ), appliquer ce point une affinit choi-
sie au hasard parmi 1 , 2 , 3 , , , et obtenir ainsi un point 1 (1 ; 1 ).
Rappliquer ce point 1 une affinit choisie au hasard parmi 1 , 2 , 3 , , ,
et obtenir ainsi un point 2 (2 ; 2 ).
Rappliquer ce point 2 une affinit choisie au hasard parmi 1 , 2 , 3 , , ,
et obtenir ainsi un point 3 (3 ; 3 ).
Exemple 1
On considre , le domaine form du
grand triangle ci-contre et 4 affinits,
1 qui envoie sur 1 ;
2 qui envoie sur 2 ;
3 qui envoie sur 3 ;
4 qui envoie sur 4 .
En appliquant la mthode de Barnsley on obtient , qui, selon le thorme du col-
lage est approximativement le triangle de dpart.
Exemple 2
L'arbre fractal ci-contre peut tre construit par itrations de
trois affinits.
On admettra que l'image est un carr de 200 pixels de ct, que
l'axe supporte la base du carr, que l'axe est l'axe de sy-
mtrie vertical du carr et que le tronc de l'arbre a 60 pixels de
haut.
1 est la composition d'une homothtie de facteur 0,7 et
d'une rotation de 20o (autour de l'origine), suivie d'une
0
translation de direction = ( )
60
1 gnre la partie gauche de l'arbre.
2 est la composition d'une homothtie de facteur 0,7 et
d'une rotation de -20o suivie d'une translation de direction
0
= ( ).
60
2 gnre la partie droite de l'arbre.
3 est la transformation donne par la matrice
0,01 0
=( ).
0 0,3
3 gnre le tronc de l'arbre.
Exercice 12
Dterminer sous la forme
= + +
{
= + +
les 4 affinits qui gnrent la fougre dcrite au d-
but de ce chapitre, puis crire le programme qui la
dessine.
Exercice 14
On considre lIFS form des 3 premires affinits 1 ,
2 et 3 de l'exemple 1, 1 2 3 forme donc un
triangle de Sierpinski. crire un programme qui des-
sine ce triangle de Sierpinski.
Exercice 15
Le dessin donn ci-contre est le domaine obtenu
par itrations de 2 affinits 1 et 2 .
Retrouver ces 2 affinits.
Indications
1 envoie sur 1 o 1 est la petite rplique
infrieure de .
2 envoie sur 2 o 2 est le complmen-
taire de 1 par rapport D.
Trouver 1 et 2 en composant des rotations,
homothties et translations.
Placer pralablement un repre orthonorm
sur le dessin en choisissant judicieusement une
origine et une unit (par exemple de cm).
Ecrire le programme qui dessine .
Amliorer les affinits pas essais successifs.
Exercice 16
Combiens d'affinits sont-elles ncessaires pour gn-
rer l'image ci-contre.
Exercice 17
a) Trouver 4 affinits qui engendrent la courbe de
Koch ci-contre.
b) La courbe de Koch peut galement tre dcrite
l'aide de 2 affinits. Trouver ces 2 affinits.
n=3 a b c d e f p
0,5 0 0 0,5 -25% 0 0,33
0,5 0 0 0,5 25% 0 0,33
0,5 0 0 0,5 0 50% 0,34
n=4 a b c d e f p
0 0 0 0,16 0 0 0,01
0,2 -0,26 0,23 0,22 0 16% 0,07
-0,15 0,28 0,26 0,24 0 4,4% 0,07
0,85 0,04 -0,04 0,85 0 16% 0,85
n=4 a b c d e f p
0 0 0 0,5 0 0 0,05
0,3 0 0 0,3 0 30% 0,15
0,42 -0,42 0,42 0,42 0 38% 0,4
0,42 0,42 -0,42 0,42 0 38% 0,4
Exercice 19
Trouver le systme de fonctions itres qui engendre
le dessin ci-contre, puis utiliser le programme de
l'exercice 18 pour effectuer le dessin.
Exercice 20
Programmer le dessin d'une fort.
Programme
Let pi = 4 * Atn(1)
Let x0 = r: y0 = r
For nx = -m To m
For ny = -m To m
Let x = 2 * r / pi * arcsin(nx / m)
Let y = ny
Let c = Picture1.Point(x0 + x, y0 + y)
Picture2.PSet (x0 + nx, y0 + ny), c
Next ny
Next nx
Remarque
La fonction arcsin() n'est pas dfinie en Visual Basic, il faut donc utiliser la rela-
Arctan(12) si 1
tion arcsin() = si = 1
2
{ si = 1
2
Exercice 21 (Triangles)
crire un programme qui transforme un carr en un triangle
ou
Indication
=
La transformation : { o = () est une fonction qui dpend de .
=
( = 1 si = et = 0 si = pour la transformation de gauche ci-dessus).
ou
Indication
Il est ncessaire de trouver une fonction dont le graphe dcrit la forme du vase.
Cette fonction est, pour chaque ligne de l'image, le facteur d'homothtie selon .
k k
1 1
0.5 0.5
y y
100 100 100 100
Exercice 23 (Vagues)
crire le programme qui dforme une image en crant une vague.
ou
Les vagues sont toutes semblables L'amplitude des vagues dpend de .
elle est maximale lorsque = 0 et
nulle lorsque = ou = .
2 2500
= || =
Indication
Cette transformation peut tre considre
comme la composition de 2 transformations de =
Coordonnes polaires
Pour certaines transformations, il est plus simple d'exprimer les points en coor-
donnes polaires [, ] plutt qu'en coordonnes cartsiennes (; ). Il sagit prin-
cipalement de transformations radiales et de transformations angulaires.
Si lon dsigne par et les coordonnes rectangulaires, et par et les coordon-
nes polaires, le changement de coordonnes se fait par les formules
1 1 1
r r r
1 1 1
1 3 2 1 3 2 1 3 2
2 2 2 2 2 2
P'(x;y) D'(xD;yD)
P(x;y) C'(xC;yC)
C(0;y) D(100;y)
E'(x2;y2)
A'(xA;yA)