开运算,闭运算及其所用运算_开运算和闭运算的作用[通俗易懂]

开运算,闭运算及其所用运算_开运算和闭运算的作用[通俗易懂]1.开运算 开运算=先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了) 开运算的效果图如下图所示: 开运算总结: (1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便

  • 1.开运算 
    开运算 = 先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了) 
    开运算的效果图如下图所示: 
    这里写图片描述
  • 开运算总结: 
    (1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。 
    (2)开运算是一个基于几何运算的滤波器。 
    (3)结构元素大小的不同将导致滤波效果的不同。 
    (4)不同的结构元素的选择导致了不同的分割,即提取出不同的特征。

  • 2.闭运算 
    闭运算 = 先膨胀运算,再腐蚀运算(看上去将两个细微连接的图块封闭在一起) 
    闭运算的效果图如下图所示:

这里写图片描述
– 闭运算总结: 
(1)闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。 
(2)闭运算是通过填充图像的凹角来滤波图像的。 
(3)结构元素大小的不同将导致滤波效果的不同。 
(4)不同结构元素的选择导致了不同的分割。


我们可以使用opencv自带函数进行调试哦! 
openCV里有一个很好的函数getStructuringElement,我们只要往这个函数传相应的处理参数,就可以进行相应的操作了,使用起来非常方便。下面我简单列举一下相应的操作宏定义:

标识符 含义
MORPH_OPEN 开运算
MORPH_CLOSE 闭运算
MORPH_ERODE 腐蚀
MORPH_DILATE 膨胀

举个例子:

#include<opencv2\opencv.hpp>

#include<opencv2\highgui\highgui.hpp>


using namespace std;

using namespace cv;


int main()

{

Mat img = imread("寒山不冷.jpg");

namedWindow("原始图", WINDOW_NORMAL);

imshow("原始图", img);

Mat out;

//获取自定义核 第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的

Mat element = getStructuringElement(MORPH_RECT, Size(18, 18));



//具体要选择哪种操作,就修改第三个参数就可以了。这里演示的是形态学开运算处理

morphologyEx(img, out, MORPH_OPEN, element);

namedWindow("形态学处理操作", WINDOW_NORMAL);

imshow("形态学处理操作", out);

waitKey(0);


}

 

今天的文章开运算,闭运算及其所用运算_开运算和闭运算的作用[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/78423.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注