大津算法原理

160 阅读1分钟

大津算法,也被称作最大类间方差法,是一种可以自动确定二值化中阈值的算法。

类内方差类间方差的比值计算得来:

  • 小于阈值tt的类记作00,大于阈值tt的类记作11
  • w0w_0w1w_1是被阈值tt分开的两个类中的像素数占总像素数的比率(满足w0+w1=1w_0+w_1=1);
  • S02{S_0}^2S12{S_1}^2是这两个类中像素值的方差;
  • M0M_0M1M_1是这两个类的像素值的平均值;

即:

  • 类内方差:Sw2=w0 S02+w1 S12{S_w}^2=w_0\ {S_0}^2+w_1\ {S_1}^2
  • 类间方差:Sb2=w0 (M0Mt)2+w1 (M1Mt)2=w0 w1 (M0M1)2{S_b}^2 = w_0 \ (M_0 - M_t)^2 + w_1\ (M_1 - M_t)^2 = w_0\ w_1\ (M_0 - M_1) ^2
  • 图像所有像素的方差:St2=Sw2+Sb2=常数{S_t}^2 = {S_w}^2 + {S_b}^2 = \text{常数}

根据以上的式子,我们用以下的式子计算分离度XX1

X=Sb2Sw2=Sb2St2Sb2X = \frac{{S_b}^2}{{S_w}^2} = \frac{{S_b}^2}{{S_t}^2 - {S_b}^2}

也就是说: argmaxt X=argmaxt Sb2\arg\max\limits_{t}\ X=\arg\max\limits_{t}\ {S_b}^2 换言之,如果使Sb2=w0 w1 (M0M1)2{S_b}^2={w_0}\ {w_1}\ (M_0 - M_1)^2最大,就可以得到最好的二值化阈值tt