Otsu算法理解
L:灰度級(0∼255爲256個灰度級)
ni:表示灰度級爲i的像素個數
MN:圖像的像素,即
MN=n0+n1+n2+...+nL−1=high∗wide
則當直方圖歸一化後有分量pi=ni/MN即每個灰度級在全圖中所佔的比重,則有
i=0∑L−1pi=1,pi≥0(1)
然後我們假設我們有一個閾值T(k)=k,0<k<L−1,將直方圖分爲C1,C2兩個部分,則某一像素在C1中的概率P1(k)如下
P1(k)=i=0∑kpi(2)
同樣的在C2中的概率P2(k)爲
P2(k)=i=k+1∑L−1pi=1−P1(k)(3)
此時分別計算C1區和C2區的平均灰度值m1、m2
m1(k)=i=0∑kiP(i/C1)=i=0∑kiP(C1/i)P(i)/P(C1)=P1(k)1i=0∑kipi(4)
其中,P1(k)由式(1)給出。第一行中的P(i/C1)是值i在C1中的概率,則通過貝葉斯公式
P(i/C1)=P(C1/i)P(i)/P(C1)
已知i在C1內,所以P(C1/i)=1,由(2)知P1(k)=P(C1)。則m1(k)=P1(k)1∑i=0kipi
同理可得C2中的m2
m2(k)=i=k+1∑L−1iP(i/C2)=P2(k)1i=k+1∑L−1ipi(5)
到k的累加均值則爲
m(k)=i=0∑kipi(6)
全局均值,即整張圖像的平均灰度
mG=i=0∑L−1ipi(7)
則得到
P1m1+P2m2=mG(8)
和
P1+P2=1(9)
那麼接下來該如何說明這個閾值k的效果呢,我們使用了歸一化的無量綱矩陣(我也不知道這個名詞是啥意思,但是看下去,你能懂它的內容):
η=σG2σB2(10)
其中,σG2是全局方差[即圖像中所有像素的灰度方差,就是每個像素和均值對比]:
σG2=i=0∑L−1(i−mG)2pi(11)
σB2是類間方差,定義爲
σB2=P1(m1−mG)2+P2(m2−mG)2(12)
將(8)和(9)代入該表達式(12),接着再將(3)和(7)代入,可寫爲:
σB2=P1P2(m1−m2)2=P1(1−P1)(mGP1−m)2(13)
從上面的表達式中我們可以看出m1和m2彼此隔得越遠,σB2越大,這表明類間方差是類之間的可分性度量[就是看兩個類之間差的多不多],
然後通過(11)我們知道σG2在一張圖中是固定的,即爲一個常數,若我們想要質量η好的話就要最大化σB2,即在閾值集合k中找到一個k∗使得
σB2(k∗)=0≤k≤L−1maxσB2(k)(14)
找到k∗後便可對圖像進行分割:
g(x,y)={1,f(x,y)>k∗0,f(x,y)≤k∗(15)