Pour appliquer un filtre de Gauss à une image il existe dans le module scipy de python la fonction: gaussian_filter. Exemple d'utilisation:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import scipy.ndimage
import scipy
img = scipy.misc.lena()
print img.shape
img_modified = scipy.ndimage.filters.gaussian_filter(img, sigma=3.0)
print img_modified.max(), img_modified.min()
print img_modified.shape
plt.imshow(img_modified[:,:], cmap = plt.get_cmap('gray'), \
vmin=img_modified.min(),vmax=img_modified.max())
plt.colorbar()
plt.savefig("GaussianFilter1.png")
Autre exemple en utilisant une image importée: lena_grayscale.png. Note: toujours vérifier le format de l'image avant de faire des opérations quelconques sur celle-ci (par exemple ici: img.shape donne (512, 512, 4): 4 pour 3*RGB + 1 alpha (transparence), ici l'image est en niveau de gris => R=G=B)
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import scipy.ndimage
import scipy
img = mpimg.imread('lena_grayscale.png')
print img.shape
img_modified = scipy.ndimage.gaussian_filter(img, sigma=3.0)
print img_modified.max(), img_modified.min()
print img_modified.shape
plt.imshow(img_modified[:,:,0], cmap = plt.get_cmap('gray'), \
vmin=img_modified.min(),vmax=img_modified.max())
plt.colorbar()
plt.savefig("GaussianFilter2.png")
Note: pour convertir une image RGB en échelle de gris voir l'article suivant: Convertir une image couleur en niveau de gris avec python
Recherches associées
Liens | Site |
---|---|
Image manipulation and processing using Numpy and Scipy | p.umu |
Quelques m ́ethodes de filtrage en Traitement d’Image | hal.archives-ouvertes |
scipy.ndimage.filters.gaussian_filter1d | scipy doc |
scipy.ndimage.filters.gaussian_filter | scipy doc |
ndimage missing from scipy | stack overflow |
scipy.misc.lena | scipy doc |