最大类间方差法大津法OTSU

最大类间方差法是由日本学者大津展之1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标两部分。背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为\omega_0 \,,其平均灰度\mu_0;背景像素点数占整幅图像的比例为\omega_1,其平均灰度为\mu_1。图像的总平均灰度记为\mu,类间方差记为g。假设图像的背景较暗,并且图像的大小为M*N,图像中像素的灰度值小于阈值T的像素个数记作N_0,像素灰度大于阈值T的像素个数记作N_1,则有:

 \omega_0=\frac{N_0}{M*N}            (1)
  \omega_1=\frac{N_1}{M*N}             (2)
  N_0+N_1=M*N           (3)
  \omega_0+\omega_1=1           (4)
  \mu=\omega_0*\mu_0+\omega_1*\mu_1              (5)
  g=\omega_0(\mu_0-\mu)^2+\omega_1(\mu_1-\mu)^2             (6)

将式(5)代入式(6),得到等价公式:

  g=\omega_0\omega_1(\mu_0-\mu_1)^2              (7)

采用遍历的方法得到使类间方差最大的阈值T,即为所求。

示例程序:

int  Otsu(long *pg, long *pg1)                     //  大津法取阈值
{
   int  i,j,p;
   double A,B,An,Bn,u,v,qqq[256],max,min;
   An=Bn=0;
 
    for (i=0;i<256;i++)
    {
         An+=pg;     
         Bn+=pg*(i+1);
    }
    for (j=0;j<256;j++)
    {
         A=B=0;
         for (i=0;i<=j;i++)
         {
              A+=pg;
              B+=pg*(i+1);
         }
         if (A) {u=B/A;}
         else   u=0;
         if (An-A) {v=(Bn-B)/(An-A);}
         else v=0;
         qqq[j]=A*(An-A)*(u-v)*(u-v);                //  计算类间方差
    }
    max=min=qqq[0];  p=0;
    for (i=1;i<256;i++)  //  寻找判别函数最大值
    {                    
         if (qqq>max)
         {
              max=qqq;
              p=i;
         }
         else if (qqq<min) min=qqq;
    }
    if (pg1!=0)
    {
         for (i=0;i<256;i++)
         {
              pg1=(long) (120*(qqq-min)/(max-min));
         }
    }
    return(p);                   //  取判别函数最大值的灰度为其阈值
}

注:这段程序使用了浮点型运算,如果在定点单片机上运行的话,要做相应的改进,将浮点转成定点运算,可以提高运算的精度和速度。
原文地址:http://zh.wikipedia.org/wiki/%E5%A4%A7%E6%B4%A5%E7%AE%97%E6%B3%95
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值