matlab中bwarea函数,求matlab中BWAREA函数的源程序

我自己看了一哈 原理,编了个程序,可以运行,但是结果和bwarea的结果不一样啊~~求求求

function square(a)

[m,n]=size(a);

i=zeros(m+2,n+2);

for x=1:1:m

for y=1:1:n

for w=1:1:m+2

for v=1:1:n+2

if x==w-1&y==v-1

i(w,v)=i(w,v)+a(x,y);   %在所给图像的边缘加一圈‘0’

else i(w,v)=i(w,v);

end

end

end

end

end

sum1=0;

sum2=0;

sum3=0;

sum4=0;

sum5=0;

sum6=0;

for x=1:1:m+1

for y=1:1:n+1

if [i(x,y) i(x,y+1);i(x+1,y) i(x+1,y+1)]==[0 0;0 0]                            %掩膜的类型所对应的像素值。

这是按那本书上写的bwarea的算法写的,就是这本matlab实战应用!骗人!!

sum1=sum1;

else if [i(x,y) i(x,y+1);i(x+1,y) i(x+1,y+1)]==[1 1;1 1]

sum2=sum2+1;

else if [i(x,y) i(x,y+1);i(x+1,y) i(x+1,y+1)]==[1 0;0 0]|[0 1;0 0]|[0 0;1 0]|[0 0;0 1]

sum3=sum3+1/4;

else if [i(x,y) i(x,y+1);i(x+1,y) i(x+1,y+1)]==[0 1;1 1]|[1 0;1 1]|[1 1;0 1]|[1 1;1 0]

sum4=sum4+7/8;

else if [i(x,y) i(x,y+1);i(x+1,y) i(x+1,y+1)]==[1 1;0 0]|[0 0;1 1]|[1 0;1 0]|[0 1;0 1]

sum5=sum5+1/2;

else if [i(x,y) i(x,y+1);i(x+1,y) i(x+1,y+1)]==[1 0;0 1]|[0 1;1 0]

sum6=sum6+3/4;

end

end

end

end

end

end

end

end

sum=sum1+sum2+sum3+sum4+sum5+sum6;

disp('square=')

disp(sum)

end

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值