Opencv 形态学操作

  • 形态学操作:使图像的形态发生改变的操作
  • 目的:用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的
  • 常用操作:膨胀、腐蚀、开操作、闭操作,梯度计算,顶帽变换,黑帽变换等
  • 应用场景:消除噪声、边界提取、区域填充、连通分量提取、凸壳、细化、粗化等;分割出独立的图像元素,或者图像中相邻的元素;求取图像中明显的极大值区域和极小值区域;求取图像梯度
  • kernel:每次操作的范围,有三种不同的形状:MORPH_RECT(矩形),MORPH_ELLIPSE(椭圆形), MORPH_CROSS(交叉形)
# ksize 默认为3, anchor默认为-1,即中间元素
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,ksize=(11,11), anchor=(5, 5))

MORPH_RECT:
[[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1]]
MORPH_ELLIPSE:
[[0,0,1,0,0],
[1,1,1,1,1],
[1,1,1,1,1],
[1,1,1,1,1],
[0,0,1,0,0]],
MORPH_CROSS:
[[0,0,1,0,0],
[0,0,1,0,0],
[1,1,1,1,1],
[0,0,1,0,0],
[0,0,1,0,0]

以下图为例:(示例参考:OpenCV-Python教程:14.形态变换
在这里插入图片描述

腐蚀

原图中的高亮区域(白色)被蚕食,效果图拥有比原图更小的高亮区域。具体操作是选择kernel范围内打最小值赋给anchor中的元素,即最小值滤波。

# 可以执行多次,也可以自定义kernel:
kernel = np.ones((5,5), np.uint8)
erosion = cv2.erode(img,kernel,iterations=1) 

在这里插入图片描述

膨胀

原理与腐蚀类似,不过是高亮区域被扩增,即最大值滤波。

dilation = cv2.dilate(img,kernel,iterations=1)

在这里插入图片描述

开操作

先腐蚀后膨胀,用来消除小白点,平滑较大物体的边界

opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)

在这里插入图片描述

闭操作

先膨胀后腐蚀,用来消除白色前景中打小黑点

closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)

在这里插入图片描述

形态梯度

可以突出团块(blob)的边缘,保留物体的边缘轮廓。实际操作是膨胀后的图像减去腐蚀后的图像

# 下面的decrease 和 gradient结果是一样的
kernel = np.ones((3, 3), np.uint8)
erosion = cv2.erode(img, kernel, iterations=2)
dilate = cv2.dilate(img, kernel, iterations=2)
decrease = dilate - erosion 
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel, iterations=2)

在这里插入图片描述

顶帽

原始图像-开运算(先腐蚀再膨胀)以后的图像,突出明亮区域。可以用来提取一些小毛刺之类的图像。

kernel = np.ones((3, 3), np.uint8)
tophat=cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)

在这里插入图片描述

黑帽

闭运算(先膨胀再腐蚀)后的图像 - 原始图像,突出较暗区域

kernel = np.ones((3, 3), np.uint8)
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值