Binarisation d’image#
Lors de la binarisation d’une image, nous produisons une image qui n’a que deux valeurs : Vrai et Faux. Elles peuvent également contenir la valeur 0, par exemple pour l’arrière-plan, et toute autre valeur pour le premier plan.
import numpy as np
from skimage.io import imread, imshow
from skimage.filters import gaussian
Nous utilisons cet exemple d’image de noyaux.
image_nuclei = imread('../../data/mitosis_mod.tif')
imshow(image_nuclei)
<matplotlib.image.AxesImage at 0x1dcf6b5dbe0>
Seuillage d’image#
La technique de binarisation la plus courante est le seuillage. Nous appliquons un seuil pour déterminer quels pixels se situent au-dessus d’une certaine intensité de pixel et lesquels sont en dessous.
image_binary = image_nuclei > 60
imshow(image_binary)
<matplotlib.image.AxesImage at 0x1dcf6bb09a0>
Amélioration des résultats de binarisation#
Parfois, les résultats de la binarisation apparaissent pixelisés. Cela peut être amélioré en appliquant un filtre avant de seuiller l’image.
image_denoised = gaussian(image_nuclei, sigma=1, preserve_range=True)
imshow(image_denoised, cmap='Greys_r')
C:\Users\haase\mambaforge\envs\bio39\lib\site-packages\skimage\io\_plugins\matplotlib_plugin.py:150: UserWarning: Float image out of standard range; displaying image with stretched contrast.
lo, hi, cmap = _get_display_range(image)
<matplotlib.image.AxesImage at 0x1dcf6c48640>
image_binary2 = image_denoised > 60
imshow(image_binary2)
<matplotlib.image.AxesImage at 0x1dcf7d61040>