1. 程式人生 > >Otsu(大津法,最大類間方差法)

Otsu(大津法,最大類間方差法)

雖然很早就看過這本綠皮書,但是當時是剛入門的小菜鳥,根本就不知道這就是大名鼎鼎的大津法,當時只是覺得Otsu好奇怪的英文名字。 現在就來重新看看這個所謂的大津法: nin_i表示灰度級為i的畫素數。影象中的畫素總數MN為MN=n0+n1+...+nL1MN=n_0+n_1+...+n_{L-1} 歸一化的直方圖具有分量pi=ni/MNp_i=n_i/MN. 我們有公式(1): 在這裡插入圖片描述 我們選擇一個閾值T(k)=k,0<k<L-1,並使用它把輸入影象閾值化處理為兩類C1和C2,其中C1由影象中灰度值範圍在[0,k]內的所有畫素組成,C2類似C1. 畫素被分到類C1中的概率p

1(k)p_1(k)由如下的累計和給出: 在這裡插入圖片描述 同樣 在這裡插入圖片描述 那麼分配到C1的畫素的平均灰度值為: 在這裡插入圖片描述 第一行的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中所有畫素的平均值。 同理有: 在這裡插入圖片描述 而整個影象的平均灰度由下式給出: 在這裡插入圖片描述 如果上面的公式都是正確的我們有: 在這裡插入圖片描述 為了評價級別k處的閾值“質量”我們使用歸一化的無量綱矩陣: 在這裡插入圖片描述
其中σG2\sigma^2_G是全域性方差: 在這裡插入圖片描述 σB2\sigma^2_B我們定義為類間方差,它定義為 在這裡插入圖片描述 其中σG2\sigma^2_G是常數,所以我們只需要使得σB2\sigma^2_B最大即可,而: 在這裡插入圖片描述 所以我們只需要使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)

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*處計算可分性度量. 在這裡插入圖片描述