OpenCV机器视觉-形态学变换

形态学变换


膨胀与腐蚀


形态学变化是基于图像形状的一些简单操作。操作对象一般是二值图像,需要两个输入,一个是我们的原图,另一个是3x3的结构元素(内核),决定了膨胀操作的本质。常见的操作是图像的膨胀和腐蚀。以及他们的进阶操作注入Opening、Closing、Gradient等等。

结构元素的形状

MORPH_RECT矩形
MORPH_ELLIPSE椭圆形
MORPH_CROSS十字型

膨胀Dilation


跟卷积操作非常类似.有图像A和3x3的结构元素,结构元素在A上进行滑动.计算结构元素在A上覆盖的最大像素值来替换当前结构元素对应的正中间的元素

膨胀的作用:

  1. 对象边缘增加一个像素
  2. 使对象边缘平滑
  3. 减少了对象与对象之间的距离

示例代码

import cv2 as cv

src = cv.imread("./img/morph-closing.jpg", cv.IMREAD_GRAYSCALE)
cv.imshow("src", src)

kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))

dst = cv.dilate(src, kernel)
cv.imshow("dst", dst)
cv.waitKey()

腐蚀Erosion


腐蚀和膨胀过程类似,唯一不同的是以覆盖的最小值替换当前的像素值

侵蚀的作用:

  1. 对象边缘减少一个像素
  2. 对象边缘平滑
  3. 弱化了对象与对象之间连接

示例代码

import cv2 as cv

src = cv.imread("../img/morph-j.jpg",cv.IMREAD_GRAYSCALE)
cv.imshow("src",src)

kernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5))

dst = cv.erode(src,kernel)
cv.imshow("dst",dst)
cv.waitKey()

开操作Opening


先腐蚀,后膨胀,主要应用在二值图像或灰度图像

先腐蚀: 让当前窗口中最小的颜色值替换当前颜色值

后膨胀: 让当前窗口中最大的颜色值替换当前颜色值

作用:

  1. 一般用于消除小的干扰或噪点(验证码图的干扰线)
  2. 可以通过此操作配合结构元素,提取图像的横线和竖线

示例代码

import cv2 as cv

src = cv.imread("../img/morph-opening.jpg",cv.IMREAD_GRAYSCALE)
cv.imshow("src",src)

kernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5))

dst = cv.morphologyEx(src,cv.MORPH_OPEN,kernel)
cv.imshow("dst",dst)
cv.waitKey()

闭操作


先膨胀,后侵蚀

一般用于填充内部缝隙

示例代码

import cv2 as cv

src = cv.imread("../img/morph-closing.jpg",cv.IMREAD_GRAYSCALE)
cv.imshow("src",src)

kernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5))

dst = cv.morphologyEx(src,cv.MORPH_CLOSE,kernel)
cv.imshow("dst",dst)
cv.waitKey()

总结


形态学变换中还有一些其它的变换,大家可以自行尝试查看执行效果

开运算
    先对图像腐蚀,再膨胀
    dst=open(src,element)=dilate(erode(src,element))

闭运算
    先膨胀再腐蚀
    dst=close(src,element)=erode(dilate(src,element))

形态梯度
    膨胀图和腐蚀图之差
    dst=morph_grad(src,element)=dilate(src,element)−erode(src,element)

顶冒
	原图和开运算图之差
	dst=tophat(src,element)=src−open(src,element)
    
黑冒
	闭运算结果和原图之差
	dst=blackhat(src,element)=close(src,element)−src
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值