膨胀与腐蚀
膨胀和腐蚀的定义与功能:
膨胀将目标点融合到背景中,向外部扩展。膨胀处理可以将断裂开的目标物进行合并,便于对其整体的提取。
腐蚀与膨胀意义相反,消除连通的边界,使边界向内收缩。腐蚀处理可以将粘连在一起的不同目标物分离,并可以将小的颗粒噪声去除。
膨胀:
例如:
算法步骤分析:
- 扫描原图,找到一个像素值为0的背景点
- 将预先设定好形状和元素的结构元素移到该位置
- 判断结构元素是否有覆盖到像素值为1的背景点,如果有则选中的像素点像素值为1,否则为0
- 选择下一像素值为0的像素点,重复2,3,直至所有像素点完成
例如:
matlab imdilate膨胀:
matlab函数:imdilate(I,SE);
I:传入的图像
SE:结构元素
A1=imread('resource\Test.PNG'); bw=im2bw(A1);%转换为二值图 bw2=imcomplement(bw); %黑白对调 B=[ 0,1,0; 1,1,1; 0,1,0]; A2=imdilate(bw2,B); %膨胀 A3=imdilate(A2,B); A4=imdilate(A3,B); subplot(231),imshow(A1); title('原始图'); subplot(232),imshow(bw); title('原始图转化为二值图'); subplot(233),imshow(bw2); title('二值图黑白对调'); subplot(234),imshow(A2); title('第一次膨胀处理'); subplot(235),imshow(A3); title('第二次膨胀处理'); subplot(236),imshow(A3); title('第三次膨胀处理');
结果:
腐蚀:
例如:
算法步骤分析:
- 扫描原图,找到像素值为1的背景点
- 将预先设定好形状和元素的结构元素移到该位置
- 判断结构元素所覆盖的像素点是否全部为1,如果是则选中的像素点值为1,否则为0
- 选择下一像素值为1的像素点,重复2,3,直至所有像素点完成
matlab imerode腐蚀:
matlab函数:imerode(I,SE);
I:传入的图像
SE:结构元素
A1=imread('resource\imerode.jpg'); bw=im2bw(A1);%转换为二值图 bw2=imcomplement(bw); %黑白对调 B=[ 0,1,0; 1,1,1; 0,1,0]; A2=imerode(bw2,B); %膨胀 A3=imerode(A2,B); A4=imerode(A3,B); subplot(231),imshow(A1); title('原始图'); subplot(232),imshow(bw); title('原始图转化为二值图'); subplot(233),imshow(bw2); title('二值图黑白对调'); subplot(234),imshow(A2); title('第一次腐蚀处理'); subplot(235),imshow(A3); title('第二次腐蚀处理'); subplot(236),imshow(A3); title('第三次腐蚀处理');
结果:
灰度形态学的膨胀和腐蚀:
灰度形态学的腐蚀:
灰度形态学的腐蚀使用卷积的操作,用原图像区域减取结构元素,去其中最小值赋予对应原点
假设有以下图像(a)和结构元素(b)
以第一个区域为例
[0 0 0; [0 1 0; [0 -1 0;
0 4 3; 1 2 1; -1 2 2;
0 3 5] - 0 1 0] = 0 2 5]
此时区域的最小元素为-1,则使用-1替代原区域原点4
最终结果如下图。
灰度形态学膨胀:
灰度形态学的腐蚀使用卷积的操作,用原图像区域加上结构元素,去其中最大值赋予对应原点
假设有以下图像(a)和结构元素(b)
以第一个区域为例
[0 0 0; [0 1 0; [0 1 0;
0 4 3; 1 2 1; 1 6 4;
0 3 5] - 0 1 0] = 0 4 5]
此时区域的最大元素为6,则使用6替代原区域原点4
最终结果如下图(图片“与结构元素对应像元相加去最小值”有误,应为取最大值)
参考:
https://www.cnblogs.com/tornadomeet/archive/2012/03/20/2408086.html
https://blog.csdn.net/Chaolei3/article/details/79618602
https://blog.csdn.net/ywxk1314/article/details/81391800
https://blog.csdn.net/ywxk1314/article/details/81391478