形态作业:形态操作将结构元素应用于输入图像并生成输出图像。
最基本的形态作用是:侵蚀和扩张。
- 消除噪音
- 隔离单个元素并连接图像中的不同元素。
- 查找图像中的强度凸点或孔
扩张
该操作包括将图像与某些内核进行卷积,其可以具有任何形状或尺寸,通常为正方形或圆形。
内核具有定义的锚点,通常是内核的中心。
当内核在图像上扫描时,我们计算由B重叠的最大像素值,并用该最大值替换锚点位置中的图像像素。您可以推断,这种最大化的操作会使图像中的亮区“增长”(因此称为扩张)。
执行扩张的代码在opencv里为:
dilate(src, dilation_dst, element );
/*
1.src为原图像(imread)
2.erosion_dst输出图像
3.element 为执行操作的内核(卷积核),默认为3*3的矩阵
我们可以使用cv::getStructuringElement来指定需要的内核(如下使用)
*/
Mat element = getStructuringElement( erosion_type,
Size( 2*erosion_size + 1, 2*erosion_size+1 ),
Point( erosion_size, erosion_size ) );
/*
1.矩形框:MORPH_RECT
2.十字架:MORPH_CROSS
3.椭圆:MORPH_ELLIPSE
*/
侵蚀
它计算给定内核区域的局部最小值。
当内核在图像上扫描时,我们计算由重叠的最小像素值,并用该最小值替换锚点下的图像像素。
对于扩张的例子,我们可以将侵蚀算子应用于原始图像
opencv种侵蚀的接口为:
erode( src, erosion_dst, element );//参数解释同上