Sie sind auf Seite 1von 24

Transformations gomtriques

et
modifications d'images

Programmes en Visual Basic

TABLE DES MATIRES

1 Prsentation 2

2 Permutations de pixels 5

3 Transformations affines 8

4 Affinits et images fractales 13

5 Transformations non affines 17

Jean-Marc Ledermann, 2016


1 Prsentation
Les activits proposes dans ce fascicule consistent dcrire des transformations
gomtriques (translations, rotations, homothties, changements d'chelle, sym-
tries ) sous forme mathmatique
(;
( ; )

puis appliquer ces transformations sur des images.

Une transformation gomtrique peut tre donne en exprimant les coordon-


nes et d'un point , image par de , en fonction des coordonnes et du
point .
= (, )
: {
= (, )
o = (, ) et = (, ) sont des fonctions 2 variables et .

Exemple 1
= + 5
Appliquons la transformation : { quelques points du plan.
=
Le point (0; 1) a comme C
image le point (5; 1).

Le point (2; 1) a comme


image le point (7; 1). A B

Le point (2; 2,5) a comme


image le point (7; 2,5). A' B'

Le triangle a comme
image le triangle .
C'

2 Transformations gomtriques et modifications d'images


L'algorithme principal d'un programme informatique qui applique une transfor-
mation gomtrique un graphique affich l'cran consiste calculer l'image de
chaque point (pixel) de ce graphique puis dessiner ce nouveau point en lui don-
nant la couleur du point de dpart correspondant.

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.

b) Complter le programme de sorte qu'il effectue 8 copies de l'image.

c) Complter le programme de sorte qu'il effectue 32 copies de l'image.

4 Transformations gomtriques et modifications d'images


2 Permutations de pixels
partir dune image originale, on construit une nouvelle image de mmes dimen-
sions en permutant ses pixels. Une permutation est une application bijective de
lensemble des pixels de limage vers le mme ensemble.
Exemple 1
Considrons une petite image rectangulaire de 3 lignes et 4 colonnes. Les 12 pixels
qui la constituent sont ici dsigns par les lettres abcdefghijkl.
La permutation dcbahgfelkji de ces lettres fournit une a b c d d c b a
nouvelle image obtenue partir de la premire par e f g h h g f e
une symtrie daxe vertical. i j k l l k j i

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.

Cette nouvelle image est cre par la mthode suivante.


Chaque groupe de 4 points contigus constituant un petit carr de l'image de d-
part est clat; chacun des points est envoy vers l'une des petites images d'ar-
rives. Ces nouveaux points sont placs dans chacune des petites images fi-
nales, l'endroit correspondant l'emplacement du petit carr dans l'image de
dpart.

6 Transformations gomtriques et modifications d'images


La premire petite image est donc forme de la copie des points de l'image ini-
tiale de coordonnes (; ) o est pair et est pair.
La seconde petite image est forme de la copie des points de coordonnes
(; ) o est impair et est pair.
La troisime petite image est forme de la copie des points de coordonnes
(; ) o est pair et est impair.
La quatrime petite image est forme de la copie des points de coordonnes
(; ) o est impair et est impair.

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.

Pour dterminer l'ordre d'une permutation, on peut prendre au hasard un pixel et


observer ses dplacements. Le nombre minimal de transformations effectuer
pour que le pixel choisi retourne sa position initiale est un diviseur de lordre de
la permutation.
Aprs quelques essais, on devine lordre de la permutation. Pour assurer que
lordre devin est effectivement correct, il faudrait toutefois tester le dplacement
de tous les pixels.

c) crire un programme qui affiche la trajectoire, pour


le photomaton, d'un pixel pris au hasard et donne le
nombre minimal de transformations effectuer
pour que ce pixel retourne sa position initiale.
Vrifier que cet ordre varie avec les dimensions de
limage (donnes dans des zones de texte).

On peut montrer que


( ) = PPCM( ( ), ( ) ).
( ) = plus petite valeur de telle que 2 1 soit un multiple de 1.
o ( ) = ordre de la transformation du photomaton pour une image de for-
mat .
Exemple pour une image de 10 12
26 1 = 63 =7 9 210 1 = 1023 = 93 11
(10 12) = PPCM( 6, 10) = 30

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 .

La transformation est dite affine si elle peut s'crire sous la forme


= + +
:{
=++
avec 6 constantes , , , , et .

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

8 Transformations gomtriques et modifications d'images


+
Une telle application = ( ) = ( ) qui transforme les vecteurs
+
du plan est appele application linaire. Cette application est associe l'applica-
= + +
tion affine : { qui, elle, agit sur des points.
=++


Une application linaire est donne par sa matrice = ( ),

+
= = ( )( ) = ( ).
+

Recherche de la matrice d'une application linaire


1 1
On constate que ( )=( )( ) = ( )
0 0
0 0
et que ( )=( )( ) = ( )
1 1
donc Les colonnes de la matrice d'une application
linaire sont les images des 2 vecteurs de base.

Cette proprit permet de trouver la matrice d'une application linaire.


Exemple
Cherchons la matrice d'une rotation de 30
2

2
Notons 1 l'image du vecteur de base 1 par cette
rotation et 2 l'image de 2 .
1
cos(30) 30o
1 = cos(30)
1 + sin(30) 2 = ( ),
sin(30)
sin(30) 30o
2 = sins(30)
1 + cos(30) 2 = ( )
1
cos(30)
cos(30) sin(30)
La matrice de cette rotation est donc = ( )
sin(30) cos(30)
1
L'image, par exemple, du vecteur = ( ) est le vecteur
2
3 1 32
cos ( 30 ) sin ( 30 ) 1 1
= = ( ) ( )=(2 2
) ( )=( 2 ).
sin(30) cos(30) 2 1 3 2 23+1
2 2 2

Quelques matrices de transformations linaires


cos() sin()
Rotation d'angle : = ( )
sin() cos()
0
Homothtie de facteur : = ( )
0
0
Changement d'chelles : = ( 1 )
0 2
1 0
Symtrie d'axe : = ( )
0 1

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.

10 Transformations gomtriques et modifications d'images


Exercice 7
a) Donner la matrice d'un changement d'chelles qui envoie le carr de 200 sur
200 sur un rectangle de 450 sur 120.
b) crire un programme qui transforme une image comme prsente ci-dessous.

On constate, avec l'exercice prcdent, que la figure obtenue est parseme de


trous. Cela rsulte du fait que l'ensemble des images ne concide pas entirement
avec la zone d'arrive.
Pour viter cet inconvnient, il est possible de calculer l'image d'un plus grand
nombre de points (For x = 0 To 199 Step 0.5 For y = 0 To 199 Step 0.5), mais il
est prfrable de calculer la rciproque de la transformation gomtrique pour
connatre la primage de chaque pixel de la zone d'arrive. Il faut ensuite modifier
le programme de sorte qu'il parcourt tous les pixels de la zone d'arrive et colore
chacun d'eux avec la couleur de sa primage.

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)

Pour le pixel de centre (0 ; 0 )


par exemple, le coefficient 0,0
de pondration sera
0,0 = (1 ) (1 )
avec 0 = Int(), 0 = Int(),
et = 0 et = 0 .
b) Complter le programme
de sorte qu'il applique une
interpolation bilinaire.

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.

12 Transformations gomtriques et modifications d'images


4 Affinits et images fractales
La mthode dite de Barnsley permet de construire des images fractales partir de
quelques affinits bien choisies. y
Observons la fougre ci-contre que nous nommerons .
Une premire affinit, 1 , transforme cette fou-
gre en une fougre plus petite 1 , de cou-
leur verte dans l'image ci-contre.
1 est l'image de par une homothtie de fac-
teur 0,85 suivie par une rotation de 3, puis
d'une translation verticale au 15% de la hau-
teur de .
Une deuxime affinit, 2 , transforme cette
fougre en une feuille de fougre 2 de cou-
leur rouge dans l'image ci-contre. D1
2 est l'image de par une homothtie de fac-
teur 0,3 suivie par une rotation de 45, puis par h
une translation verticale au 15% de .
Une troisime affinit, 3 , transforme cette fou-
gre en une autre feuille de fougre 3 de
couleur bleu dans l'image ci-contre.
3 est l'image de par une symtrie d'axe ,
suivie d'une homothtie de facteur 0,3, d'une
rotation de 50, puis d'une translation verti- D2
cale au 7,5% de la hauteur.
Une dernire affinit, 4 , transforme cette fou-
gre en une partie du tronc de fougre 4 .
D3
4 est l'image de par un changement
d'chelle de facteur 0,15 selon l'axe et
0,001 selon l'axe . D4 x

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 ).

4 Affinits et images fractales 13


Itrer ce procd un grand nombre de fois et ainsi obtenir un domaine
form de l'ensemble des points obtenus lors des itrations.
Un thorme, dit thorme de collage, affirme que
Si 1 ( ) 2 ( ) 3 ( ) ( ) = alors

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.

14 Transformations gomtriques et modifications d'images


Exercice 13
(0; 1)
On considre lIFS form des 4 affinits 1 , 2 , 3 et 4
qui envoient le carr unit sur les domaines 1 , 2 , 3 et 3 4
4 coloris ci-contre.
a) Dcrire
b) Donner chacune des affinits 1 , 2 , 3 et 4 par sa 1 2
matrice M et son vecteur de translation t .
c) Dcrire le domaine que l'on obtient en utilisant (0; 0) (1; 0)
uniquement les 3 premires affinits 1 , 2 et 3 d-
crites ci-dessus, puis programmer le dessin de .

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.

4 Affinits et images fractales 15



Exercice 18
tant donn une image de hauteur , et n affinits
(1 , 2 , 3 ) , crire un programme qui dessine
par la mthode de Barnsley.
Chaque affinit est donne par sa matrice

= ( ) et son vecteur de translation = ( ).

et sont donns en pourcents de la hauteur .
Le choix des affinits 1 , 2 , 3 ne sera pas forc-
ment quiprobable, il respecte une certaine distribu-
tion. Chaque affinit sera choisie au hasard avec une
probabilit donne ( =1 = 1 ).
Appliquer votre programme aux donnes suivantes.

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.

16 Transformations gomtriques et modifications d'images


5 Transformations non affines
= (, )
Les transformations : { pour lesquelles les fonctions et ne sont
= (, )
pas affines ont des effets plus imprvisibles.
Exemple 1 : transformation d'un carr en un cercle
On peut envisager diffrentes transformations gomtriques qui envoient un carr
sur un cercle, en voici quelques exemples.

Pour ces transformations on place l'origine au centre des images.


Pour parcourir tous les pixels du carr initial il faut donc faire varier et entre
et (pour un carr de ct 2 + 1 pixels).
La premire transformation raccourcit les hori- 2 2
2 2
{ =

zontales : :
=
y
Programme r
Let x0 = m : Let y0 = m
For x = -m To m
For y = -m To m
Let c = Picture1.Point(x0 + x, y0 + y)
Let nx = Sqr(m ^ 2 y ^ 2) / m * x
Let ny = y
Picture2.PSet (x0 + nx, y0 + ny), c
Next y
2 2
Next x

La deuxime transformation raccourcit les verti-


m
=
cales : : { 2 2
=

x
Programme
Let x0 = m : Let y0 = m
For x = -m To m
For y = -m To m
Let c = Picture1.Point(x0 + x, y0 + y)
Let nx = x
Let ny = Sqr(m ^ 2 x ^ 2) / m *y
Picture3.PSet (x0 + nx, y0 + ny), c
Next y
Next x

5 Transformations non affines 17


=
La troisime transformation raccourcit les diagonales : : {
=

avec = .
_
et _ = longueur du segment qui contient le point (; ) et dont une
extrmit est le centre du carr et l'autre extrmit est sur un
cot du carr; m_max dpend donc du point .
Programme
For x = -m To m Step 1/2 M_max
For y = -m To m Step 1/2
If Abs(y) < Abs(x) Then m
Let m_max = Sqr(m ^ 2 + m*y/x) ^ 2)
Else
If y<>0 then
Let m_max = Sqr(m ^ 2 + (m*x/y) ^ 2)
Else P(x;y)
Let m_max =m
End If
End If
Let k = m/ m_max
Let nx = k * x
Let ny = k * y
Let c = Picture1.Point(x0 + x, y0 + y)
Picture4.PSet (x0 + nx, y0 + ny), c
Next y
Next x

Exemple 2 placage d'une image sur un demi-cylindre


La transformation dcrite ci-dessous enroule l'image sur un demi-cylindre puis
projette ce cylindre dans l'cran.

Elle est dfinie par


2
= sin( )
: { 2
=
Programme
Let pi = 4 * Atn(1)
For x = -m To m
For y = -m To m
Let alpha = x * pi / (2 * m)
Let nx = 2 * m / pi * Sin(alpha)
Let ny = y
Let c = Picture1.Point(x0 + x, y0 + y)
Picture2.PSet (x0 + nx, y0 + ny), c
Next y
Next x

18 Transformations gomtriques et modifications d'images


En composant la transformation prc-
dente avec le changement d'chelle

=
: { 2

=
on obtient une image transforme de la
mme taille que l'image de dpart.

Toutefois l'utilisation de la rciproque per-


met d'viter les traits verticaux blancs.
2
= arcsin( )
: {
=

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).

5 Transformations non affines 19


Exercice 22 (Vases)
crire le programme qui dforme une image comme illustr ci-dessous

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 = .

Exercice 24 (Transformation du plan complexe)


Les fonctions : de dans dcrivent une transformation du plan de
Gauss. En posant = + et () = + , elles permettent de dcrire une
transformation d'image. Par exemple, une rotation de 30 autour de l'origine est
3 1
dcrite par la fonction : = ( + ) .
2 2
Programmer les transformations donnes ci-dessous.

2 2500
= || =

20 Transformations gomtriques et modifications d'images


Exercice 25 (Sphre)
Trouver une transformation qui plaque un carr sur une sphre

Indication
Cette transformation peut tre considre
comme la composition de 2 transformations de =

l'espace, la premire consiste dformer et 2

agrandir l'image pour la plaquer sur la sphre, la


deuxime consiste projeter les points de la
sphre dans l'cran.
On constate que l'image est parseme de points P 1
blancs. Pour y remdier il faut utiliser la rci- r
1
proque de la transformation. =

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

Transformation polaire cartsienne


= cos()
= sin() r
y
Transformation cartsienne polaire

= 2 + 2
x
arctan ( ) si > 0

3
= arg(; ) = sgn() 2 si = 0 [ ; [
2 2

{arctan ( ) + si < 0

5 Transformations non affines 21


Exercice 26 (Transformations radiales)
a) Trouver les fonctions (), [0; 2] , de sorte que la courbe d'quation pa-
= () cos()
ramtrique { [0; 2] corresponde aux tracs donns
= () sin()
ci-dessous.
1 1 1

1 1 1

r r r

1 1 1

1 3 2 1 3 2 1 3 2
2 2 2 2 2 2

b) crire le programme qui dforme une image en transformant, pour chaque


point, le rayon des coordonnes polaires mais en ne modifiant pas l'angle .
La transformation de peut tre inspire du point a de l'exercice.

Exercice 27 (Transformations angulaire)


crire le programme qui dforme une image en crant un tourbillon

Indication, l'angle dpend de .

22 Transformations gomtriques et modifications d'images


Exercice 28 (Quadrilatre)
Trouver une transformation gomtrique qui envoie un carr sur un quadrilatre.
Observer le dessin ci-dessous puis exprimer les coordonnes et du point en
fonction des coordonnes et du point .
G'(x4;y4)
B'(xB;yB)
B(x;100) F(100;100)
G(0;100) F'(x3;y3)

P'(x;y) D'(xD;yD)

P(x;y) C'(xC;yC)
C(0;y) D(100;y)
E'(x2;y2)

A'(xA;yA)

(0;0) A(x;0) E(100;0) (0;0)

Construire cette transformation avec Cabri-Gomtre :


La cration d'une macro permettant de reporter un rapport de section est utile
dans cette construction.
Faire appartenir le point
un cercle puis faire tracer
le lieu gomtrique du
point lorsque parcourt
ce cercle permet de repr-
senter la courbe image du
cercle.

crire le programme qui effectue cette transformation, les points , et tant


donns par des clics de la souris.
On constate qu' l'arrive, la figure est parseme de trous. Pour y remdier on peut
utiliser la rciproque de la transformation.
Pour dterminer cette rciproque, et bien qu'il soit possible de la trouver algbri-
quement, l'utilisation de Mathematica s'avre utile.
L'instruction Mathematica :
Solve[{u == g(x,y) , v == h(x,y)} , {x , y}]
= (, )
Permet de calculer la rciproque d'une transformation : {
= (, )

5 Transformations non affines 23


Exercice 29 (Transformations diverses)
Choisir puis programmer l'une ou l'autre des transformations illustres ci-dessous.

24 Transformations gomtriques et modifications d'images

Das könnte Ihnen auch gefallen