• Aucun résultat trouvé

Vous pou- vez tester vos fonctions sur le fichier python-logo.gif, utilis´e dans les illustrations ci-dessous

N/A
N/A
Protected

Academic year: 2022

Partager "Vous pou- vez tester vos fonctions sur le fichier python-logo.gif, utilis´e dans les illustrations ci-dessous"

Copied!
4
0
0

Texte intégral

(1)

DUT Info Structures de donn´ees et algorithmes fondamentaux 2019–2020 TP 4 - Manipulation d’images

L’objectif de ce TP est de r´ealiser un programme permettant de visualiser certaines transfor- mations basiques sur des images. Le programme `a compl´eter (images_init.py) vous permet de charger des images, et de visualiser ce qui se passe avant et apr`es la transformation. Vous pou- vez tester vos fonctions sur le fichier python-logo.gif, utilis´e dans les illustrations ci-dessous.

Le programme applique les transformations les unes `a la suite des autres sur le r´esultat ; vous pouvez utiliser le bouton “R´einitialiser” pour recharger l’image de d´epart, au lieu de la charger

`

a nouveau via l’interface.

Remarques :

— Il est important que vos fonctions ne renvoient rien, car c’est de cette mani`ere que l’interface du programme d´etecte que la fonction a ´et´e compl´et´ee.

— Vous pouvez bien entendu charger des images de votre choix, mais : 1. tkinter ne permet de lire que les formats gifetpnm;

2. l’affichage des modifications ´etant plutˆot lent, il est conseill´e de s’en tenir `a des images de taille “raisonnable” ;

3. la transparence n’est pas bien g´er´ee par tkinter, si bien que des zones initialement transparentes peuvent devenir noires.

— Vous serez amen´es `a modifier directement les matrices pass´ees en param`etres `a vos fonc- tions. Si `a un moment donn´e, il vous est n´ecessaire de r´einitialiser le contenu de la matrice M qui vous est donn´ee, vous pouvez le faire `a l’aide de l’instruction M[:] = [] comme vu au cours.

— Il est interdit d’utiliser des m´ethodes de Python r´ealisant les tˆaches demand´ees, comme reverse,reversedou zip.

— Vous serez ´egalement ´evalu´es sur l’efficacit´e de vos fonctions.

— Il est recommand´e de tester les fonctions sur des petits exemples `a part, car certains probl`emes ne se voient pas sur des images.

Les manipulations `a effectuer sur les images se ram`enent en fait `a des transformations `a effectuer sur des matrices de pixels. Dans le cas de Python et du module tkinter qui nous permet de manipuler ces images, les pixels sont repr´esent´es par des tuples d’entiers entre 0 et 255 (par exemple : (0, 128, 255)).

1. Compl´etez la fonctioninverser_couleurs(M)pour qu’elle inverse les couleurs de chaque pixel de la matrice. Par “inverser”, on veut dire remplacer chaque valeur du pixel par son compl´ement (exemple : 135 devient 255−135 = 120). On aura donc le r´esultat suivant :

Page 1 / 4

(2)

DUT Info Structures de donn´ees et algorithmes fondamentaux 2019–2020 2. Compl´etez la fonction renverser_horizontalement(M)pour qu’elle modifie la matrice de pixels de mani`ere `a renverser l’image correspondante horizontalement, comme illustr´e ci-dessous :

3. Compl´etez la fonction renverser_verticalement(M) pour qu’elle modifie la matrice de pixels de mani`ere `a renverser l’image correspondante verticalement, comme illustr´e ci-dessous :

4. Compl´etez la fonctiontransposer(M)pour qu’elle transpose la matrice donn´ee, comme illustr´e ci-dessous. Veillez `a modifier la matrice en place si elle est carr´ee.

Page 2 / 4

(3)

DUT Info Structures de donn´ees et algorithmes fondamentaux 2019–2020 5. Compl´etez la fonction rotation_un_quart(M) pour qu’elle effectue une rotation d’un

quart de tour vers la droite sur la matriceM, comme illustr´e ci-dessous :

6. Compl´etez la fonctionecraser_horizontalement(M)pour qu’elle ´ecrase l’image corres- pondante horizontalement en en retirant une colonne sur deux, comme illustr´e ci-dessous :

7. Compl´etez la fonction ecraser_verticalement(M) pour qu’elle ´ecrase l’image corres- pondante verticalement en en retirant une ligne sur deux, comme illustr´e ci-dessous :

Page 3 / 4

(4)

DUT Info Structures de donn´ees et algorithmes fondamentaux 2019–2020 8. Compl´etez la fonctionzoom_out(M)pour qu’elle effectue un “zoom out” surM revenant

`

a diviser sa taille par deux, comme illustr´e ci-dessous :

9. Compl´etez la fonction zoom_in(M) pour qu’elle effectue un “zoom in” sur Mrevenant `a doubler sa taille, comme illustr´e ci-dessous :

Remarque : il est possible qu’un “zoom in” suivi d’un “zoom out” introduise certaines zones noires dans l’image. Vous pouvez tester votre programme sur des images plus petites que celle fournie pour v´erifier votre r´esultat dans ces cas-l`a.

Page 4 / 4

Références

Documents relatifs

Je vais traiter cet exemple sans me servir du logiciel R ou presque et faire tous les calculs « ` a la main » pour vous montrer au moins une fois dans ce cours comment nous

Aucun document ni calculatrice autoris´ e Toute r´ eponse non justifi´ ee est consid´ er´ ee comme z´ ero Questions :1. Montrer que A

5 Quand cette fenêtre apparaît, choisir le premier type de diagramme (lignes) et cliquer sur "Créer".. rep_graphique.doc Page 2 sur 2. Le diagramme s'inscrit dans

• la rencontre d’Yves Meyer qui donnait une conf´ erence ` a des lyc´ eens au sujet de la preuve d’Helfgott de la conjecture ternaire de Goldbach ; cela m’a amen´ ee ` a lire

On tire au hasard 10 cartes en remettant apr` es chaque tirage la carte tir´ ee dans le jeu.. On note X la variable al´ eatoire qui associe ` a chaque tirage de dix cartes le nombre

En premier lieu, nous avons ‘auscult´ e’ la puissance respective des cinq tests pour chacune des 10 lois consid´ er´ ees, ce en fonction du ou des param` etres associ´ e(s) ` a

tail pointe vers le dernier ´el´ement de la liste Le dernier ´el´ement poss`ede un pointeur x.next vide (not´e NIL) Doublement li´ee : Le premier ´el´ement poss`ede un pointeur

D’après vous parmi les entreprises du tableau, lesquelles semblent respecter la parité2. Comment pourrait-on construire un critère pour déterminer si oui ou non une entreprise