L'histogramme d'une image et l'amélioration du contraste
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 8 — Matrices de pixels et images
Énoncé
Écrire histogramme_image(img) calculant la distribution des pixels, puis une fonction etire_contraste(img) qui étire les niveaux de gris de façon affine pour occuper toute la plage .
Corrigé
def histogramme_image(img: list) -> list:
h = [0] * 256
for ligne in img:
for v in ligne:
h[v] += 1
return h
def etire_contraste(img: list) -> list:
mini = min(min(ligne) for ligne in img)
maxi = max(max(ligne) for ligne in img)
n, p = len(img), len(img[0])
assert mini < maxi, "L'image ne doit pas être uniforme"
return [[(img[i][j] - mini) * 255 // (maxi - mini) for j in range(p)]
for i in range(n)]
Si l'image d'origine a un contraste faible (ex: pixels regroupés entre et ), cette fonction étire linéairement ces valeurs pour les distribuer sur l'ensemble de la plage disponible , rendant les détails de l'image beaucoup plus distincts.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.