imerode matlab,Matlab中 imerode/imdilate代码

%A是处理的矩阵 B是结构体 用来对A进行扫描的

%实现的是简单的二值图像的处理灰度图像有待研究

%实现图像的腐蚀已完成 未测试~测试完毕 基本正确

function ans =mimerode(A,B)

%初始化

[ha,wa] =size(A);

[hb,wb] =size(B);

origin =[0,0];

ans =zeros(ha,wa);

for i = 1:hb

for

j = 1:wb

if

(B(i,j)== 1)

origin

= [i,j];

break;

end

end

end

%对矩阵A进行边扩张 以0补充

new_A =zeros(ha+hb*2,wa+wb*2);

for i = 1:ha

for

j = 1:wa

new_A(i+hb,j+wb)

= A(i,j);

end

end

%对矩阵A进行遍历

for i = 1:ha

for

j = 1:wa

if A(i,j)

== 0

continue;

end

%把B的origin点移到当前处理点

%寻找B的影响区域块

begin_i

= i + hb - origin(1);

begin_j

= j + wb - origin(2);

%对矩阵new_A中和重合的B中的元素对比

for

i1 =begin_i:begin_i+hb-1

for

j1 =begin_j:begin_j+wb-1

flag =

true;

if

(B(i1-begin_i+1,j1-begin_j+1)== 1 & new_A(i1,j1) == 0)

flag

= false

break;

end

end

end

if

flag

ans(i,j)

= 1;

else

ans(i,j)

= 0;

end

end

end

%A是处理的矩阵 B是结构体 用来对A进行扫描的

%实现的是简单的二值图像的处理灰度图像有待研究

%实现图像的膨胀已完成 未测试~测试完毕 基本正确

function ans =mimdilate(A,B)

%初始化

[ha,wa] =size(A);

[hb,wb] =size(B);

origin =[0,0];

ans =zeros(ha,wa);

for i = 1:hb

for

j = 1:wb

if

(B(i,j)== 1)

origin

= [i,j];

break;

end

end

end

%对矩阵A进行边扩张 以0补充

new_A =zeros(ha+hb*2,wa+wb*2);

for i = 1:ha

for

j = 1:wa

new_A(i+hb,j+wb)

= A(i,j);

end

end

%对矩阵A进行遍历

for i = 1:ha

for

j = 1:wa

if A(i,j)

== 0

continue;

end

%把B的origin点移到当前处理点

%寻找B的影响区域块

begin_i

= i + hb - origin(1);

begin_j

= j + wb - origin(2);

%对矩阵new_A中和重合的B中的元素对比

for

i1 =begin_i:begin_i+hb-1

for

j1 =begin_j:begin_j+wb-1

flag =

false;

if(B(i1-begin_i+1,j1-begin_j+1)

== 1 & new_A(i1,j1) == 1 & ~((i1 == i+hb)& (j1 ==

j+hb)))

flag

= true;

break;

end

end

end

if

flag

ans(i,j)

= 1;

else

ans(i,j)

= 0;

end

end

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值