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 npimport matplotlib.pyplot as pltimport matplotlib.image as mpimgimport scipy.ndimageimport scipyimg = scipy.misc.lena()print img.shapeimg_modified = scipy.ndimage.filters.gaussian_filter(img, sigma=3.0)print img_modified.max(), img_modified.min()print img_modified.shapeplt.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 npimport matplotlib.pyplot as pltimport matplotlib.image as mpimgimport scipy.ndimageimport scipyimg = mpimg.imread('lena_grayscale.png')print img.shapeimg_modified = scipy.ndimage.gaussian_filter(img, sigma=3.0)print img_modified.max(), img_modified.min()print img_modified.shapeplt.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 |

