mirror of
https://github.com/wassname/scikit-image.git
synced 2026-06-29 12:58:49 +08:00
55f5103dd8
Modified travis_script.sh to account for the new structure of the gallery Added README.txt files in directories of gallery examples Fixed references to gallery images in user guide pages Fixed broken links
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""
|
|
===================
|
|
Canny edge detector
|
|
===================
|
|
|
|
The Canny filter is a multi-stage edge detector. It uses a filter based on the
|
|
derivative of a Gaussian in order to compute the intensity of the gradients.The
|
|
Gaussian reduces the effect of noise present in the image. Then, potential
|
|
edges are thinned down to 1-pixel curves by removing non-maximum pixels of the
|
|
gradient magnitude. Finally, edge pixels are kept or removed using hysteresis
|
|
thresholding on the gradient magnitude.
|
|
|
|
The Canny has three adjustable parameters: the width of the Gaussian (the
|
|
noisier the image, the greater the width), and the low and high threshold for
|
|
the hysteresis thresholding.
|
|
|
|
"""
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from scipy import ndimage as ndi
|
|
|
|
from skimage import feature
|
|
|
|
|
|
# Generate noisy image of a square
|
|
im = np.zeros((128, 128))
|
|
im[32:-32, 32:-32] = 1
|
|
|
|
im = ndi.rotate(im, 15, mode='constant')
|
|
im = ndi.gaussian_filter(im, 4)
|
|
im += 0.2 * np.random.random(im.shape)
|
|
|
|
# Compute the Canny filter for two values of sigma
|
|
edges1 = feature.canny(im)
|
|
edges2 = feature.canny(im, sigma=3)
|
|
|
|
# display results
|
|
fig, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(8, 3), sharex=True, sharey=True)
|
|
|
|
ax1.imshow(im, cmap=plt.cm.jet)
|
|
ax1.axis('off')
|
|
ax1.set_title('noisy image', fontsize=20)
|
|
|
|
ax2.imshow(edges1, cmap=plt.cm.gray)
|
|
ax2.axis('off')
|
|
ax2.set_title('Canny filter, $\sigma=1$', fontsize=20)
|
|
|
|
ax3.imshow(edges2, cmap=plt.cm.gray)
|
|
ax3.axis('off')
|
|
ax3.set_title('Canny filter, $\sigma=3$', fontsize=20)
|
|
|
|
fig.subplots_adjust(wspace=0.02, hspace=0.02, top=0.9,
|
|
bottom=0.02, left=0.02, right=0.98)
|
|
|
|
plt.show()
|