[matlab数字图像处理9]对一副二值图像进行膨胀、腐蚀、开、闭操作,提取边缘

一、 问题描述

对一副二值图像进行膨胀、腐蚀、开、闭操作,提取边缘;

二、 求解思路

利用MATLAB中自带的imdilate函数进行膨胀操作,利用imerode函数进行腐蚀操作,利用imopen函数进行开操作,利用imclose进行闭操作,利用公式在这里插入图片描述
把原图减去腐蚀后的图像获取边缘图像

三、 程序代码

clear;
clc;
close all
%对一副二值图像进行膨胀、腐蚀、开、闭操作,提取边缘
im=imread('1.png');
suj1=strel('line',10,90);
suj2 = strel('line',10,180);
subplot(3,3,1)
imshow(im)
title('原图像')
%% 膨胀
subplot(3,3,2)
im1=imdilate(im,suj1);
imshow(im1)
title('被竖线膨胀')
subplot(3,3,3)
im2=imdilate(im,suj2);
imshow(im2)
title('被横线膨胀')
%% 腐蚀
subplot(3,3,4)
im3=imerode(im,suj1);
imshow(im3)
title('被竖线腐蚀')
subplot(3,3,5)
im4=imerode(im,suj2);
imshow(im4)
title('被横线腐蚀')
%% 开
subplot(3,3,6)
im5=imopen(im,suj1);
imshow(im5)
title('被竖线开运算')
subplot(3,3,9)
im6=imopen(im,suj2);
imshow(im6)
title('被横线开运算')
%% 闭
subplot(3,3,7)
im6=imclose(im,suj1);
imshow(im6)
title('被竖线闭运算')
subplot(3,3,8)
im7=imclose(im,suj2);
imshow(im7)
title('被横线闭运算')
%% 提取边缘
figure(2)
suj3=strel('square',10);
imm=imread('xiongmao.jpeg');
subplot(3,1,1)
imshow(imm)
subplot(3,1,2)
imm1=imerode(imm,suj3);
edge1=imm-imm1;
imshow(edge1)

四、 实验结果

在这里插入图片描述

如图为原图被横线和竖线分别膨胀,腐蚀,开,闭后的实验结果,可以看见原图配竖线膨胀后,横线消失了,被横线膨胀后,竖线消失了;被竖线腐蚀后,横线加粗,被横线腐蚀后竖线加粗;被竖线开运算后,在A的竖线方向增加了一条竖线,在被竖线闭运算后,横向的线消失,A也只剩下模糊的两个支脚;在被横线闭运算后,只剩下横着的部分,在被横线开运算后,A的内部填充。
在这里插入图片描述

如图为提取图像边缘的结果

五、 实验心得

数学形态学提供了图像处理的新思路和新方法,合理使用这些方法将可以拓展出许多新的优秀的功能

  • 1
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值