Manipulation de pixels
On considère une image en 256 niveaux de gris que l'on représente par une grille de nombres, c'est-à-dire une liste composée de sous-listes toutes de longueurs identiques.
La largeur de l'image est donc la longueur d'une sous-liste et la hauteur de l'image est le nombre de sous-listes. On donne d'ailleurs les deux fonctions largeur et hauteur définies ci-dessous :
largeur et hauteur
def largeur(image):
return len(image[0])
def hauteur(image):
return len(image)
Chaque sous-liste représente une ligne de l'image et chaque élément des sous-listes est un entier compris entre 0 et 255, représentant l'intensité lumineuse du pixel.
On s'intéresse à deux opérations :
- Le négatif d'une image est l'image constituée des pixels
x_ntels quex_n + x_i = 255oùx_iest le pixel correspondant de l'image initiale. - La binarisation d'une image qui consiste à remplacer tous les pixels par des \(0\) ou des \(1\) en fonction de la position de la valeur initiale par rapport à un seuil donné. (en cas d'égalité avec le seuil, le pixel prendra la valeur \(1\))
Exemples
>>> image_1 = [[20, 34, 254, 145, 6],
... [23, 124, 217, 225, 69],
... [197, 174, 207, 25, 87],
... [255, 0, 24, 197, 189]]
>>> hauteur(image_1)
4
>>> largeur(image_1)
5
>>> negatif(image_1)
[[235, 221, 1, 110, 249], [232, 131, 38, 30, 186], [58, 81, 48, 230, 168], [0, 255, 231, 58, 66]]
>>> binaire(image_1, 124)
[[0, 0, 1, 1, 0], [0, 1, 1, 1, 0], [1, 1, 1, 0, 0], [1, 0, 0, 1, 1]]
Question 1 : fonction negatif:
Compléter la fonction negatif qui prend en paramètre image une liste de listes d'entiers représentant une image, et renvoie une liste de listes d'entiers représentant le négatif de l'image.
Dessin original
Dessin négatif
Question 2 : fonction binaire:
Compléter la fonction binaire qui prend en paramètres image une liste de listes d'entiers représentant une image et seuil un entier représentant le seuil de binarisation. La fonction renvoie une liste de listes d'entiers représentant l'image après binarisation.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Dessin original
Dessin binaire
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)