Otsu算法理解

Otsu算法理解

L:(0255256)L: 灰度級(0\sim255爲256個灰度級)
ni:in_i: 表示灰度級爲i的像素個數
MN:MN:圖像的像素,即
MN=n0+n1+n2+...+nL1=highwide \begin{aligned} MN&=n_0+n_1+n_2+...+n_{L-1} \\ &=high*wide \end{aligned}
則當直方圖歸一化後有分量pi=ni/MNp_i=n_i/MN即每個灰度級在全圖中所佔的比重,則有
i=0L1pi=1,pi0(1) \sum_{i=0}^{L-1}p_i = 1,\quad p_i\geq 0 \tag{1}
然後我們假設我們有一個閾值T(k)=k,0<k<L1T(k) = k,0<k<L-1,將直方圖分爲C1C_1C2C_2兩個部分,則某一像素在C1C_1中的概率P1(k)P_1(k)如下
P1(k)=i=0kpi(2) P_1(k)=\sum_{i=0}^{k}{p_i}\tag{2}
同樣的在C2C_2中的概率P2(k)P_2(k)
P2(k)=i=k+1L1pi=1P1(k)(3) P_2(k)=\sum_{i=k+1}^{L-1}{p_i}=1-P_1(k)\tag{3}
此時分別計算C1C_1區和C2C_2區的平均灰度值m1m_1m2m_2
m1(k)=i=0kiP(i/C1)=i=0kiP(C1/i)P(i)/P(C1)=1P1(k)i=0kipi(4) \begin{aligned} m_1(k)&=\sum_{i=0}^{k}iP(i/C_1) \\ &=\sum_{i=0}^{k}iP(C_1/i)P(i)/P(C_1) \tag{4} \\ &=\frac{1}{P_1(k)}\sum_{i=0}^{k}{ip_i} \end{aligned}
其中,P1(k)P_1(k)由式(1)(1)給出。第一行中的P(i/C1)P(i/C_1)是值iiC1C_1中的概率,則通過貝葉斯公式
P(i/C1)=P(C1/i)P(i)/P(C1) P(i/C_1) = P(C_1/i)P(i)/P(C_1)
已知iiC1C_1內,所以P(C1/i)=1P(C_1/i)=1,由(2)(2)P1(k)=P(C1)P_1(k)=P(C_1)。則m1(k)=1P1(k)i=0kipim_1(k)=\frac{1}{P_1(k)}\sum_{i=0}^{k}{ip_i}
同理可得C2C_2中的m2m2
m2(k)=i=k+1L1iP(i/C2)=1P2(k)i=k+1L1ipi(5) \begin{aligned} m_2(k) &= \sum_{i=k+1}^{L-1}{iP(i/C_2)} \\ &=\frac{1}{P_2(k)}{\sum_{i=k+1}^{L-1}{ip_i}} \tag{5} \end{aligned}
到k的累加均值則爲
m(k)=i=0kipi(6) m(k)=\sum_{i=0}^{k}{ip_i}\tag{6}
全局均值,即整張圖像的平均灰度
mG=i=0L1ipi(7) m_G = \sum_{i=0}^{L-1}{ip_i}\tag{7}
則得到
P1m1+P2m2=mG(8) {P_1}{m_1}+{P_2}{m_2}={m_G}\tag{8}

P1+P2=1(9) {P_1}+{P_2}={1}\tag{9}
那麼接下來該如何說明這個閾值kk的效果呢,我們使用了歸一化的無量綱矩陣(我也不知道這個名詞是啥意思,但是看下去,你能懂它的內容):
η=σB2σG2(10) \eta = \frac{\sigma_B^2}{\sigma_G^2}\tag{10}
其中,σG2\sigma_G^2是全局方差[即圖像中所有像素的灰度方差,就是每個像素和均值對比]:
σG2=i=0L1(imG)2pi(11) {\sigma_G^2}=\sum_{i=0}^{L-1}{(i-mG)^2}{p_i}\tag{11}
σB2\sigma_B^2是類間方差,定義爲
σB2=P1(m1mG)2+P2(m2mG)2(12) \sigma_B^2 = {P_1(m_1-m_G)^2}+{P_2(m_2-m_G)^2}\tag{12}
(8)(8)(9)(9)代入該表達式(12)(12),接着再將(3)(3)(7)(7)代入,可寫爲:
σB2=P1P2(m1m2)2=(mGP1m)2P1(1P1)(13) \begin{aligned} {\sigma_B^2} &= {P_1}{P_2}{(m_1-m_2)^2} \\ &=\frac{({m_G}{P_1}-m)^2}{P_1({1-P_1})}\tag{13} \end{aligned}
從上面的表達式中我們可以看出m1m_1m2m_2彼此隔得越遠,σB2\sigma_B^2越大,這表明類間方差是類之間的可分性度量[就是看兩個類之間差的多不多],
然後通過(11)(11)我們知道σG2\sigma_G^2在一張圖中是固定的,即爲一個常數,若我們想要質量η\eta好的話就要最大化σB2\sigma_B^2,即在閾值集合kk中找到一個kk^*使得
σB2(k)=max0kL1σB2(k)(14)\sigma_B^2(k^*)=\max\limits_{0\leq{k}\leq{L-1}}{\sigma_B^2}(k) \tag{14}
找到kk^*後便可對圖像進行分割:
g(x,y)={1,f(x,y)>k0,f(x,y)k(15) g(x,y)= \begin{cases} &1,\quad f(x,y)>k^*\\ &0,\quad f(x,y)\leq k^* \end{cases}\tag{15}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章