3.1 形态学概述
数学形态学
- 建立在格论核拓扑学基础上的图像分析学科,基础的运算包括:二值腐蚀和膨胀,二值开闭运算,骨架抽取,极限腐蚀,击中击不中变换,形态学梯度,Top-hat变换,颗粒分析,流域变换,灰值腐蚀和膨胀,灰值开闭运算,灰值形态学梯度等
膨胀和腐蚀
- 消除噪声
- 分割出独立的图像元素,在图像中连接相邻的元素
- 寻找图像中的明显的极大值或极小值区域
- 求出图像的梯度
3.2 膨胀
膨胀(dilate)就是求局部的最大值的操作。从数学的角度就是图像与核进行卷积。
核可以是任何形状核大小,它拥有一个单独定义出来的参考点,称为锚点,可以把核视为模板或者掩码
3.3 腐蚀
腐蚀就是求局部最小值的操作。
3.4 相关API函数讲解
1 膨胀:dilate函数
void dilate(InputArray src, OutputArray dst, InputArray kernel,
Point anchor = Point(-1,-1),int iteration = 1,int borderType = BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue());
- InputArray 类型的kernel,膨胀操作的核,当为NULL,表示使用参考点位于3×3的核。使用- getStructuringElement配合这个参数使用,返回指定形状和尺寸的结构元素。矩形:MORPH_RECT,交叉形:MORPH_CROSS,椭圆形MORPH_ELLIPSE
- Point类型的anchor,锚的位置,表示锚的位置
- int类型的iterations,迭代使用erode()函数的次数
- int类型的borderType用于推断图像外部像素的某种边界模式
2 腐蚀:erode函数
void erode(InputArray src, OutputArray dst, InputArray kernal, Point anchor = Point(-1,-1),
int iterations = 1, int borderType = BORDER_CONSTANT,
const Scalar & borderValue=morphologyDefualtBorderValue())
类型同上