OpenCV学习笔记(五)用形态学运算变换图像

1、用形态学滤波器腐蚀和膨胀图像
腐蚀(erode)和(dilate)是最基本的形态学运算。在数学形态学中最基本的概念是结构元素,类似滤波当中的核,核的尺寸是可调的,将核的中心点作为原点,也叫锚点。形态学滤波器通常作用于二值图像,形态学中习惯用高像素值(白色)作为前景物体,用低像素值(黑色)作为背景物体。
腐蚀可以缩小前景,膨胀可以扩大前景。

2、开启和闭合运算
开启的定义时对图像先腐蚀再膨胀,闭合的定义是对图像先膨胀再腐蚀
例如开启运算:morphologyEx(image, opened, cv::MORPH_OPEN, element5),其中element5是使用的结构元素,可以在函数之前预定义。
开启可以消除背景中的小物体,闭合可以把前景中的小空隙连接起来,这些滤波器通常用来进行目标检测,闭合滤波器可以把错误分裂成小碎片的物体连接起来,开启滤波器可以移除因为图像噪点产生的白斑。但是消除白班也有可能消除一些物体碎片。

3、对同一幅图像进行多次相同的运算时没有作用的,这些运算时幂等的。(例如1的n次方还是1)

4、在灰度图像中应用形态学运算
①形态学梯度,这种运算可以提取出图像的边缘,使用方法为morphologyEx(image, result, cv::MORPH_GRADIENT,  Mat()),可以得到图像中物体的轮廓
②顶帽变换(hat-top),它可以从图像中提取出局部的小型前景物体(具体为 原图像 -开运算)。
③黑帽变换(具体为 闭运算 - 原图像)可以提取出文字照片中的文字(作为前景物体)
④边缘检测,可以考虑   山峰-山谷  模型,在对此模型进行腐蚀或者膨胀运算时变化的地方仅仅是山谷或者是山峰,但是悬崖部分是固定的,因此可以使用Beucher梯度运算使用的核心函数还是①中形态学梯度中的函数,模式为MORTH_GRADIENT)来检测出边缘,结构元素越大,则检测到的边缘越宽。也可以采取:膨胀图像减去原始图像、原始图像减去腐蚀后的图像,这两种方法得到边缘,只不过得到的边缘会更窄。

——通过修改结构元素的尺寸,可以改变各种变换的程度。

5、用分水岭算法实现图像分割
它用于将图形分割成多个同质区域,需要使用的函数是cv::watershed函数,函数输入对象是一个标记图像,图形像素值是32位有符号整数,每一个非零像素代表一个标签。
一个关键步骤是获得标记图像,在本书中是采用两幅图像的合成实现的,两幅图的叠加直接使用了 + 运算符。
分水岭算法的作用是明确地划分前景和后景,在下面这幅图中,白色区域属于前景,灰色区域属于背景,黑色区域属于位置区域(不知道是属于牛还是属于森林)然后分水岭算法会将包含前景的未知区域认为是前景,将这些区域划分出来,没有标记的那些黑色区域就被认为是背景了。
OpenCV学习笔记(五)用形态学运算变换图像_第1张图片需要注意获得标记图像的方法是多样的

6、用MSER算法(最大稳定外部区域算法)提取特征区域
MSER算法与风水岭算法相同,在逐渐升高水位的过程中,在一定时间内保持稳定的区域就被认为是MSER。

你可能感兴趣的:(OpenCV学习笔记,opencv)