Retourner au courant

Seuillage d'image en Python3

Le seuillage est une technique de traitement d'image permettant l'attribution de chaque pixel soit à une couleur, soit à une autre, selon un seuil. Plus explicitement :

FR

Définition

Soit ff une image composée de nn lignes et mm colonnes, avec i{0,,n1}i\in\{0,\ldots,n-1\} et j{0,,m1}j\in\{0,\ldots,m-1\}.

Soit f(i,j)f(i,j) l’intensité d’un pixel, définie ici comme la valeur maximale du triplet [R,G,B][R,G,B] associé au pixel.

Soit un seuil s \in \[0,255\].

Alors le seuillage de l’image f serait équivalent à une fonction gg tel que :

g(i,j)={255si f(i,j)s0sinon.g(i,j) = \begin{cases} 255 & \text{si } f(i,j) \geq s \\ 0 & \text{sinon.} \end{cases}

Nécessaire

Python 3 :

Pour suivre ce tutoriel, vous devez avoir installé Python 3 ainsi que le package numpy.

J’utiliserai personnellement le “Jupyter notebook” de Google : Google Colab.

Article précédent sur les bitmaps en python :

Modifier la Bitmap d’une image avec Python 3

Fonction de seuillage

Tout d’abord, il nous faut une image. Pour cela, je vous suggère de télécharger celle-ci comme ceci :

import numpy as np
from PIL import Image
ImgDL = Image.open('autumn-autumn-leaves-beautiful-color-206648-1024x771.jpg').convert('RGB')

La fonction :

Il existe plein de façon d’effectuer un seuillage en python, je vous propose celle-ci :

def seuillage(image: Image.Image, seuil: int) -> Image.Image:
    pixels = np.asarray(image.convert('RGB'))
    intensite = np.max(pixels, axis=2)
    masque = np.where(intensite >= seuil, 255, 0).astype(np.uint8)
    resultat = np.repeat(masque[:, :, np.newaxis], 3, axis=2)
    return Image.fromarray(resultat, 'RGB')

Un exemple d’utilisation de cette fonction serait :

seuillage(ImgDL, 110)

Le résultat :

Image originale

Seuillage d image (seuil = 110)

Faire varier le seuil entre 0 et 255 peut permettre d’obtenir de nombreuses images très intéressantes :

Seuille = 20 Seuille = 70 Seuille = 140

Le code source sur Github

seuillage-keskec.ipynb

Sources

  1. Seuillage d’image - Wikipédia
  2. Forum Développez.net