欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

OpenCV 图像的形态学操作----膨胀腐蚀

程序员文章站 2022-07-14 11:54:11
...

膨胀腐蚀概述
膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作
膨胀腐蚀是基于高亮部分操作的, 膨胀是对高亮部分进行膨胀, 类似**“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域蚕食”**

膨胀腐蚀的应用和功能:

  • 消除噪声
  • 分割独立元素或连接相邻元素
  • 寻找图像中的明显极大值、极小值区域
  • 求图像的梯度

其他相关:

  • 开运算、闭运算
  • 顶帽、黒帽
  • 形态学梯度

膨胀—cv2.dilate()
膨胀就是求局部最大值的操作, 从数学角度上来讲, 膨胀或腐蚀就是将图像(或区域)A与核B进行卷积。
OpenCV 图像的形态学操作----膨胀腐蚀
可以是任意大小和形状, 它有一个独立定义的参考点(锚点), 多数情况下, 核是一个小的中间带参考点和实心正方形或者圆盘, 可以看做是一个模板或掩码。

膨胀是求局部最大值的操做, 核B与图形卷积, 即核B覆盖的区域的像素点的最大值, 并把这个最大值复制给参考点指定的像素, 这样就会使图像中的高亮区域逐渐增长。


import cv2
import numpy as np

img = cv2.imread('j.png', 0)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))  # 定义矩形核
dilation = cv2.dilate(img, kernel, iterations=1)  # 膨胀操作
cv2.imshow("img",img)
cv2.imshow("dilation",dilation)
cv2.waitKey(0)

OpenCV 图像的形态学操作----膨胀腐蚀


腐蚀—cv2.erode()
腐蚀和膨胀相反, 是取局部最小值, 高亮区域逐渐减小, 如下图所示:
OpenCV 图像的形态学操作----膨胀腐蚀

import cv2
import numpy as np

img = cv2.imread('j.png', 0)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
erosion = cv2.erode(img, kernel)
cv2.imshow("img",img)
cv2.imshow("erosion",erosion)
cv2.waitKey(0)

OpenCV 图像的形态学操作----膨胀腐蚀

相关标签: OpenCV