虽然很早就看过这本绿皮书,但是当时是刚入门的小菜鸟,根本就不知道这就是大名鼎鼎的大津法,当时只是觉得Otsu好奇怪的英文名字。
现在就来重新看看这个所谓的大津法:
表示灰度级为i的像素数。图像中的像素总数MN为
归一化的直方图具有分量.
我们有公式(1):
我们选择一个阈值T(k)=k,0<k<L-1,并使用它把输入图像阈值化处理为两类C1和C2,其中C1由图像中灰度值范围在[0,k]内的所有像素组成,C2类似C1.
像素被分到类C1中的概率由如下的累计和给出:
同样
那么分配到C1的像素的平均灰度值为:
第一行的表示i已经被分配到C1的前提下,i占C1中所有像素的概率,第二行为简单的贝叶斯变换,因为i已经被分到了C1中,所以,所以得到第三行的结果,其实第三行的物理意义很容易理解,即0到k的像素占总体像素的平均值除以C1占总体像素的概率,等于C1中所有像素的平均值。
同理有:
而整个图像的平均灰度由下式给出:
如果上面的公式都是正确的我们有:
为了评价级别k处的阈值“质量”我们使用归一化的无量纲矩阵:
其中是全局方差:
我们定义为类间方差,它定义为
其中是常数,所以我们只需要使得最大即可,而:
所以我们只需要使最大即可,当有多个值使得都最大时,我们选择其均值为最佳的分割阈值。
Otsu算法小结如下:
1.计算输入图像的归一化直方图,使用i=0,1,2,…,L-1表示该直方图的各个分量。
2.对于k=0,1,2,…L-1,计算累积和.
3.对于k=0,1,2…L-1,计算累积均值m(k).
4.计算全局灰度均值。
5.对于K=0,1,2,…,L-1,计算类间方差。
6.得到Otsu阈值,即使得最大的k值。如果最大值不唯一,用相应检测到的各个最大值k的平均值得到。
7.在k=k*处计算可分性度量.