VaultBy ENSAMIENParrainage
Notebook

POO — Héritage :

enonce.ipynb

Programmation Avancée
( Python )

TDP 07
Math (suite) , POO

Répondez aux questions et envoyez à votre classe room le fichier
ayant comme nom le format suivant

  • TDP_07_Python_NOM_PRENOM.ipynb

    </ul>
    

Nom Prénom :

Exercice : Modéliser des formes géométriques en Python.

  1. Créer une classe de base Forme avec une méthode surface() qui retourne 0 (surface indéfinie).
  1. Créer une classe Rectangle qui hérite de Forme et possède les attributs longueur et largeur. Implémente la méthode surface() pour calculer l’aire du rectangle.
  1. Créer une classe Carre qui hérite de Rectangle. Son constructeur prend un seul paramètre cote et utilise le constructeur du rectangle en fixant longueur = largeur = cote.
  1. Créer une classe Triangle qui hérite de Forme avec les attributs base et hauteur. Implémente la méthode surface() pour calculer l’aire du triangle (base * hauteur / 2).
  1. Créer des objets de chaque type (Rectangle, Carre, Triangle) et affiche leur surface.
  • Calculer la moyenne de chaque étudiant
  • Calculer la moyenne de chaque matière
  • calculer la variation des notes pour chaque matière (écart-type par colonne)

Broadcasting :

Détection d’anomalies visuelles dans des captures d’écran. Avant d’appliquer un modèle, vous devez normaliser, éclaircir, et transformer les matrices d’images à l’aide du broadcasting NumPy.

  • Données simulées
    Voici un exemple de simulation d'une image en niveaux de gris (valeurs de 0 à 255).
    Chaque cellule représente un pixel.
import numpy as np

# Image 4x4 simulée (niveau de gris)
image = np.array([
    [ 50,  80, 120, 200],
    [ 30,  60, 110, 180],
    [ 20,  40, 100, 160],
    [ 10,  30,  90, 150]
], dtype=np.uint8)

print("Image originale :\n", image)
Image originale :
 [[ 50  80 120 200]
 [ 30  60 110 180]
 [ 20  40 100 160]
 [ 10  30  90 150]]

Question 1 : Normalisation des intensité

L’objectif est de ramener les valeurs entre 0 et 1.

  • Générer aléatoirement une matrice de taille (1_000 , 1_000) à valeur entre 0 et 255.
  • Récupérer les valeurs min et max de toute la matrice image.
  • Faire un parcours via les boucles for pour réaliser la formule suivante à chaque pixel:

    ValPix = ValPix - minImg / maxImg - minImg

  • Calculer le temps écoulé

  • Refaire la meme tache en utilisant le Broadcasting : Ici, le broadcasting agit entre la matrice image et des scalaires (min, max).
  • comparer les temps d'execution tout en vérifiant l'égalité des résultats obtenus

Question 2 : Correction d’éclairage (broadcasting par ligne)

Supposons que chaque ligne de l’image ait une lumière différente.
Vous devez compenser cela en ajoutant un facteur de luminosité à chaque ligne.

  • Générer un vecteur aléatoire qui fait le rôle du vecteur de correction
  • les valeurs de ce vecteur sont entre -25 et 25
    • N.B : Ce vecteur doit être appliqué à la matrice initiale
  • Faire la correction en ajoutant la valeur du vecteur de correction à chaque pixel des lignes de l'image:
    • En utilisant un parcours par pixel
    • En utilsant un parcours ligne / ligne
    • En utisant le broadcasting sur toute la matrice
  • Comparer les résultats et les temps d'executions
Vérification du débordement :
  • Vérifier qu'il n'y a pas débordement dans les valeurs de l'images 0 ≤ ValPix ≤ 255 , dans le cas contraire (débordement) remettre les valeurs négatives à 0 et les valeurs supérieures à 255 à la valeur maximale 255:
    • En utilisant un parcours pixel / pixel
    • En utilsant le filtrage booléen
    • Vérifier l'égalité des résultats

Question 3 : Broadcasting pour correction couleur (application à 3 canaux RGB)

Vous allez manipuler une imagette couleur 3D simulée (imgRGB).
- Générer aléatoirment la variable imgRGB contenant 3 matrices d'images, chaune de dimension (7,7), la première représente la composante R (canal Rouge), la deuxieme G (canal Vert) et la troisième B (canal Bleu).

# print(imgRGB.shape) doit afficher : (7, 7, 3)
  • l'objectif est de réduire l’intensité du canal rouge et renforcer le bleu, en multipliant les valeurs des matrices-canaux R,G,B par le facteur de correction :
    • Facteur de correction pour canal R : 0.8
    • Facteur de correction pour canal B : 1.1
  • N.B :
    • Il faut que les valeurs des matrices images restent entières
    • Vérifier et corriger un éventuel débordement pour le canal B
Question 4: Format du broadcasting

Vous travaillez sur un système IoT qui collecte des mesures de température depuis plusieurs capteurs installés dans différentes zones d’un bâtiment.
Chaque ligne de votre matrice représente une zone, et chaque colonne un capteur.

import numpy as np

# Températures (en °C)
# Lignes = zones ; colonnes = capteurs
T = np.array([
    [20.5, 21.0, 20.8],
    [19.5, 19.8, 20.1],
    [22.0, 22.5, 22.1],
])

print("Matrice T :\n", T)
print("Shape :", T.shape)
Matrice T :
 [[20.5 21.  20.8]
 [19.5 19.8 20.1]
 [22.  22.5 22.1]]
Shape : (3, 3)
  • Pour corriger les mesures, vous devez soustraire un biais de calibration propre à chaque capteur.
# Biais par capteur (colonne)
biais = np.array([+0.5, -0.2, +0.1])  # (3,)
print(biais.shape)
(3,)
  • Corriger correctement les valeurs mesurées à l’aide du broadcasting, puis afficher les nouvelles mesures
# Matrice corrigée :
#  [[20.  21.2 20.7]
#  [19.  20.  20. ]
#  [21.5 22.7 22. ]]
  • En supposant que vous avez reçu le vecteur AutreBiais au lieu du vecteur biais:
  • Corriger les valeurs mesurées à l’aide du broadcasting via AutreBiais, puis afficher les nouvelles mesures
AutreBiais = biais.reshape(3,1)
print("Shape de AutreBiais :", AutreBiais.shape)
  • Remarques et conclusions

    Type at least 2 letters. ↑ ↓ to move, Enter to open.