opencv学习(二十四)之腐蚀与膨胀

本文介绍了OpenCV中的形态学操作——腐蚀和膨胀,它们用于消除噪声、分割图像元素等。腐蚀是提取内核下最小值,膨胀则是提取最大值。OpenCV的dilate和erode函数分别用于实现膨胀和腐蚀,支持自定义内核形状和大小,以及迭代次数。文章通过示例和数学表达式详细解释了这两个操作的工作原理。
摘要由CSDN通过智能技术生成

腐蚀和膨胀是对二维图片的进行操作的形态学运算,简单来讲形态学操作就是基于形状的一系列图像处理操作,通过将结构元素作用于输入图像来产生输出图像。腐蚀(Erosion)和膨胀(Dilation)是最基本的形态学操作,他们运用广泛主要有:
. 消除噪声
. 分割(ioslate)独立的图像元素以及连接(join)相邻的元素
. 寻找图像中的明显的极大值区域或极小值区域
. 求出图像的梯度
给出图片如下:
这里写图片描述
图片背景为白色,字母为黑色。下面将根据此图形对膨胀腐蚀的原理进行说明。
1.膨胀
膨胀(dilate)就是求局部最大值的操作,从数学的角度来讲膨胀或者腐蚀就是将一幅二维图像或图像的一部分(称之为A)与一个模板也就是核(称为B)进行卷集运算的过程。
核可以是任何形状和大小,与之前介绍的模板一样,核有一个可定义的锚点。
. 膨胀操作是将图像A与任意形状的内核B(通常为正方形或者圆形)进行卷集
. 内核B中可定义的锚点通称定义为内核中心点
. 进行膨胀操作时,将内核B在图像A上进行滑动操作,将内核B覆盖的区域的最大像素值提取并提到内核B锚点位置的像素。
. 上述操作将会导致图像中的亮区开始扩展,因为白色的像素值要远远大于黑色的像素值。经膨胀运算后其图形如下
这里写图片描述
对于膨胀运算其数学表达式如下:

这里写图片描述

opencv提供了dilate函数来实现膨胀操作,其原型如下

C++: void dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )

参数解释如下:
. InputArray src: 输入图像,可以是Mat类型,对于图像通道数量没有要求,但是图像深度应为CV_8U、CV_16U、CV_16s、CV_32F或CV_64F其中之一。
. OutputArray dst: 输出图像,与原图像有相同的尺寸和类型。
. InpurArray kernel: 用于膨胀操作的kernel,当参数=Mat()即NULL时,kernel是一个锚点位于中心的3x3模板。可以通过getStructuringElement函数来制定kernel的形状和尺寸,其函数原型如下:

Mat cv::getStructuringElement   (   int     shape,
        Size    ksize,
        Point   anchor = Point(-1,-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值