腐蚀和膨胀是最基本的形态学运算,因此把它们放在第一节介绍。数学形态学中最基本的概念是结构元素。结构元素可以简单地定义为像素的组合,在对应的像素上定义了一个原点(也称锚点)。形态学滤波器的应用过程就包含了用这个结构元素探测图像中每个像素的操作过程。把某个像素设为结构元素的原点后,结构元素和图像重叠部分的像素集就是特定形态学运算的应用对象。结构元素原则上可以是任何形状,但通常是一个简单形状,如正方形、圆形或菱形,并且把中心点作为原点。自定义结构元素可用于强化或消除特殊形状。
OpenCV 用简单的函数实现了腐蚀和膨胀运算,它们分别是 cv:erode 和 cv:dilate,用法也很简单:
// 读取输入图像
cv::Mat image= cv::imread("binary.bmp");
// 腐蚀图像
// 采用默认的 3×3 结构元素
cv::Mat eroded; // 目标图像
cv::erode(image,eroded,cv::Mat());
// 膨胀图像
cv::Mat dilated; // 目标图像
cv::dilate(image,dilated,cv::Mat());