1. 开操作(Open)
- 开操作是先腐蚀后膨胀
- 公式:
- 作用:可以去掉小的对象,假设对象是前景色,背景是黑色,其效果如下图所示:
2.闭操作(Close)
- 闭操作是:先膨胀后腐蚀
- 公式:
- 可以fill hole填充小的洞,假设对象是前景色,背景是黑色
3.形态学梯度(MorphologicalGradient)
- 定义:膨胀减去腐蚀
- 公式:
3.又称为基本梯度(其他还有内部梯度、方向梯度)
4. 顶帽(Top hat)
- 顶帽是原图像与开操作之间的差值图像
- 其效果如下图所示:
5.黑帽(Black hat)
- 黑帽是闭操作图像与原图像的差值图像
- 其效果为:
6.相关API
morphologyEx(src, dest, int OPT, kernel);
- 输入图像
- 输出图像
- 形态学操作类型:开CV_MOP_OPEN、闭CV_MOP_CLOSE、 梯度CV_MOP_GRADIENT 、顶帽 CV_MOP_TOPHAT、黑帽 CV_MOP_BLACKHAT
- 结构元素,其构造方法在第10课有介绍
- int lteration 迭代次数,默认为1
7.例程
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("D:/vcprojects/images/bin2.png");
if (!src.data) {
printf("could not load image...\n");
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);
char output_title[] = "morphology demo";
namedWindow(output_title, CV_WINDOW_AUTOSIZE);
Mat kernel = getStructuringElement(MORPH_RECT, Size(11, 11), Point(-1, -1));//构造结构元素
morphologyEx(src, dst, CV_MOP_BLACKHAT, kernel);//形态学操作
imshow(output_title, dst);
waitKey(0);
return 0;
}