虽然很早就看过这本绿皮书,但是当时是刚入门的小菜鸟,根本就不知道这就是大名鼎鼎的大津法,当时只是觉得Otsu好奇怪的英文名字。
现在就来重新看看这个所谓的大津法:
nin_i表示灰度级为i的像素数。图像中的像素总数MN为MN=n0+n1+...+nL1MN=n_0+n_1+...+n_{L-1}
归一化的直方图具有分量pi=ni/MNp_i=n_i/MN.
我们有公式(1):
Otsu(大津法,最大类间方差法)
我们选择一个阈值T(k)=k,0<k<L-1,并使用它把输入图像阈值化处理为两类C1和C2,其中C1由图像中灰度值范围在[0,k]内的所有像素组成,C2类似C1.
像素被分到类C1中的概率p1(k)p_1(k)由如下的累计和给出:
Otsu(大津法,最大类间方差法)
同样
Otsu(大津法,最大类间方差法)
那么分配到C1的像素的平均灰度值为:
Otsu(大津法,最大类间方差法)
第一行的p(i/C1)p(i/C_1)表示i已经被分配到C1的前提下,i占C1中所有像素的概率,第二行为简单的贝叶斯变换,因为i已经被分到了C1中,所以P(C1/i)=1P(C_1/i)=1,所以得到第三行的结果,其实第三行的物理意义很容易理解,即0到k的像素占总体像素的平均值除以C1占总体像素的概率,等于C1中所有像素的平均值。
同理有:
Otsu(大津法,最大类间方差法)
而整个图像的平均灰度由下式给出:
Otsu(大津法,最大类间方差法)
如果上面的公式都是正确的我们有:
Otsu(大津法,最大类间方差法)
为了评价级别k处的阈值“质量”我们使用归一化的无量纲矩阵:
Otsu(大津法,最大类间方差法)
其中σG2\sigma^2_G是全局方差:
Otsu(大津法,最大类间方差法)
σB2\sigma^2_B我们定义为类间方差,它定义为
Otsu(大津法,最大类间方差法)
其中σG2\sigma^2_G是常数,所以我们只需要使得σB2\sigma^2_B最大即可,而:
Otsu(大津法,最大类间方差法)
所以我们只需要使m1m2m_1-m_2最大即可,当有多个值使得m1m2m_1-m_2都最大时,我们选择其均值为最佳的分割阈值。

Otsu算法小结如下:
1.计算输入图像的归一化直方图,使用pip_ii=0,1,2,…,L-1表示该直方图的各个分量。
2.对于k=0,1,2,…L-1,计算累积和P1(k)P_1(k).
3.对于k=0,1,2…L-1,计算累积均值m(k).
4.计算全局灰度均值mGm_G
5.对于K=0,1,2,…,L-1,计算类间方差σB2\sigma^2_B
6.得到Otsu阈值kk*,即使得σB2\sigma^2_B最大的k值。如果最大值不唯一,用相应检测到的各个最大值k的平均值得到kk*
7.在k=k*处计算可分性度量.
Otsu(大津法,最大类间方差法)

相关文章: