基于matlab的迭代法分割图像

迭代法阈值选择算法是对双峰法的改进,他首先选择一个近似的阈值T,将图像分割成两个部分,R1和R2,计算出区域R1和R2的均值u1和u2,再选择新的阈值。

迭代法的原理

迭代法是一种比较简单的阈值分割方法,其思想:设置阈值的初始值为图像灰度最大值和最小值的平均,根据阈值划分图像为目标和背景,并分别将其灰度值求和,计算目标和背景的平均灰度,并判断阈值是否等于目标和背景平均灰度的和的平均,若相等,则阈值即为其平均,否则,将阈值设置为目标和背景灰度平局值的和的一半,继续迭代,直至计算出阈值。

算法过程

1、设置阈值的初始值:

  ZMax = max(max(I));
  ZMin = min(min(I));
  TK = (ZMax+ZMin)/2;

2、根据阈值划分图像为目标和背景,分别计算其灰度均值

  ZO=ForegroundSum/iForeground;
  ZB=BackgroundSum/iBackground;


  TKTmp=uint8((ZO+ZB)/2);

3、判断tk是否等于tktmp,若相等则退出循环,阈值为tktmp,否则,将tktmp赋给tk,转2继续执行迭代。

参考代码

function img = adaptvie_segment(I)
% 自适应阈值分割
I = uint8(I);
ZMax=max(max(I));
ZMin=min(min(I));
TK=(ZMax+ZMin)/2;
bCal=1;
iSize=size(I);
while(bCal)
    iForeground=0;
    iBackground=0;
    ForegroundSum=0;
    BackgroundSum=0;
    for i=1:iSize(1)
        for j=1:iSize(2)
            tmp=I(i,j);
            if(tmp>=TK)
                iForeground=iForeground+1;
                ForegroundSum=ForegroundSum+double(tmp);
            else
                iBackground=iBackground+1;
                BackgroundSum=BackgroundSum+double(tmp);
            end
        end
    end
    ZO=ForegroundSum/iForeground;
    ZB=BackgroundSum/iBackground;
    TKTmp=uint8((ZO+ZB)/2);
    if(TKTmp==TK)
        bCal=0;
    else
        TK=TKTmp;
    end
end

newI=im2bw(I,double(TK)/255);
img = newI;
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值