CV11 形态学转换(侵蚀、扩张、开运算/顶帽、闭运算/黑帽和形态学梯度)

知识体系

未命名-6

侵蚀

侵蚀的思想就像土壤侵蚀一样,它侵蚀前景物体的边界(尽量使前景保持白色)

原理:卷积核通过在图像中不断滑动,原始图像中的一个像素(无论是1还是0),只有当内核下所有的像素都是1时才被认为是1,否则它就会被侵蚀。

效果:根据内核的大小,边界上的像素都会被丢弃,边界会不断被腐蚀

import cv2
import numpy as np

img = cv2.imread("8.png")
kernel = np.ones((5,5),np.uint8)

#侵蚀函数
erosion = cv2.erode(img,kernel,iterations=3)

cv2.imshow("img",erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

扩张

它与侵蚀正好相反。如果内核下的至少一个像素为“ 1”,则像素元素为“ 1”。因此,它会增加图像中的白色区域或增加前景对象的大小。通常,在消除噪音的情况下,腐蚀后会膨胀。因为腐蚀会消除白噪声,但也会缩小物体。因此,我们对其进行了扩展。由于噪音消失了,它们不会回来,但是我们的目标区域增加了。在连接对象的损坏部分时也很有用。

替换erosion = cv2.erode(img,kernel,iterations=3)函数即可

# 扩张函数
dilation = cv2.dilate(img,kernel,iterations=1)

cv2.erode()/cv2.dilate()函数

功能:侵蚀/扩张

输入参数

  1. 图像名img
  2. 卷积核
  3. 腐蚀或扩张程度

修改卷积核大小和改变侵蚀/扩张程度效果相似,不过iterations的效果更优越

侵蚀核扩张的效果对比

M1

形态学梯度

突出轮廓

gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

效果如下:

dfwef

开运算

开运算,即先侵蚀,再扩张,有利于消除外部噪点

# 开运算
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

morphologyEx()函数

功能:开运算/顶帽、闭运算/黑帽

输入参数

  1. 图像名img
  2. 开运算(cv2.MORPH_OPEN)/顶帽(cv2.MORPH_TOPHAT)、闭运算(cv2.MORPH_CLOSE)/黑帽(cv2.MORPH_BLACKHAT)
  3. 卷积核
顶帽

顶帽,即输入图像-开运算

# 顶帽
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)

闭运算

闭运算,即先扩张,再侵蚀,有利于消除内部噪点

# 闭运算
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
黑帽

黑帽,即输入图像-闭运算

# 黑帽
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
运算效果

M2

效果相当明显了

代码程序

import cv2
import numpy as np

img = cv2.imread("8.png")
kernel = np.ones((5,5),np.uint8)

#侵蚀函数
erosion = cv2.erode(img,kernel,iterations=3)

# 扩张函数
# dilation = cv2.dilate(img,kernel,iterations=1)

# 开运算
# opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

# 闭运算
# closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

# 形态学梯度
# gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

# 顶帽
# tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)

# 黑帽
# blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

cv2.imshow("img",erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
OpenCV是一个开源计算机视觉库,可以进行图像处理、图像分析和机器视觉等方面的开发。其中,图像形态学处理是OpenCV中的一种基本图像处理技术,主要用于图像的形态学分析和形态学变换。 图像形态学处理主要包括以下几个基本操作: 1. 腐蚀(Erosion):将图像中的物体边界向内侵蚀,可以去除细小的噪点和连接物体之间的小桥梁。 2. 膨胀(Dilation):将图像中的物体边界向外膨胀,可以填充物体内的空洞和连接相邻物体。 3. 开运算(Opening):先对图像进行腐蚀操作,再对腐蚀后的图像进行膨胀操作,可以去除细小的物体和连接物体之间的小桥梁。 4. 运算(Closing):先对图像进行膨胀操作,再对膨胀后的图像进行腐蚀操作,可以填充物体内的空洞和连接相邻物体。 5. 梯度(Gradient):通过对图像进行膨胀和腐蚀操作,可以得到物体的边缘信息。 6. 礼帽(Top Hat):通过对原图像和开运算后的图像进行相减操作,可以得到原图像中小物体和较暗的区域信息。 7. 黑帽(Black Hat):通过对原图像和运算后的图像进行相减操作,可以得到原图像中小物体和较亮的区域信息。 这些操作可以通过OpenCV中的函数进行实现,例如: cv2.erode():进行腐蚀操作 cv2.dilate():进行膨胀操作 cv2.morphologyEx():进行开运算梯度、礼帽和黑帽操作 在实际应用中,图像形态学处理常用于图像分割、形状分析、边缘检测、物体识别等方面。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落叶随峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值