其他分享
首页 > 其他分享> > 【OpenCV】形态学运算:腐蚀、膨胀、开运算、闭运算

【OpenCV】形态学运算:腐蚀、膨胀、开运算、闭运算

作者:互联网

一、腐蚀

把当前像素替换成所定义像素集合中的最小值像素。图像腐蚀后物体尺寸会缩小,有些面积较小的物体会彻底消失,可看作背景的噪声被消除。

void cv::erode(InputArray src,
    OutputArray dst,
    InputArray kernel,
    Point anchor = Point(-1,-1),
    int iterations = 1,
    int borderType = BORDER_CONSTANT,
    const Scalar & borderValue = morphologyDefaultBorderValue() 
)	

例如:

cv::erode(image, erodedImage, cv::Mat(), cv::Point(-1, -1), 3);

cv::Point(-1, -1)表示原点是矩阵的中心点,cv::Mat()表示使用一个默认的3 x 3的矩形结构元素,最后的3代表进行3次腐蚀迭代。

二、膨胀

把当前像素替换成所定义像素集合中的最大值像素。膨胀后物体的尺寸会变大,一些空洞会被填满。

void cv::dilate(InputArray src,
    OutputArray dst,
    InputArray kernel,
    Point anchor = Point(-1,-1),
    int iterations = 1,
    int borderType = BORDER_CONSTANT,
    const Scalar & borderValue = morphologyDefaultBorderValue() 
)	

三、开运算

开运算是对图像先腐蚀后膨胀。开运算会消除背景中的小物体,所有小到不能容纳完整结构元素的物体都会被移除。可以用来消除因图像噪声产生的斑点。

void cv::morphologyEx(InputArray src,
    OutputArray dst,
    int op,
    InputArray kernel,
    Point anchor = Point(-1,-1),
    int iterations = 1,
    int borderType = BORDER_CONSTANT,
    const Scalar & borderValue = morphologyDefaultBorderValue() 
)	

其中,kernel可以通过getStructuringElement产生。

将op设置为以下几种

MORPH_OPEN就是开运算。

四、闭运算

闭运算是对图像先膨胀后腐蚀。闭运算会把邻近的物体连接起来,所有小到不能容纳完整结构元素的空隙或者间隙都会被消除。 可以把错误分裂成小碎片的物体连接起来。

将三节中的op设置为MORPH_CLOSE就是闭运算。

 

标签:运算,Point,int,InputArray,像素,形态学,OpenCV,cv
来源: https://blog.csdn.net/heiheiya/article/details/97157203