![1619d751e8765b6fa278f5028df6dece.png](https://i-blog.csdnimg.cn/blog_migrate/a1974f3e52860aac6c3f2771f53375ab.jpeg)
作者: 泛音/Fain
网站: https://fainke.com
微信公众号: 深度学习视觉
腐蚀和膨胀是对像素值大的部分而言的,即高亮白部分而不是黑色部分;以下图片前景物体为高亮像素,背景为低亮像素。
膨胀(dilated)是图像中的高亮部分进行膨胀,领域扩张,效果图拥有比原图更大的高亮区域;操作的时候表现为相邻区域用极大值代替,高亮区域增加。
腐蚀(eroded)是图像中的高亮部分被腐蚀掉,领域缩减,效果图拥有比原图更小的高亮区域;操作的时候表现为相邻区域用极小值代替,高亮区域减少。
开运算
先腐蚀再膨胀
① 开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。
② 开运算是一个基于几何运算的滤波器。
③ 结构元素大小的不同将导致滤波效果的不同。
④ 不同的结构元素的选择导致了不同的分割,即提取出不同的特征。
开运算的效果图如下图所示:清除噪点,把一些太小的物体过滤。
![d0a211c2b300d145e5d619d2cf76c67f.png](https://i-blog.csdnimg.cn/blog_migrate/51364a517f24ab119e2d751f36e523b5.jpeg)
闭运算
先膨胀再腐蚀
① 闭运算能够填平前景物体内的小裂缝,而总的位置和形状不变。
② 闭运算是通过填充图像的凹角来滤波图像的。
③ 结构元素大小的不同将导致滤波效果的不同。
④ 不同结构元素的选择导致了不同的分割。
闭运算的效果图如下图所示:融合细微连接的图块,如果图像中存在断连物体,可以用此方法修复连接。
![eb89b176dbdb855a2086f7ea009f4b29.png](https://i-blog.csdnimg.cn/blog_migrate/203e254002514706711da59fbe3176c6.jpeg)
Python Code
import cv2
# 读取图片
img = cv2.imread('./image.png',0)
# 定义核结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
# 腐蚀图像
eroded = cv2.erode(img,kernel)
# 显示腐蚀后的图像
cv2.imshow("Eroded Image",eroded)
#膨胀图像
dilated = cv2.dilate(img,kernel)
#显示膨胀后的图像
cv2.imshow("Dilated Image",dilated);
# 开运算
opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
# 显示开运算后的图像
cv2.imshow("Open", opened)
#闭运算
closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
#显示闭运算后的图像
cv2.imshow("Close",closed);
后记:
删除图像中小物体的Python API
skimage.morphology.remove_small_objects(ar, min_size=64, connectivity=1, in_place=False)
# ar: 待操作的bool型数组。
# min_size: 最小连通区域尺寸,小于该尺寸的都将被删除。默认为64.
# connectivity: 邻接模式,1表示4邻接(up,down,left,right),2表示8邻接(up_left,up_right,down_left,down_right)
# in_place: bool型值,如果为True,表示直接在输入图像中删除小块区域,否则进行复制后再删除。默认为False.
更多内容:https://fainke.com
参考链接
https://blog.csdn.net/hanshanbuleng/article/details/80657148