形态学开操作算子_Opencv图像处理示例 - 形态学处理

c616b1fcea19b1a4f188d727f8ecb9e6.png

一、形态学运算基本原理

常用的形态学处理包括:腐蚀、膨胀、开运算、闭运算、顶帽运算、底帽运算。

腐蚀:类似于中值平滑操作,它是取每一个位置邻域内值的最小值作为该位置的输出灰度值。不同的是,这里的邻域不再单纯是矩形结构的,可以是椭圆形结构、可以是十字交叉形结构。(可以减小亮度高的区域的面积)

膨胀:类似于中值平滑操作,它是取每一个位置邻域内值的最大值作为该位置的输出灰度值,同样,邻域的形状由结构元决定。既然取邻域内的最大值,那么输出图像的总体亮度的平均值比起原图会有所上升,而图像中较亮物体的尺寸会变大;相反,较暗物体的尺寸会减小,甚至会消失。(可以增大亮度高的区域的面积)

开运算:先腐蚀,再膨胀。可以消除暗背景下的较亮区域。

闭运算:先膨胀,再腐蚀。可以删除亮度较高背景下的较暗区域。

顶帽变换:图像减去开运算的结果。主要作用:校正不均匀光照。

底帽变换:图像减去闭运算的结果。

形态学梯度:膨胀的结果减去腐蚀的结果。

e88bfa409664cd795b94177cc5a39c43.png
Lenna

二、实现代码及展示

import cv2
import numpy as np

pic = './Lenna.jpg'

src = cv2.imread(pic, cv2.IMREAD_UNCHANGED) # 图像的二值化 ,这里没有做阈值处理
kernel = np.ones((5, 5), np.uint8) # 设置卷积核5*5

erosion = cv2.erode(src, kernel) # 图像的腐蚀,默认迭代次数
dst = cv2.dilate(erosion, kernel) # 图像的膨胀

cv2.imshow('origin', src) # 二值化图像展示
cv2.imshow('after erosion', erosion) # 腐蚀后展示
cv2.imshow('after dilate', dst) # 膨胀后展示
cv2.imwrite("erosion.jpg",erosion) # 保存图像
cv2.waitKey(0)

eecef62876414ad161c7f1ef06aa3cd5.png
原图与经过腐蚀后图像

4c663263f6d9298f5b2c2991a8fe9036.png
原图与经过膨胀后图像

扩展参考学习:

图像腐蚀与图像膨胀(18) - 柳帅 - 博客园​www.cnblogs.com
3f8af1390d5c09c5e3577ee8558db0d5.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值