OpenCV探索之路(四):膨胀、腐蚀、开闭运算

腐蚀和膨胀是最基本的形态学运算。

腐蚀和膨胀是针对白色部分(高亮部分)而言的。

膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。

膨胀

膨胀就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;

//膨胀
int main()
{
    Mat img = imread("lol1.jpg");
    namedWindow("原始图", WINDOW_NORMAL);
    imshow("原始图", img);
    Mat out;
    //获取自定义核
    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的
    //膨胀操作
    dilate(img, out, element);
    namedWindow("膨胀操作", WINDOW_NORMAL);
    imshow("膨胀操作", out);
    waitKey(0);

}

可以看到,图像原来光亮的部分被放大了,黑暗的部分被缩小了。

腐蚀

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;

//腐蚀
int main()
{
    Mat img = imread("lol1.jpg");
    namedWindow("原始图", WINDOW_NORMAL);
    imshow("原始图", img);
    Mat out;
    //获取自定义核
    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的
    //腐蚀操作
    erode(img, out, element);
    namedWindow("腐蚀操作", WINDOW_NORMAL);
    imshow("腐蚀操作", out);
    waitKey(0);

}

可以看到,图像原来黑暗的部分被放大了,明亮的部分被缩小了。

开运算:先腐蚀再膨胀,用来消除小物体

闭运算:先膨胀再腐蚀,用于排除小型黑洞

形态学梯度:就是膨胀图与俯视图之差,用于保留物体的边缘轮廓。

顶帽:原图像与开运算图之差,用于分离比邻近点亮一些的斑块。

黑帽:闭运算与原图像之差,用于分离比邻近点暗一些的斑块。

opencv里有一个很好的函数getStructuringElement,我们只要往这个函数传相应的处理参数,就可以进行相应的操作了,使用起来非常方便。

下面列举一下相应的操作宏定义。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;

//高级形态学处理
int main()
{
    Mat img = imread("lol1.jpg");
    namedWindow("原始图", WINDOW_NORMAL);
    imshow("原始图", img);
    Mat out;
    //获取自定义核
    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的

    //高级形态学处理,调用这个函数就可以了,具体要选择哪种操作,就修改第三个参数就可以了。这里演示的是形态学梯度处理
    morphologyEx(img, out, MORPH_GRADIENT, element);
    namedWindow("形态学处理操作", WINDOW_NORMAL);
    imshow("形态学处理操作", out);
    waitKey(0);

}

形态学梯度处理

这个是顶帽运算的效果

时间: 2024-08-10 17:20:06

OpenCV探索之路(四):膨胀、腐蚀、开闭运算的相关文章

Opencv3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换

19      腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RECT,交叉形MORPH_CROSS,椭圆形MORPH_ELLIPSE.Matlab中会有更多一点的模板. 例如: Mat element = getStructuringElement(MORPH_RECT,Size(15,15)); erode(srcImage,dstImage,

腐蚀膨胀,开闭运算,形态学梯度,顶帽,黑帽

膨胀dilate void dilate(InputArray src,OutputArray dst,InputArray kernel,Point anchor=Point(-1,-1),int iterations=1,int borderType=BORDER_CONSTANT,const Scalar&borderValue=morphologyDefaultBorderValue()); 一般第三个参数用getStructuringElement函数配合使用:int g_nStruc

cvMorphologyEx 形态学操作:开闭运算,形态学梯度,礼帽和黑帽

1.开运算:CV_MOP_OPEN,先腐蚀(cvErode)再膨胀(cvDilate),去除亮点,可以将做了阀值化细胞图像的细胞分开 2.闭运算:CV_MOP_CLOSE,先膨胀(cvDilate)再cvErode,去除暗点 3.形态学梯度:cvDilate-cvErode,用于求边界 4.礼帽:src-开运算,突出亮点 5.黑帽:闭运算-src,突出暗点 程序: 代码: #include "cv.h" #include "cxcore.h" #include &q

形态学滤波:(1)腐蚀与膨胀 (2)开运算,闭运算,形态学梯度,顶帽,黑帽

一.形态学概述 图像处理中的形态学一般指的是数学形态学. 数学形态学是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论.其基本运算包括:二值腐蚀和膨胀,二值开闭运算,骨架抽取,极限腐蚀,击中击不中变换,形态学梯度,top-hat变换,颗粒分析,流域变换,灰值腐蚀和膨胀,灰值开闭运算,灰值形态学梯度等. 简单来讲,形态学操作就是基于形状的一系列图像处理操作. 二.形态学滤波 (1)腐蚀与膨胀 膨胀和腐蚀能实现多种多样的功能,主要如下: 消除噪声: 分割(isolate)

学习 opencv---(10)形态学图像处理(2):开运算,闭运算,形态学梯度,顶帽,黒帽合辑

上篇文章中,我们重点了解了腐蚀和膨胀这两种最基本的形态学操作,而运用这两个基本操作,我们可以实现更高级的形态学变换. 所以,本文的主角是OpenCV中的morphologyEx函数,它利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换,如开闭运算.形态学梯度."顶帽"."黑帽"等等. 第二件事,是浅墨想跟大家做一个关于OpenCV系列文章的书写内容和风格的思想汇报. 是这样的,浅墨发现最近几期写出来的文章有些偏离自己开始开这个专栏的最初的愿望--原理和概念部分占的

图像开运算和闭运算

1.原理 图像开运算与闭运算与膨胀和腐蚀运算有关,由膨胀和腐蚀两个运算的复合与集合操作(并.交.补等)组合成的运算构成.开运算与闭运算依据腐蚀和膨胀演变而来. 1)开运算:先对图像腐蚀后膨胀. A○S= (AΘS)⊕ S 作用:用来消除小的物体,平滑形状边界,并且不改变其面积.可以去除小颗粒噪声,断开物体之间的粘连. 2)闭运算:先对图像膨胀后腐蚀 A●S= (A⊕S)Θ S 作用:用来填充物体内的小空洞,连接邻近的物体,连接断开的轮廓线,平滑其边界的同时不改变面积. 2.开运算的实现 imgP

【数字图像处理】图像开运算与闭运算

图像开启与闭合 图像开运算与闭运算与膨胀和腐蚀运算有关,由膨胀和腐蚀两个运算的复合与集合操作(并.交.补等)组合成的所以运算构成. 开运算与闭运算依据腐蚀和膨胀的不可逆性,演变而来.开运算:先对图像腐蚀后膨胀闭运算:先对图像膨胀后腐蚀注意:使用同一个结构元素. 图像开运算 开运算:能够去除孤立的小点.毛刺和小桥(即连通两块区域的小点),消除小物体.平滑较大物体的边界,同时并不明显改变其面积.不过这一恢复不是信息无损的,即它们通常不等于原始图像. 开运算的效果图如下图所示: 开运算总结: (1)开

【OpenCV学习笔记 008】基于形态学运算的图像变换

一.形态学滤波对图像进行腐蚀.膨胀运算 1.概念及原理 (1)腐蚀和膨胀是形态学中最基本的运算,而结构元素又是数学形态学中最基本的工具.结构元素可以简单理解为像素的结构以及一个原点.使用形态学滤波就是对像素的每个元素应用这个结构,当结构元素的原点和像素对齐时,它与图像的相交部分定义了一组进行形态学运算的像素.结构元素可以是任何形状,我们一般使用简单的方形.圆形.或菱形,原点即位于中心位置. (2)腐蚀替换当前像素位像素集合中找到的最小像素值,膨胀则相反.为了想象出两个运算的效果,可以考虑背景(黑

opencv-图像形态学之膨胀腐蚀

转自:https://blog.csdn.net/poem_qianmo/article/details/23710721 一.原理 1.1 形态学概述 形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构.而我们图像处理中指的形态学,往往表示的是数学形态学.下面一起来了解数学形态学的概念. 数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论.其基本的运算包括:二值腐