边缘检测(http://en.wikipedia.org/wiki/Edge_detection)是另一项流行的图像处理技术。scikit-image实现了一个Canny滤波器。该滤波器基于高斯分布的标准差,可以直接用来做边缘检测。除了二维数组中的图像数据,该滤波器还接受下列参数:
- 高斯分布的标准差
- 下边界阈值
- 上边界阈值
具体步骤
我们使用的图像和上一攻略相同,代码实现也基本相同。你只需要特别注意调用Canny滤波器函数的那一行代码。
from sklearn.datasets import load_sample_images
from matplotlib.pyplot import imshow, show, axis
import numpy
import skimage.filter
dataset = load_sample_images()
img = dataset.images[0]
edges = skimage.filter.canny(img[..., 0], 2, 0.3, 0.2)
axis('off')
imshow(edges)
show()
上述代码生成了一幅由原始图像中的边缘构成的图像,具体如下图所示。