11-腐蚀与膨胀

掌握

1、膨胀;(首先需要获取膨胀和腐蚀的结构元素)
2、腐蚀;
3、代码演示,知道API函数的运用场景;

膨胀

膨胀:属于形态学操作(morphology operators)
1、图像形态学操作–基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学;
2、形态学有4个基本操作:膨胀,腐蚀,开,闭;
3、膨胀与腐蚀是图像处理中最常用的形态学操作手段;
4、膨胀操作与卷积操作类似,为最大值滤波,其中结构元素(卷积算子)可以是任意形状;
在这里插入图片描述注:上图左侧为原图,右图为膨胀后的图,黑色点的像素值小,白色点的像素值大;

腐蚀

1、腐蚀操作与膨胀过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值(即最小值滤波);
在这里插入图片描述

相关API

1、膨胀和腐蚀都需要首先获取结构元素:getStructuringElement();

//获取结构元素API
getStructuringElement(int shape , Size ksize , Point anchor);//anchor: 锚点
shape:  形状,接受宏定义参数:MORPH_RECT\MORPH_CROSS\MORPH_ELLIPSE;
ksize: 大小,必须为奇数
anchor: 锚点,默认Point(-1,-1),为中心像素;

2、膨胀API: dilate(src, dst, kernel);
工作原理:
在这里插入图片描述
3、腐蚀API:erode(src, dst, kernel);
工作原理:
在这里插入图片描述
4、动态调整结构元素的大小函数:createTrackbar();
trackBar: 滑动条;
在这里插入图片描述

Code

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

using namespace std;
using namespace cv;

Mat src, dest;
const char* output = "output image";

int element_Size = 3; //结构元素大小
int max_Size = 21;

void CallBack_Demo(int, void*);

int main(int argc, char** argv)
{
	src = imread("C:\\Users\\hello\\Desktop\\bai.jpg");
	if (!src.data)
	{
		cout << "could not load the image..." << endl;
		return -1;
	}
	namedWindow("input window", CV_WINDOW_AUTOSIZE);
	imshow("input window", src);
	
	namedWindow(output, CV_WINDOW_AUTOSIZE);
	createTrackbar("Element Size", output, &element_Size, max_Size, CallBack_Demo);//产生滑动条
	CallBack_Demo(0,0);



	waitKey(0);
	return 0;
}
//trackbar---滑动条
//膨胀变白,腐蚀变黑   膨胀和腐蚀可以消除小的噪声块,实际膨胀还是腐蚀根据背景色前景色判断
void CallBack_Demo(int, void*)
{
	int s = element_Size * 2 + 1;
	Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
	//膨胀
	//dilate(src, dest, structureElement, Point(-1, -1), 1);//iteration : 迭代次数
	//腐蚀
	erode(src, dest, structureElement); //腐蚀操作
	imshow(output, dest);
}

效果

膨胀和腐蚀在形态学中用来消除噪声块;

膨胀(变白):
在这里插入图片描述
腐蚀(变黑):
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值