最大类间方差法(大津法,OTSU)

最大类间方差法(大津法,OTSU)

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

ω1=N1M×N(1.1)

ω2=N2M×N(1.2)

N1+N2=M×N(1.3)

U=ω1×u1+ω2×u2(1.4)

g=ω1×(uu1)2+ω2×(uu2)2(1.5)

将式(1.5)代入式(1.6),得到等价公式:
g=ω1×ω2×(u1u2)2(1.7)

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

OpenCV代码:

int myOtsu(const IplImage *frame) //大津法求阈值
{

#define GrayScale 256 //frame灰度级

    int width = frame->width;
    int height = frame->height;
    int pixelCount[GrayScale]={0};
    float pixelPro[GrayScale]={0};
    int i, j, pixelSum = width * height, threshold = 0;
    uchar* data = (uchar*)frame->imageData;

    //统计每个灰度级中像素的个数
    for(i = 0; i < height; i++)
    {
        for(j = 0;j < width;j++)
        {
            pixelCount[(int)data[i * width + j]]++;
        }
    }

    //计算每个灰度级的像素数目占整幅图像的比例
    for(i = 0; i < GrayScale; i++)
    {
        pixelPro[i] = (float)pixelCount[i] / pixelSum;
    }

    //遍历灰度级[0,255],寻找合适的threshold
    float w0, w1, u0tmp, u1tmp, u0, u1, deltaTmp, deltaMax = 0;
    for(i = 0; i < GrayScale; i++)
    {
        w0 = w1 = u0tmp = u1tmp = u0 = u1 = deltaTmp = 0;
        for(j = 0; j < GrayScale; j++)
        {
            if(j <= i)   //背景部分
            {
                w0 += pixelPro[j];
                u0tmp += j * pixelPro[j];
            }
            else   //前景部分
            {
                w1 += pixelPro[j];
                u1tmp += j * pixelPro[j];
            }
        }
        u0 = u0tmp / w0;
        u1 = u1tmp / w1;
        deltaTmp = (float)(w0 *w1* pow((u0 - u1), 2)) ;
        if(deltaTmp > deltaMax)
        {
            deltaMax = deltaTmp;
            threshold = i;
        }
    }
    return threshold;
}

参考文献:Nobuyuki Otsu发表的原文
“A Threshold Selection Method from Gray-Level Histograms,” Systems, Man and Cybernetics, IEEE Transactions on , vol.9, no.1, pp.62-66, Jan. 1979

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值