数字图像处理_07.1_(形态学处理,腐蚀,膨胀)

本章学习图像处理中的形态学处理,膨胀,腐蚀。

腐蚀(erode)、膨胀(dilate)

1)结构元(StructingElement)在形态学处理中经常用到,和前几章所学的卷积核、算子意思类似,都是用于对图片处理的小矩阵。腐蚀和膨胀均用到了结构元。
cv中提供了很多结构元的类型:十字型:cv.MORPH_CROSS,矩形:cv.MORPH_RECT,椭圆形:cv.MORPH_ELLIPSE

结构元是二维矩阵,内部元素去整数0或者1。
对二值图,元素取0或255,对应黑与白。
对灰度图,取0-255
对于彩色图,每个通道取0-255

可以自定义结构元也可以直接使用cv中cv.getStructuringElement()的方法

K1 = np.ones((3,3),dtype=np.uint8)
K2 = cv.getStructuringElement(cv.MORPH_ELLIPSE,(7,7))#结构元

2)腐蚀
用于消除毛刺和小区域,可能会使得图像变暗。
在二值图中:
腐蚀:结构元为1出图像均为255,则整个结构元中心区域变为255,否则变为0
在灰度图中:
腐蚀:取结构元中的最小值作为新图像这个结构元区域的值。

img_erode= cv.erode(img,K1)
img_erode2 = cv.morphologyEx(img,cv.MORPH_ERODE,K1)

cv.erode(原图像,结构元)
cv.morphologyEx(原图像,cv.MORPH_ERODE,结构元)

在这里插入图片描述
3)膨胀
膨胀可以连接边缘,但是可以能会放大噪声
在二值图中:
腐蚀:结构元为1处图像均为0,则整个结构元中心区域变为0,否则变为255
在灰度图中:
腐蚀:取结构元中的最大值作为新图像这个结构元区域的值。

  • 可以用直接用cv.dilate(img,K1)
img_dilate = cv.dilate(img,K1)
show(img_dilate)
  • 也可以用通用的cv.morphologyEx(原图像,cv.MORPH_DILATE,结构元)
Kernel1 = cv.getStructuringElement(cv.MORPH_RECT,(1,3))
img_dilate1 = cv.morphologyEx(img,cv.MORPH_DILATE,Kernel1)

Kernel2 = cv.getStructuringElement(cv.MORPH_RECT,(3,1))
img_dilate2 = cv.morphologyEx(img,cv.MORPH_DILATE,Kernel2)
show(np.hstack([img,img_dilate1,img_dilate2]))

输出结果:
在这里插入图片描述
对于灰度图:

img_bird = cv.imread('pic/bird1000x800.jpg',0)

Kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE,(21,21))#结构元

img_erode = cv.morphologyEx(img_bird,cv.MORPH_ERODE,Kernel)
img_dilate = cv.morphologyEx(img_bird,cv.MORPH_DILATE,Kernel)

show(np.hstack([img_bird,img_erode,img_dilate]))

输出图像(原图像,腐蚀图像,膨胀图像)
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值