ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-26 21:03:38  阅读:129  来源: 互联网

标签:11 kernel img MORPH -- cv2 黑帽 卷积 腐蚀


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)

标签:11,kernel,img,MORPH,--,cv2,黑帽,卷积,腐蚀
来源: https://www.cnblogs.com/TheoryDance/p/16414327.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有