目录
一、dilate:扩张
dilate函数使用像素领域内的局部极大运算符来膨胀一张图片,从src输入,由dest输出。
第三个参数为膨胀操作的内核。如果为NULL,则默认表示使用参考点位于中心3×3的核。
//扩张图像
Mat imgDil;
//写扩张内核
Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));
//进行扩张
dilate(imgCanny, imgDil,kernel);
//展示
imshow("ImageDilation", imgDil);
扩张的大小可以更改Size中的两个参数,尽量使用奇数,如3,5,7。
参数越大,扩张效果越大。
效果:
二、erode:侵蚀
侵蚀操作与膨胀操作类似,只是它取结构元所指定的领域内值的最小值作为该位置的输出灰度值。
因为取每个位置领域内最小值,所以侵蚀后输出图像的总体亮度的平均值比起原图会有所降低,图像中比较亮的区域的面积会变小甚至消失,而较暗物体的尺寸会扩大。
侵蚀一般搭配膨胀来使用。
//侵蚀图像
Mat imgErode;
erode(imgDil, imgErode, kernel);
imshow("ImageErode", imgErode);
效果:
三、 从高斯模糊到边缘检测,到扩张,到侵蚀
高斯模糊 ——使图像更模糊
砍尼边缘检测——使模糊的图像中,凸显出具有明显轮廓的部分
扩张——使边缘变粗
侵蚀——再使边缘变细