OpenCV 形态学腐蚀

1、基本概念
腐蚀与膨胀是一对相反的操作,所以腐蚀就是求全局最小值的操作。
腐蚀(erode)是求局部最小值的操作。从数学角度讲,膨胀或腐蚀操作就是将图像(或图像的一部分区域,称之为A)与核(称之为B)进行卷积。核B与图形卷积,即计算核B覆盖的区域的像素点的最小值,并把这个最小值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐减小,如图所示,这就是膨胀操作的初衷。
核可以是任何形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点(anchorpoint)。多数情况下,核是一个小的,中间带有参考点和实心正方形或者圆盘。其实可以将核看作模板或者掩码。
在这里插入图片描述
公式为:
在这里插入图片描述

2、API函数讲解

C++:void erode(InputArray src,OutputArray dst,InputArray kernel,
				Point anchor=Point(-1-1),int iterations=1,int borderType=BORDER_CONSTANT,
				const Scalar& borderValue=morphologyDefaultBorderValue());
参数1:输入图像
参数2:目标图像,和原图像有相同的尺寸和类型
参数3:腐蚀操作核。当为NULL时,表示使用参考点位于中心3*3的核
	我们一般使用函数getStructuringElement配合这个参数使用。getStructuringElement函数会返回指定形状和尺寸的结构原始(内核矩阵)。其中getStructuringElement函数的第一个参数表示内核的形状,有如下三种形状可以选择(MORPH_RECT:矩形		MORPH_CROSS:交叉形		MORPH_ELLIPSE:椭圆形)
	而getStructuringElement函数的第二和第三个参数分别是内核的尺寸以及锚点的位置。一般在调研erode或dilate函数之前,先定义一个Mat类型的变量来获得getStructuringElement函数的返回值。

参数4:锚点的位置,有默认值(-1-1),表示锚点位于中心。
参数5:迭代使用erode()函数的次数,默认值为1.
参数6:用于推断图像外部像素的某种边界模式。
参数7:当边界为常数是的边界值,有默认值morphologyDefaultBorderValue(),一般不去管它。需要用到它时,可以查看官方文档。

3、案例

void erodeFun()
{
	Mat src = imread("img.jpg");

	namedWindow("原图", 0);
	imshow("原图", src);

	//获取自定义核
	Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
	Mat dst;

	//进行腐蚀操作
	erode(src, dst, element);

	namedWindow("腐蚀", 0);
	imshow("腐蚀", dst);
}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘·月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值