第十二天、图像膨胀腐蚀

膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作

膨胀腐蚀是基于高亮部分(白色)操作的, 膨胀是対高亮部分进行膨胀, 类似“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域被蚕食”

膨胀腐蚀的应用和功能:

消除噪声

分割独立元素或连接相邻元素

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

求图像的梯度

其他相关:

开运算、闭运算

顶帽、黒帽

形态学梯度


1、膨胀---dilate()

膨胀就是求局部最大值的操作, 从数学角度上来讲, 膨胀或腐蚀就是将图像(或区域)A与核B进行卷积。

核可以是任意大小和形状, 它有一个独立定义的参考点(锚点), 多数情况下, 核是一个小的中间带参考点和实心正方形或者圆盘, 可以看做是一个模板或掩码。

膨胀是求局部最大值的操做, 核B与图形卷积, 即核B覆盖的区域的像素点的最大值, 并把这个最大值复制给参考点指定的像素, 这样就会使图像中的高亮区域逐渐增长, 如下图所示:


函数原型: 

src: 输入原图像(建议为二值图)

dst: 输出图像要求和src一样的尺寸和类型

kernel: 膨胀操作的核, 当为NULL时, 表示使用参考点位于中心的3x3的核

一般使用getStructuringElement获得指定形状和尺寸的结构元素(核)


可选以下三种形状: 矩形、交叉形、椭圆形

ksize和anchor分别表示内核尺寸和锚点位置

anchor: 锚的位置, 默认值Point(-1,-1), 表示位于中心

interations: 膨胀的次数

borderType: 边界模式, 一般采用默认值

borderValue: 边界值, 一般采用默认值

例子:


2、腐蚀---erode()

腐蚀和膨胀相反, 是取局部最小值, 高亮区域逐渐减小, 如下图所示:

函数原型:

例子:

示例代码:

#include "opencv2/opencv.hpp"
#include <iostream>

using namespace std;
using namespace cv;

void main()
{
	Mat srcImg = imread("1.jpg");
	Mat dstImg;
	Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
	cout<<element<<endl;
	//dilate(srcImg, dstImg, element, Point(-1, -1), 1);
	erode(srcImg, dstImg, element, Point(-1, -1), 1);
	imshow("src", srcImg);
	imshow("dst", dstImg);

	waitKey(0);
}








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值