1.膨胀腐蚀原理

见博主

膨胀就是亮点越亮,暗点越暗,腐蚀相反

2.膨胀

2.1api

dilate(const Mat &src, Mat &dst, Mat kernel, Point anchor=Point(-1,-1), int iterations=1)

src:輸入圖,可以多通道,深度可為CV_8U、CV_16U、CV_16S、CV_32F或CV_64F。
dst:輸出圖,和輸入圖尺寸、型態相同。
kernel:結構元素,如果kernel=Mat()則為預設的3×3矩形,越大膨脹效果越明顯。
anchor:原點位置,預設為結構元素的中央。
iterations:執行次數,預設為1次,執行越多次膨脹效果越明顯。

其中kernel由getStructuringElement()得到

Mat getStructuringElement(int shape, Size ksize, Point anchor=Point(-1,-1))

shape:模板形狀,有MORPH_RECT、MORPH_ELLIPSE、MORPH_CROSS(矩阵、椭圆、十字)三種可選。
ksize:模板尺寸。

2.2代码演示

Mat srcImg = imread("E:\\OpenCV\\images\\qsmy.png");
Mat dstImg;
Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
dilate(srcImg, dstImg, element, Point(-1, -1), -1);
imshow("dst", dstImg);
imshow("img", srcImg);
waitKey(0);

在这里插入图片描述

3.腐蚀

不做赘述,只是效果与膨胀相反,其余相同

4.基于腐蚀和膨胀的形态学高级操作

开运算:
先腐蚀,再膨胀,可清除一些小东西(亮的),放大局部低亮度的区域

闭运算:
先膨胀,再腐蚀,可清除小黑点

形态学梯度:
膨胀图与腐蚀图之差,提取物体边缘

顶帽:
原图像-开运算图,突出原图像中比周围亮的区域

黑帽:
闭运算图-原图像,突出原图像中比周围暗的区域

4.1api

V_EXPORTS_W void 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() );
这里的参数和上面的腐蚀膨胀全都一样,除了op
op是用来选择上面的5个操作的
MORPH_OPEN – 开运算(Opening operation)
MORPH_CLOSE – 闭运算(Closing operation)
MORPH_GRADIENT - 形态学梯度(Morphological gradient)
MORPH_TOPHAT - 顶帽(Top hat)
MORPH_BLACKHAT - 黑帽(Black hat)

4.2代码演示

Mat srcImg = imread("E:\\OpenCV\\images\\car.jpg");
Mat dstImg;
Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
//morphologyEx(srcImg, dstImg, MORPH_OPEN, element);  //开运算
//morphologyEx(srcImg, dstImg, MORPH_CLOSE, element);  //闭运算
morphologyEx(srcImg, dstImg, MORPH_GRADIENT, element);  //形态学梯度运算
//morphologyEx(srcImg, dstImg, MORPH_TOPHAT, element);  //顶帽运算
//morphologyEx(srcImg, dstImg, MORPH_BLACKHAT, element);  //黒帽运算
imshow("dst", dstImg);
imshow("img", srcImg);
waitKey(0);
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐