腐蚀和膨胀

腐蚀

原理:

假设原图像中有一个前景物体,那么我们用一个结构元素去腐蚀原图的过程是这样的:

遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,

然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最小值,用这个最小值替换当前像素值

应用场景:

1、删除图像中的某些部分

膨胀

原理:

假设原图像中有一个前景物体,那么我们用一个结构元素去膨胀原图的过程是这样的:

遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,

然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最大值,用这个最大值替换当前像素值。

应用场景:

1、修复图像中断裂字符

腐蚀是一种搜索和细化运算,而膨胀会“增长”或“粗化”二值图像中的目标。

import cv2 as cv
import numpy as np

file_path = r""
src = cv.imread(filename=file_path)
cv.namedWindow('input', cv.WINDOW_AUTOSIZE)
cv.imshow('input', src)
h, w = src.shape[:2]

kernel = np.ones(shape=[3, 3])

erode_img = cv.erode(src, kernel=kernel)
cv.imshow('erode', erode_img)

dilate_img = cv.dilate(erode_img, kernel, iterations=1)
cv.imshow('dilate', dilate_img)

cv.waitKey(0)
cv.destroyAllWindows()

开运算和闭运算

开运算

首先对图像腐蚀,然后再对腐蚀后的图像进行膨胀操作。

应用场景:

平滑物体的轮廓,断开狭窄狭颈,消除细长的突出物;

总结:

1、开运算除去孤立的小点,毛刺和小桥,总的位置和形状不变。
2、开运算一个基于几何运算的滤波器;
3、结构元素大小的不同将导致滤波效果的不同;
4、不同的结构元素的选择导致了不同的分割,即提取出不同的特征。

闭运算

首先对图像膨胀,然后再对膨胀后的图像进行腐蚀操作。

应用场景:

平滑轮廓,弥合狭窄断裂和细长的沟壑,消除小孔,填补轮廓中的缝隙;

总结:
1、闭运算能够填平小孔,弥合小缝隙,而总的位置和形状不变;
2、闭运算通过填充图像的凹角来滤波图像;
3、结构元素大小不同将导致滤波效果不同;
4、不同结构元素选择导致了不同的分割。

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

img = cv2.imread(r"C:\\Users\\Curry\\Desktop\\cc.png")
# img = cv2.cvtColor(img, code=cv2.COLOR_BGR2RGB)
kernel = np.ones(shape=[10, 10], dtype=np.uint8)
img = 255-img  #黑变白,白变黑
# 开运算,先腐蚀,后膨胀
result_open = cv2.morphologyEx(img, op=cv2.MORPH_OPEN,
                          kernel=kernel, iterations=1)
# 闭运算.先膨胀,后腐蚀
result_close = cv2.morphologyEx(img, op=cv2.MORPH_CLOSE,
                          kernel=kernel, iterations=1)

plt.subplot(1,3,1)
plt.title('raw')
plt.imshow(img)
plt.subplot(1,3,2)
plt.title('monrph')
plt.imshow(result_open)
plt.subplot(1,3,3)
plt.title('monrph')
plt.imshow(result_close)
plt.show()

原文地址:http://www.cnblogs.com/01black-white/p/16791492.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性