什么是膨胀与腐蚀
形态学操作(morphology operators)-膨胀(空白区域变大了,暗色部分变小了)
●dilatel(src, dst, kerne)
最大像索值用来替换锚点的像素(背景的像素值最大所以就膨胀了背景)
可以运用膨胀消除背景中的小的黑点
●图像形态学操作-基于形状的一 系列图像处理操作的
合集,主要是基于集合论基础上的形态学数学
●形态学有四个基本操作:腐蚀、膨胀、开、闭
●膨胀与腐蚀是图像处理中最常用的形态学操作手段
●跟卷积操作类似, 假设有图像A(背景)和结构元素B(要变化的图形) ,结构元
素B在A上面移动,其中B定义其中心为锚点 ,计算B覆
盖下A的最大像索值用来替换锚点的像素,其中B1作为
结构体可以是任意形状
------------------------------------------------------------------------------------------
形态学操作-腐蚀(黑色区域变大了,空白区域变小了)
●erode(src, dst, kernel)
腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值
可以运用腐蚀消除背景中小的白点
最小像索值用来替换锚点的像素(图形的像素值最小所以就膨胀了图形)
●腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值
替换锚点重叠下图像的像素值
------------------------------------------------------------------------------------------
形态学操作(morphology operators)-膨胀(空白区域变大了,暗色部分变小了)
●dilatel(src, dst, kerne)
最大像索值用来替换锚点的像素(背景的像素值最大所以就膨胀了背景)
可以运用膨胀消除背景中的小的黑点
------------------------------------------------------------------------------------------
相关API
形态学操作结构体的定义
●getStructuringElement(int shape, Size ksize, Point anchor)
Ksize(卷积核)一定要是奇数
.形状(MORPH_RECT\MORPH _CROSS\MORPH_ELlIPSE)
.大小
.锚点默认是Poit(1, 1)意思就是中心像素
●erode(src, dst, kernel)
动态调整结构元素大小(可拖动滑块)
●TrackBar-createTrackbar(constString& trackbarname,
constString winName, int* value, int count,
Track bar call back func, void* userdata=0)
其中最中要的是callback函数功能,如果设置为null就是
说只有值update ,但是不会调callback的函数
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
using namespace cv;
using namespace std;
Mat src, dst, gray;
int num;
int OriginalSize= 3;
int MAXsize = 21;
void CallBack_Demo(int, void*);
int main()
{
src = imread("D:/实验台/机器视觉/测试图片/盖茨膨胀与腐蚀噪点实验.jpg");
if (!src.data)
{
cout << "无法导入" << endl;
return -1;
}
imshow("原图", src);
namedWindow("腐蚀与膨胀",CV_WINDOW_AUTOSIZE);
createTrackbar("调节值:","腐蚀与膨胀", &OriginalSize,MAXsize,CallBack_Demo);
CallBack_Demo(0,0);
waitKey(0);
return 0;
}
void CallBack_Demo(int, void*)
{
int s = OriginalSize * 2 + 1;
Mat SE = getStructuringElement(MORPH_RECT, Size(s,s),Point(-1,-1));
erode(src,dst,SE);
imshow("腐蚀与膨胀",dst);
return ;
}