MATLAB 二值图像腐蚀

MATLAB 二值图像腐蚀


选择形态学结构s,扫描到第一个为1的像素点,做与或非(& | !)运算,此处做&运算

clear
clc
I=imread('fushi.png');
[L,R,D]=size(I);
IR=I(:,:,1);
IG=I(:,:,2);
IB=I(:,:,3);
Y=0.299.*IR+0.587.*IG+0.114.*IB;
num=110;
for i=1:L
    for j=1:R
        if Y(i,j)>num
            F(i,j)=1;
        else
            F(i,j)=0;
        end
    end
end
figure(1)
subplot(1,2,1);
imshow(F);
title('原图二值化(110)')

[L,R]=size(F);
s=[1 1 1 1 1
    1 1 1 1 1
    1 1 1 1 1
    1 1 1 1 1
    1 1 1 1 1]    %形态学为5*51
[s_L,s_R]=size(s);
num1=s_L-1;
num2=s_R-1;
for i=1:L
    for j=1:R
        if F(i,j) == 1 & i <= L-num1 & j <= R-num2
            E1 = (s(1,1)&F(i,j)) & (s(1,2)&F(i,j+1)) & (s(1,3)&F(i,j+2)) & (s(1,4)&F(i,j+3)) & (s(1,5)&F(i,j+4));
            E2 = (s(2,1)&F(i+1,j)) & (s(2,2)&F(i+1,j+1)) & (s(2,3)&F(i+1,j+2)) & (s(2,4)&F(i+1,j+3)) & (s(2,5)&F(i+1,j+4));
            E3 = (s(3,1)&F(i+2,j)) & (s(3,2)&F(i+2,j+1)) & (s(3,3)&F(i+2,j+2)) & (s(3,4)&F(i+2,j+3)) & (s(3,5)&F(i+2,j+4));
            E4 = (s(4,1)&F(i+3,j)) & (s(4,2)&F(i+3,j+1)) & (s(4,3)&F(i+3,j+2)) & (s(4,4)&F(i+3,j+3)) & (s(4,5)&F(i+3,j+4));
            E5 = (s(5,1)&F(i+4,j)) & (s(5,2)&F(i+4,j+1)) & (s(5,3)&F(i+4,j+2)) & (s(5,4)&F(i+4,j+3)) & (s(5,5)&F(i+4,j+4));
            E(i,j) =E1 & E2 & E3 & E4 & E5;
        else
            E(i,j)=0;
        end
    end
end
figure(1)
subplot(1,2,2);
imshow(E);
title('腐蚀')

效果:细线被腐蚀了
在这里插入图片描述
可以改变s的结构元素或改变s的大小,看看效果
膨胀也是差不多一样的道理,有空再写写

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值