常见的7种形态学转换(腐蚀、膨胀、开运算、闭运算、形态学梯度、礼帽、黑帽)的定义是什么呢?公式是什么呢?应用场合是什么呢?

问题描述:

常见的7种形态学转换(腐蚀、膨胀、开运算、闭运算、形态学梯度、礼帽、黑帽)的定义是什么呢?公式是什么呢?应用场合是什么呢?

问题解答:

以下是常见的七种形态学转换的定义、公式和应用场合:

  1. 腐蚀 (Erosion):

    • 定义: 通过用结构元素"覆盖"图像,将图像中小于结构元素的部分去除。
    • 公式: (A\ominus B)=\left \{ z|B_{z}\subseteq A \right \}
    • 应用: 去除小噪声、分离连通区域。
  2. 膨胀 (Dilation):

    • 定义: 通过用结构元素"覆盖"图像,增加图像中像素的区域。
    • 公式:(A\oplus B)=\left \{ z|(B_{z})\cap A\neq 0 \right \}
    • 应用: 填充小孔、连接邻近区域。
  3. 开运算 (Opening):

    • 定义: 先腐蚀后膨胀,去除小物体而保持大物体的形状。
    • 公式(A\circ B)=(A\ominus B)\oplus B
    • 应用: 去除小噪声、分离重叠物体。
  4. 闭运算 (Closing):

    • 定义: 先膨胀后腐蚀,填充小孔并连接邻近区域。
    • 公式(A\bullet B)=(A\oplus B)\circleddash B
    • 应用: 填充小孔、连接物体。
  5. 形态学梯度 (Morphological Gradient):

    • 定义: 膨胀和腐蚀的差,突出图像的边缘。
    • 公式Gradient(A)=(A\oplus B)-(A\ominus B)
    • 应用: 边缘检测、形状提取。
  6. 礼帽 (Top Hat):

    • 定义: 原图像与开运算结果的差,提取亮区域。
    • 公式TopHat(A)=A-(A\circ B)
    • 应用: 提取小的亮区域、背景均匀图像下的特征。
  7. 黑帽 (Black Hat):

    • 定义: 闭运算结果与原图像的差,提取暗区域。
    • 公式Black Hat(A)=(A\bullet B)-A
    • 应用: 提取小的暗区域、分析图像的细节。

这些操作在图像处理、计算机视觉和图像分析中有广泛应用,尤其是在去噪声、形状分析和特征提取等方面。

腐蚀

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('logo7.jpg', 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)
# 腐蚀操作
erosion = cv2.erode(img, kernel, iterations=1)

# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(erosion, 'gray'), plt.title('Erosion')
plt.xticks([]), plt.yticks([])

plt.show()

 

膨胀

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('logo7.jpg', 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)
# 膨胀操作
dilation = cv2.dilate(img,kernel,iterations = 1)

# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(dilation , 'gray'), plt.title('dilation')
plt.xticks([]), plt.yticks([])

plt.show()

 

开运算

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('logo8.png', 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)
# 开运算操作
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(opening , 'gray'), plt.title('opening ')
plt.xticks([]), plt.yticks([])

plt.show()

闭运算

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('logo9.png', 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)
# 闭运算操作
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(closing , 'gray'), plt.title('closing')
plt.xticks([]), plt.yticks([])

plt.show()

 

形态学梯度

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('logo7.jpg', 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)
# 形态学梯度操作
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(gradient , 'gray'), plt.title('gradient')
plt.xticks([]), plt.yticks([])

plt.show()

 

礼帽

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('logo8.png', 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)
# 礼帽操作
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(tophat , 'gray'), plt.title('tophat ')
plt.xticks([]), plt.yticks([])

plt.show()

黑帽

import cv2
import numpy as np
from matplotlib import pyplot as plt

# 读取图像
img = cv2.imread('logo9.png', 0)
# 定义卷积核
kernel = np.ones((5, 5), np.uint8)
# 黑帽操作
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(blackhat , 'gray'), plt.title('blackhat')
plt.xticks([]), plt.yticks([])

plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神笔馬良

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

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

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

打赏作者

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

抵扣说明:

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

余额充值