• 形态学应用图像开运算与闭运算


    (如果不了解腐蚀与膨胀原理的同学那请看我前一期博客哦!)

    • 1.开运算

    开运算 = 先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了)
    开运算的效果图如下图所示:

    • 开运算总结:

    (1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。
    (2)开运算是一个基于几何运算的滤波器。
    (3)结构元素大小的不同将导致滤波效果的不同。
    (4)不同的结构元素的选择导致了不同的分割,即提取出不同的特征。

    • 2.闭运算

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

    • 闭运算总结:

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

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

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

    我就简单举个例子:

     1 #include<opencv2\opencv.hpp>   
     2 #include<opencv2\highgui\highgui.hpp>
     3 
     4 using namespace std;
     5 using namespace cv;
     6 
     7 int main()
     8 {
     9     Mat img = imread("寒山不冷.jpg");
    10     namedWindow("原始图", WINDOW_NORMAL);
    11     imshow("原始图", img);
    12     Mat out;
    13     //获取自定义核 第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的
    14     Mat element = getStructuringElement(MORPH_RECT, Size(18, 18)); 
    15 
    16     //具体要选择哪种操作,就修改第三个参数就可以了。这里演示的是形态学开运算处理
    17     morphologyEx(img, out, MORPH_OPEN, element);
    18     namedWindow("形态学处理操作", WINDOW_NORMAL);
    19     imshow("形态学处理操作", out);
    20     waitKey(0);
    21 }
  • 相关阅读:
    Smart Client智能客户端技术
    SaaS介绍
    SaaS介绍
    开源软件介绍
    SaaS介绍
    SaaS介绍
    开源软件介绍
    开源软件介绍
    GPUCUDA安装
    Linux 下的段错误(Segmentation fault)调试方法
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/15960416.html
Copyright © 2020-2023  润新知