opencv 腐蚀与膨胀

膨胀与腐蚀是最基本的两种形态学操作,主要用于实现以下功能:

消除噪声;

分割出独立图像元素,在图像中连接相邻的元素;

寻找图像中的明显的极大值区域或极小值区域;

求出图像的梯度;

膨胀与腐蚀是相对图像中较亮部分而言的,即:膨胀是使图像中较亮区域变大,腐蚀是使图像中较暗区域变大。opencv中提供了两个函数用以膨胀和服饰操作。

void cv::erode(InputArray src,  OutputArray dst, InputArray kernel, Point anchor, int iterations, int borderType, const Scalar& borderValue);
<pre name="code" class="cpp">void cv::erode(InputArray src,  OutputArray dst, InputArray kernel, Point anchor, int iterations, int borderType, const Scalar& borderValue);

 

参数详解:

src:原图像。

dst:目标图像。

element:腐蚀操作的内核。 如果不指定,默认为一个简单的 bubuko.com,布布扣 矩阵。否则,我们就要明确指定它的形状,可以使用函数getStructuringElement().

anchor:默认为Point(-1,-1),内核中心点。省略时为默认值。

iterations:腐蚀次数。省略时为默认值1。

borderType:推断边缘类型,具体参见borderInterpolate函数。默认为BORDER_DEFAULT,省略时为默认值。

borderValue:边缘值,具体可参见createMorphoogyFilter函数。可省略。

通常情况下,我们可以使用函数getStructuringElement()来制作操作内核。

Mat getStructuringElement(int shape, Size esize, Point anchor=Point(-1,-1));

参数:

shape:内核形状,主要有MORPH_RECT,MORPH_CROSSMORPH_ELLIPSE,分别为矩形、椭圆形和交叉形,对应的值分别为0,1,2

enum { MORPH_RECT=0, MORPH_CROSS=1, MORPH_ELLIPSE=2 };

esize:内核大小。

anchor:内核锚点,默认为内核中心点。

例:

Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) );
  /// 腐蚀操作
  erode( src, dst, element );
<span style="white-space:pre">		</span><img src="https://img-blog.csdn.net/20160729150704773?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />   <span style="white-space:pre">				</span><img src="https://img-blog.csdn.net/20160729150733779?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
<span style="white-space:pre">				</span>原图<span style="white-space:pre">							</span>膨胀之后的图片
Mat element = getStructuringElement( 0,Size( 2*i + 1, 2*i+1 ), Point(i, i ) );
  /// 膨胀操作
  dilate( src, dst, element );


原图 腐蚀之后的图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值