腐蚀(erode)
原理
腐蚀是使用像素邻域内的局部极小运算来腐蚀一张图片;是对图像中的白色部分(高亮部分)而言的。设定卷积核尺寸,卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是1,那么中心元素就保持原来的像素值,否则就变为0。
![]()
函数原型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
void cv::erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations = 1, int borderType=BORDER_CONSTAN, const Scalar& borderValue=morphologyDefaultBorderValue());
|
实例
1 2 3 4
| Mat mat_base = imread("fish.png");
Mat mat_dst; erode(mat_base, mat_dst, Mat(), cv::Point(-1, -1), 3);
|
如图为腐蚀3次后的形状
]
膨胀(dilate)
原理
膨胀是使用像素邻域内的局部极大运算来膨胀一张图片;与腐蚀是相反操作,但是都是对图像中的白色部分(高亮部分)而言的。设定卷积核尺寸,卷积核沿着图像滑动,与卷积核对应的原图像的像素值中只要有一个是1,中心元素的像素值就是1。
![]()
函数原理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
void cv::dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor=Point(-1,-1), int iterations = 1, int borderType=BORDER_CONSTAN, const Scalar& borderValue=morphologyDefaultBorderValue());
|
实例
1 2 3
| Mat mat_base = imread("fish.jpg"); Mat mat_dst; dilate(mat_base, mat_dst, cv::Mat(), cv::Point(-1, -1), 3);
|
如图为膨胀3次后的形状
![]()