MATH202 TP #1

Traitement d'images avec Python

Objectifs

  • Découvrir le cadre du TP;
  • Réviser Python;
  • Coder des algorithmes de base pour le traitement d'images.

Info Génerales

Le TP doit être fait en binôme.

Codeur: Responsable pour l'implementation.

Navigateur: Responsable pour veiller à la qualité du code.

Tâches du navigateur

  • Discuter l'implementation avec le codeur;
  • Identifier les erreurs de typing;
  • Identifier les erreurs de logique;
  • Est-ce que le code est generique?
  • Est-ce que le code est lisable?

Info Génerales

  • Correctitude des questions;
  • Lisibilité du code;
  • Qualité du commentaires;
  • Participation et auto-évaluation.

Tous les TP pourront être rendus jusqu'au Dimanche après au TP jusqu'à 23:59 sur TP-LAB.

Critères de corrections

Organisation

Le TP dure 3h et il est divisé en trois sprints et une pause

Sprint 1

Sprint 2

Sprint 3

10

60

110

120

170

180

0

40min

10min

On bosse

On discute

Le binôme doit alterner les rôles de codeur et de navigateur à chaque sprint

Mini-Activité

Le quiz

Modèle d'image sur python

x

y

(0,0)

(1,0)

(0,1)

(x,y)

(1,1)

(5,5)

Sprint #1

  • Le support du TP: link
    • Page Moodle du cours
  • Lire la description des questions avec attention!
  • Pour la première question
    • Lire les commentaires avec attention!
    • Décomenter seulement les lignes marquées avec un double croisillon ( ## ).

Objectifs: Questions 1, 2 et 3

Sprint #1

  • Boucle et conditionnel en Python

Objectifs: Questions 1, 2 et 3

for i in range(0,10):
    if i%2==0:
        print(i)    #Affiche 0 2 4 6 8

ma_liste = [ (255,0,0), (128,0,128), (0,0,255) ]
for el in ma_liste:
    print(el)    #Affiche (255,0,0) (128,0,128) (0,0,255)
  • Opérations mathématiques
x = pow(3,2)
print(x)    #affiche 9

x = 3**3    
print(x)    #affiche 27

Mini-Activité

Le quiz

Sprint #1 - Point d'évaluation

  • Limite des listes
    • Image (200x100)                 (0,0) => (199,99)
  • Suggestions? Difficultés?

Sprint #2

Objectifs: Questions 4, 5 et 6

Mini-Activité

Peer Review

Peer Review

  • Identifier le binôme avec le même mathématicien ou informaticien que vous.
  • Les codeurs de chaque binôme changent des places. Maintenant, il est un codeur visiteur.
  • Le visiteur doit lire et comprendre le code d'autre codeur concernant une question proposé par l'intervenant:
    • Posez des questions aux collègues;
    • Remplir la fiche de peer review.

Peer Review

Reviser le code de la question 4 (troisNuancesDeGris)

Si le binôme que vous visitez n'a pas fini la question 4, reviser les questions 2 (imageBinaire) et 3 (couleurDiff).

Sprint #2 - Point d'évaluation

  • Suggestions? Difficultés?

Sprint #3

Objectifs: Questions 7, 8 et 9

Mini-Activité

Le quiz

Sprint #3 - Point d'évaluation

  • Suggestions? Difficultés?

Postface

Fonctions pratiques de Python

map( fonction, iterables* )

Fonction lambda

ma_fonction = lambda x,y: x+y
print( ma_fonction(2,3) )    #Affiche 5
ma_liste_pair = [0,2,4,6]
ma_liste_impair = [1,3,5,7]

mapped_liste = map( lambda x,y: x+y, ma_liste_pair, ma_liste_impair )

print( mapped_liste )    #Affiche 1 5 9 13

Postface

Fonctions pratiques de Python

functools.reduce( fonction, sequence[, initial] )

import functools
ma_liste = [0,1,2,3]
somme = functools.reduce( lambda x,y: x+y, ma_liste )

print( somme )    #Affiche 6

ma_liste_2 = [1,2,3,4]
produit = functools.reduce( lambda x,y: x*y, ma_liste_2 )

print( produit )     #Affiche 24

Postface

Fonctions pratiques de Python

enumerate( iterable[, start] )

mes_couleurs = [ (255,0,0), (0,255,0), (0,0,255) ]
liste_enumere = enumerate( mes_couleurs )

print( liste_enumere ) #Affiche (0,(255,00)) (1,(0,255,0)) (2,(0,0,255))

Postface

Fonctions pratiques de Python

help( python_fonction ) : Utiliser dans l'interpreteur interactif

>> help( enumerate )

Help on class enumerate in module builtins:

class enumerate(object)
 |  enumerate(iterable[, start]) -> iterator for index, value of iterable
 |  
 |  Return an enumerate object.  iterable must be another object that supports
 |  iteration.  The enumerate object yields pairs containing a count (from
 |  start, which defaults to zero) and a value yielded by the iterable argument.
 |  enumerate is useful for obtaining an indexed list:
 |      (0, seq[0]), (1, seq[1]), (2, seq[2]), ...
 |  
 |  Methods defined here:
 |  
 |  __getattribute__(self, name, /)
 |      Return getattr(self, name).
 |  
 |  __iter__(self, /)
 |      Implement iter(self).
 |  
 |  __new__(*args, **kwargs) from builtins.type
 |      Create and return a new object.  See help(type) for accurate signature.

Postface

Défis

Refaire la question 5 (plusSemblable) en utilisant une ou plusieurs fonctions parmis:

 

  • map
  • reduce
  • enumerate
  • lambda fonction

La question peut être codé en 2 lignes!

Conclusion

  • Auto-évaluation
  • Suggestions, difficultés?

MATH202 - TP1

By Daniel Martins Antunes

MATH202 - TP1

Traitement d'images avec Python

  • 164