腐蚀和膨胀是相对于白色部分的(RGB图是浅色部分的)
膨胀(dilate) 局部最大值(浅色)扩大一圈。
腐蚀(erode) 局部最小值(深色)扩大一圈。
开运算(open) 纤细处分离物体,消除小黑点
闭运算(close) 连接小的空隙
形态学梯度(morph-grad) 将突出团块(blob)的边缘
顶帽(top-hat) 将突出比原轮廓亮的部分
黑帽(black-hat) 将突出比原轮廓暗的部分
算法:
开运算 = 腐蚀 + 膨胀
闭运算 = 膨胀 + 腐蚀
形态学梯度 = 膨胀 - 腐蚀
顶帽 = 原图 - 开运算
黑帽 = 闭运算 - 原图
morphologyEx() 形态学运算
MORPH_OPEN 开运算
MORPH_CLOSE 闭运算
MORPH_GRADIENT 形态学梯度
MORPH_TOPHAT 顶帽
MORPH_BLACKHAT 黑帽
MORPH_ERODE 腐蚀
MORPH_DILATE 膨胀
Mat img = imread("E:/koala.jpg");
Mat eroded;
Mat element(7, 7, CV_8U, Scalar(1));
erode(img, eroded, element);
imshow("MyWindow", eroded);
waitKey(0);
Mat dilated;
element = getStructuringElement(MORPH_RECT, Size(7,7));
dilate(img, dilated, element);
imshow("MyWindow", dilated);
waitKey(0);
getStructuringElement 可以生成多种窗口形状
MORPH_RECT 矩形
MORPH_CROSS 十字
MORPH_ELLIPSE 椭圆
原图
腐蚀:深色
膨胀:浅色