腐蚀膨胀开闭运算

图像形态学即数学形态学(Mathematical morphology)是一门建立在格伦和拓扑学基础上的图像分析学科,是数学形态学图像处理的基本理论;

常见图像形态学运算:腐蚀、膨胀、开运算、闭运算、骨架抽取、极线腐蚀、击中击不中变换、Top-hat变换、颗粒分析、流域变换、形态学梯度等;

最基本的形态学操作是:膨胀(dilation)和腐蚀(erosion);

腐蚀:erode

void erode( Mat& src, //原图像
       Mat& dst, //目标图像
       const Mat& element,//卷积核
       Point anchor=Point(-1,-1),//内核中心点,可省略
       int iterations=1,//腐蚀次数,可省略
        int borderType=BORDER_CONSTANT,//边缘类型,可省略
       const Scalar& borderValue=morphologyDefaultBorderValue()//边缘值,可省略
);
例子:
1     Mat image = imread("C:/figure6_16_a.png");
2     namedWindow("原图");
3     imshow("原图", image);
4     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));//构造矩形15*15卷积核
5     Mat out2;
6 
7     erode(image, out2, element);
8     namedWindow("腐蚀图");
9     imshow("腐蚀图", out2);
Mat getStructuringElement(int shape, Size esize, Point anchor=Point(-1,-1));

参数:

shape:内核形状,主要有MORPH_RECT,MORPH_CROSS和MORPH_ELLIPSE,分别为矩形、椭圆形和交叉形,对应的值分别为0,1,2



膨胀:

1     Mat out1;
2     namedWindow("膨胀图");
3     dilate(image, out1, element);
4     imshow("膨胀图", out1);    

开闭运算:

OpenCV:morphologyEx()

功能:morphologyEx函数利用基本的膨胀和腐蚀技术,来执行更加高级形态学变换,

如开闭运算,形态学梯度,“顶帽”、“黑帽”等等。

void morphologyEx( 

InputArray src, //

OutputArray dst,// 

int op,//形态学运算的类型

InputArraykernel, 

Pointanchor=Point(-1,-1), 

intiterations=1, 

intborderType=BORDER_CONSTANT, 

constScalar& borderValue=morphologyDefaultBorderValue() ); 

【注】:

int op:表示形态学运算的类型,

MORPH_OPEN – 开运算(Opening operation)

MORPH_CLOSE – 闭运算(Closing operation)

MORPH_GRADIENT -形态学梯度(Morphological gradient)

MORPH_TOPHAT - “顶帽”(“Top hat”)

MORPH_BLACKHAT - “黑帽”(“Black hat“)

开运算:先腐蚀后膨胀的过程;

功能:

消除小物体;

在纤细处分离物体;

平滑较大的边界并不明显改变其面积;

1    Mat out3;
2     namedWindow("开运算图");
3     morphologyEx(image, out3, MORPH_OPEN, element);
4     imshow("开运算图", out3);

形态学闭运算:

闭运算(Closing Openration),先膨胀后腐蚀;

功能:

排除小型黑洞(黑斑);

   Mat out4;
    namedWindow("闭运算图");
    morphologyEx(image, out4, MORPH_CLOSE, element);
    imshow("闭运算图", out4);

猜你喜欢

转载自www.cnblogs.com/lyqf/p/10968241.html
今日推荐