图像形态学(腐蚀、膨胀、开运算、闭运算、梯度、顶帽、黑帽)

一、腐蚀:

消除图像中不重要的边缘信息。

二、膨胀:

可以看作为腐蚀的逆过程。

三、开运算:

开运算(open) ,先腐蚀后膨胀的过程。开运算可以用来消除小黑点,在纤细点处分离物体、平滑较大物体的边界的 同时并不明显改变其面积。

四、闭运算:

闭运算(close),先膨胀后腐蚀的过程。闭运算可以用来排除小黑洞。

五、梯度:

形态学梯度(morph-grad),可以突出团块(blob)的边缘,保留物体的边缘轮廓。

六、顶帽:

顶帽(top-hat),将突出比原轮廓亮的部分。

七、黑帽:

黑帽(black-hat),将突出比原轮廓暗的部分。

参考代码如下:

import cv2 as cv
import numpy as np  
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  
plt.rcParams['axes.unicode_minus'] = False  
img = cv.imread("./imgs/yh.png")
gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
#二值化图像
ret, binary = cv.threshold(gray_img, 52, 255, cv.THRESH_BINARY)
kernel = np.ones((3,3), np.uint8)
#1.腐蚀
img1 = cv.erode(binary, kernel)
#2.膨胀
img2 = cv.dilate(binary, kernel)
#3.开运算:先腐蚀,后膨胀
opening = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)
#4.闭运算:先膨胀,后腐蚀
closeing = cv.morphologyEx(binary, cv.MORPH_CLOSE, kernel)
#5.梯度 = 膨胀-腐蚀
gradient = cv.morphologyEx(binary, cv.MORPH_GRADIENT, kernel)
#6.顶帽 = 原图-开运算结果
tophat = cv.morphologyEx(binary, cv.MORPH_TOPHAT, kernel)
#7.黑帽 = 闭运算-原图
blackhat = cv.morphologyEx(binary, cv.MORPH_BLACKHAT, kernel)
#可视化展示
til=['二值化图像','图像腐蚀','图像膨胀','开运算','闭运算','梯度','顶帽','黑帽']
lis=[binary,img1,img2,opening,closeing,gradient,tophat,blackhat]
plt.figure(figsize=(10,4))
for i in range(8):
    plt.subplot(2,4,i+1)
    plt.imshow(lis[i],cmap='gray')
    plt.title(til[i])
    plt.axis('off')
plt.show()

结果如下所示:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值