Opencv基础入门笔记09

Opencv基础入门笔记09:图片腐蚀与膨胀

1.图片腐蚀与膨胀的概念、原理

首先讲一下图片的形态学操作是什么:如图
在这里插入图片描述
我们可以看到,图片的形态学操作的作用有:
1.可以有效去除噪声
2.保留图片的特征信息
3.增强特征信息
4.有利于边缘信息的提取

图片形态学一般的操作包括:腐蚀、膨胀、开、闭运算4种,其中,常用的就是膨胀与腐蚀

原理:用具有特定形状的结构元素(Structure Elenment),去对二值化的图像进行卷积的逻辑运算,达到度量、过滤、提取图片某一特征的形状。运算结果是对结构元素对应下的每个像素进行相同运算,输出对应的每个像素值注意!!!!!卷积运算种定义的结构元素的Size必须为奇数
详细:
膨胀:此操作将图像 A 与任意形状的内核 (B),即结构元素,通常为正方形或圆形,进行卷积。
内核 B 有一个可定义的 锚点(anchor), 通常定义为内核中心点。
进行膨胀操作时,将内核 B 划过图像,将内核 B 覆盖区域的最大相素值提取,并代替锚点位置的相素。显然,这一最大化操作将会导致图像中的亮区开始”扩展” (因此有了术语膨胀 dilation )
dilation result - Theory example(膨胀的一般效果)
背景(白色)膨胀,而轮廓变小了。
在这里插入图片描述

腐蚀
腐蚀在形态学操作家族里是膨胀操作的孪生姐妹。它提取的是内核覆盖下的相素最小值。
进行腐蚀操作时,将内核 B 划过图像,将内核 B 覆盖区域的最小相素值提取,并代替锚点位置的相素。
erode result - Theory example
背景(白色)变细,而轮廓则变大了。
在这里插入图片描述

注意这里的结构元素实际的Size=2(滑动条数字)+1;结构元素得保证是奇数

2.图片形态学一般步骤

1.读取图片并二值化图片(二值化为了提取某特征及减少运算量)
2.定义结构元素大小(奇数)
3.创建窗口,调用膨胀腐蚀两个API(dilation,erode)//必要可以创建滑动条
4.显示图片或者进行图像模糊处理,边缘检测等步骤、

3.API介绍及代码演示

1.API介绍

dilation(src,dst,kernel)//1.输入的图片;2.要输出的目标图片;3.结构元素
erode(src,dst,kernel)//1.输入的图片;2.要输出的目标图片;3.结构元素

2.代码演示

// Opencv 文件.cpp :
#include "pch.h"
#include<opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int elenment_size = 3;
int max_size = 21;
void Callback_demo(int, void*);
Mat dst;
Mat src1;
char OUTPUT_WIN[] = "output_image";


int main()
{
	src1 = imread("E:\\360downloads\\wpcache\\1.jpg");
	if (!src1.data) {//!src.data与src.empty()一样;
		printf("failure to load the image1 ");
		return -1;
	}
	namedWindow(OUTPUT_WIN, WINDOW_AUTOSIZE);
	imshow("src1", src1);
	createTrackbar("elenment_size", OUTPUT_WIN, &elenment_size, max_size,Callback_demo);
	Callback_demo(0, 0);

	
	waitKey(0);
	return 0;
}
void Callback_demo(int, void*) {
	int s = elenment_size*2+1;
	//定义一个卷积核,kernel 的shape;
	Mat kernel = getStructuringElement(MORPH_CROSS, Size(s, s), Point(-1, -1));
	//进行形态学操作之膨胀
//	dilate(src1, dst, kernel);//看起来就是轮廓变小,颜色膨胀;
	erode(src1, dst, kernel);//看起来就是轮廓变小,颜色被腐蚀了一样;
	imshow(OUTPUT_WIN, dst);
	return;
	

}

腐蚀的效果图,Structure Elenment Size(2*18+1);
在这里插入图片描述
膨胀的效果图,Structure Elenment Size(2*18+1);
在这里插入图片描述
end!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雨夜※繁华

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

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

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

打赏作者

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

抵扣说明:

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

余额充值