2.2腐蚀与膨胀

形态学操作 

              基于形状的一系列图像处理操作,通过将结构元素作用于输入图像来产生输出图像。

              最基本的两种形态学操作:腐蚀(Erosion)与膨胀(Dilation)

              应用:消除噪声

                         分割独立的图像元素,以连接相邻的元素

                         寻找图像中明显的极大值区域与极小值区域

              以以下图片为例:

膨胀

           将此图像A与任意形状的内核B(通常为正方形或圆形)进行卷积

           内核B有一个可定义的锚点,通常定义为内核中心点。

           进行膨胀操作时,将内核B划过图像,将内核B覆盖区域的最大像素提取,并代替锚点位置

          的像素。这一操作将会导致图像中的亮区开始扩展

 腐蚀

             提取内核覆盖下像素的最小值

             将内核B划过图像,将内核B覆盖区域的最小像素值提取,并代替锚点位置的像素。

  

   函数

   erode(src,dst,element)

   src:输入图像

   dst:输出图像

   element:输入操作的内核,如果不指定默认为3*3的内核,否则,需要明确指定它的形状。可以使用函数

                 getStructureElement(erosion_type,

                                                  Size(2*erosion_size+1,2*erosion_size+1),

                                                  Point(erosion_size,erosion_size))

                   内核可以选择以下三种之一:矩形 MORPH_RECT

                                                                  交叉形MORPH_CROSS

                                                                  椭圆形MORPH_ELLIPSE

#include <opencv2/opencv.hpp>
#include <iostream>
#include<windows.h>
using namespace std;
using namespace cv;

int main()
{
    Mat src = imread("D:\Pic\1.jpg");  //存放自己图像的路径 
    Mat erosion_dst, dilation_dst;
    Mat element = getStructuringElement(MORPH_RECT, Size(3, 3), Point(1, 1));
    erode(src, erosion_dst, element);
    dilate(src, dilation_dst, element);
    namedWindow("Image", CV_WINDOW_AUTOSIZE);
    namedWindow("Erosion Demo", CV_WINDOW_AUTOSIZE);
    namedWindow("Dilation Demo", CV_WINDOW_AUTOSIZE);
    imshow("Image", src);
    imshow("Erosion Demo", erosion_dst);
    imshow("Dilation Demo", dilation_dst);
    waitKey(0);
    system("pause");
    return 0;
}
View Code

                 

                

             

              

              

原文地址:https://www.cnblogs.com/zuoyou151/p/9642835.html