python库skimage 应用canny边缘探测算法
Posted 我坚信阳光灿烂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python库skimage 应用canny边缘探测算法相关的知识,希望对你有一定的参考价值。
Canny算法
请参考:Canny算法python手动实现
请参考:Canny边缘检测算法原理及opencv实现
skimage库中函数
skimage.feature.canny(image, sigma=1.0, low_threshold=None, high_threshold=None, mask=None, use_quantiles=False)
sigma:高斯滤波器的标准差
low_threshold:Canny算法最后一步中,小于该阈值的像素直接置为0
high_threshold:Canny算法最后一步中,大于该阈值的像素直接置为255
实验:Canny算法作用于图像
"""
===================
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.gray)
ax1.axis(‘off‘)
ax1.set_title(‘noisy image‘, fontsize=20)
ax2.imshow(edges1, cmap=plt.cm.gray)
ax2.axis(‘off‘)
ax2.set_title(r‘Canny filter, $sigma=1$‘, fontsize=20)
ax3.imshow(edges2, cmap=plt.cm.gray)
ax3.axis(‘off‘)
ax3.set_title(r‘Canny filter, $sigma=3$‘, fontsize=20)
fig.tight_layout()
plt.show()
以上是关于python库skimage 应用canny边缘探测算法的主要内容,如果未能解决你的问题,请参考以下文章
Python 图像边缘检测 | 利用 opencv 和 skimage 的 Canny 算法
Python 图像边缘检测 | 利用 opencv 和 skimage 的 Canny 算法