• 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()
    

    实验结果

  • 相关阅读:
    jquery使用技巧
    依赖倒置原则
    java程序设计单一原则
    java中的 break continue return作用详解
    织梦标签问题集锦--持续补充
    织梦文章列表过长自动省略号隐藏
    织梦网站地图如何修改生成路径?
    织梦发布的文章如何批量替换文章"来源"和"作者"?
    织梦仿站列表页pagelist分页显示竖排,如何修改成横排?
    织梦仿站自定义表单如何在后台显示时间?
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12655416.html
Copyright © 2020-2023  润新知