• 11. 形态学膨胀、腐蚀、开闭运算、梯度、顶帽、黑帽


    1. 形态学-腐蚀

    腐蚀是元素全为1的卷积核
    方法:
    erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

    • iterations是腐蚀操作的迭代次数,次数越多,腐蚀操作执行的次数越多,腐蚀效果越明显
    import cv2
    import numpy as np
    
    img = cv2.imread('./msb.png')
    kernel = np.ones((3, 3), np.uint8)
    dst = cv2.erode(img, kernel, iterations=2)
    cv2.imshow('img', np.hstack(img, dst))
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    2. 形态学-膨胀

    dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])

    # 使用cv2提供的函数获取形态学卷积核:MORPH_RECT,CROSS,ELLIPSE等
    kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))  # 膨胀卷积核选择类型
    # 膨胀操作
    dst = cv2.dilate(img, kernel)
    cv2.imshow('img', np.hstack(img, dst))
    

    3. 获取形态学卷积核

    cv提供了获取卷积核的API,不需要我们手动创建卷积核
    getStructuringElement(shape, ksize[, anchor])

    • shape是指卷积核的形状,注意不是指长宽,是指卷积核中1形成的形状
      (1) MORPH_RECT 卷积核中的1是矩形,常用;
      (2) MORPH_MORPH_ELLIPSE 椭圆
      (3) MORPH_CROSS 十字
    kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (5, 5))
    # 在使用腐蚀或膨胀的时候,作为卷积核使用
    cv2.erode(img, kernel, iterations=2)
    

    4. 开运算

    • 开运算和闭运算都是腐蚀和膨胀的基本应用
    • 开运算 = 腐蚀 + 膨胀
    • morphologyEx(img, cv2.MORPH_OPEN, kernel)
      cv2.MORPH_OPEN 表示形态学的开运算
      kernel 如果噪声点比较多,会选择大一点的kernel,如果噪声点比较小,可以选择小一点的kernel

    5. 闭运算

    • morphologyEx(img, cv2.MORPH_CLOSE, kernel)

    6. 形态学-梯度

    • 梯度 = 原图 - 腐蚀
    • 腐蚀之后原图边缘变小了,原图 - 腐蚀 就可以得到腐蚀掉的部分,即边缘
    • morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
    # 注意调节kernel大小以获得更清晰的边缘
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
    dst = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel, iterations=1)
    

    7. 顶帽操作

    • 顶帽 = 原图 - 开运算
    • 开运算的效果是去除图像外的噪点,原图 - 开运算就得到了去掉的噪点
    • morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

    8. 黑帽操作

    • 顶帽 = 原图 - 闭运算
    • 闭运算的效果是去除图像内的噪点,原图 - 开运算就是图形内部的噪点
    • morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
  • 相关阅读:
    vim配置
    git rebase
    mongodb的docker-compose.yml
    Nginx配置BrowserRouter跟随react-router
    Flux Architecture & Redux Data Flow & redux & react-redux PPT
    from acwing 从算法数量推算算法复杂度
    evalRPN 逆波兰算术
    二分区间
    Flex布局
    Treap 模板
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/16414327.html
Copyright © 2020-2023  润新知