Applying filters on an image
In this recipe, we apply filters on an image for various purposes: blurring, denoising, and edge detection.
How it works...
Let's import the packages:
In [1]: import numpy as np import matplotlib.pyplot as plt import skimage import skimage.filter as skif import skimage.data as skid %matplotlib inline
We create a function that displays a grayscale image:
In [2]: def show(img): plt.imshow(img, cmap=plt.cm.gray) plt.axis('off') plt.show()
Now, we load the Lena image (bundled in scikit-image). We select a single RGB component to get a grayscale image:
In [3]: img = skimage.img_as_float(skid.lena())[...,0] In [4]: show(img)
Let's apply a blurring Gaussian filter to the image:
In [5]: show(skif.gaussian_filter(img, 5.))
We now apply a Sobel filter that enhances the edges in the image:
In [6]: sobimg = skif.sobel(img) show(sobimg)
We can threshold the filtered image to get a sketch effect. We obtain...