Rotation d’image
Objectif : faire tourner une image d’un quart de tour et comparer différentes méthodes
Introduction
Pour manipuler une image, nous utiliserons le module PIL.
Méthode simple
Télécharger l’image suivante :En première approche, on se propose de procéder de la manière suivante :
- Créer une nouvelle image (noire !) aux dimensions de l’image originale (en inversant largeur et hauteur !),
- Parcourir un à un chaque pixel de l’image originale et le placer à la bonne place dans l’image tournée.
rotation_simple(img)
qui attend un argument de type Image
et retourne une nouvelle image tournée d’un quart de tour. L’image originale n’est pas modifiée.
Méthode récursive
Afin de travailler en espace mémoire constant, on se propose de faire tourner l’image en place, c’est à dire sans créer de nouvelle image.
Pour cela nous travaillerons sur une image carrée, en utilisant une méthode de type diviser pour régner.
Télécharger l’image suivante :
La méthode proposée consiste à :
- Diviser l’image en 4 quadrants de mêmes dimensions.
- Opérer une permutation circulaire de ces quadrants
- Tourner récursivement chacun des 4 quadrants …
- La récursion s’arrête lorsque le quadrant ne peut plus être divisé (il ne comporte qu’un seul pixel)





Voici le résultat :
permutation_quadrants(img, x, y, n)
permettant la permutation de 4 quadrants de dimension n
de l’image img
, à partir du pixel de coordonnées x
et y
.
rotation_recurs(img, x, y, n)
, réalisant récursivement la rotation d’un portion carrée (de dimension n
) de l’image img
, à partir du pixel de coordonnées x
et y
.