Filtres de suppression du bruit#

Les filtres tels que mean, median et Gaussian permettent de supprimer le bruit des images.

Nous commençons par un seul plan de l’ensemble de données MRT d’exemple qui est assez bruyant et nous faisons un zoom.

import numpy as np
from pyclesperanto_prototype import imshow
from skimage.filters import gaussian
from skimage import filters
import matplotlib.pyplot as plt
from skimage.morphology import disk
from skimage.io import imread
# open dataset and extract single plane
noisy_mri = imread('../../data/Haase_MRT_tfl3d1.tif')[90]

# zoom in by cropping a part out
noisy_mri_zoom = noisy_mri[50:100, 50:100]

fig, axs = plt.subplots(1, 2, figsize=(15,15))

axs[0].imshow(noisy_mri)
axs[1].imshow(noisy_mri_zoom)
<matplotlib.image.AxesImage at 0x25cc6124040>
../_images/0ffa63876919df48f8aed6179f51976d5a962ad6b72eacf64bfd83ea0e77e5a2.png

Maintenant, nous appliquons trois filtres et comparons les images résultantes.

median_filtered = filters.median(noisy_mri, disk(1))
mean_filtered = filters.rank.mean(noisy_mri, disk(1))
gaussian_filtered = filters.gaussian(noisy_mri, sigma=1)

fig, axs = plt.subplots(2, 3, figsize=(15,10))

# first row
axs[0, 0].imshow(median_filtered)
axs[0, 0].set_title("Médian")
axs[0, 1].imshow(mean_filtered)
axs[0, 1].set_title("Moyen")
axs[0, 2].imshow(gaussian_filtered)
axs[0, 2].set_title("Gaussien")

# second row
axs[1, 0].imshow(median_filtered[50:100, 50:100])
axs[1, 1].imshow(mean_filtered[50:100, 50:100])
axs[1, 2].imshow(gaussian_filtered[50:100, 50:100])
<matplotlib.image.AxesImage at 0x25cc62cfb50>
../_images/4f242b3f8c708b2915e6e679591f6836da88bd5aced3e7f9a2374b365f022795.png

Vous conviendrez peut-être que la première image montre les bords de manière plus prononcée que les deux autres. C’est parce que le filtre médian préserve les bords.