阈值选择"/>
《机器人建模和控制》第十一章计算机视觉之自动阈值选择
大津算法
书本第十一章第三节所讲解的自动阈值选择的算法又叫大津算法。大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出。从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大。
其思想如下:
它是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。大津算法二值化图如下
算法步骤如下:
- 我们假定选择的阈值为 z t z_t zt。图像像素灰度小于 z t z_t zt的像素是背景,图像像素灰度大于 z t z_t zt的像素是前景(即物体)。这就将图像中的像素分成了两个组别。
- 我们定义条件均值和方差。条件均值 q i ( z t ) q_i(z_t) qi(zt)表示图像中某个像素在阈值为 z t z_t zt的条件下属于第 i i i组的概率。 i = 0 i=0 i=0表示背景组, i = 1 i=1 i=1表示前景组。
q 0 ( z t ) = ∑ z = 0 z t H [ z ] N r o w s × N c o l s , q 1 ( z t ) = ∑ z = z t + 1 N − 1 H [ z ] N r o w s × N c o l s q_0(z_t)=\frac{\sum_{z=0}^{z_t}H[z]}{N_{rows}\times N_{cols}},\quad q_1(z_t)=\frac{\sum_{z=z_t+1}^{N-1}H[z]}{N_{rows}\times N_{cols}} q0(zt)=Nrows×Ncols∑z=0ztH[z],q1(zt)=Nrows×Ncols∑z=zt+1N−1H[z]
均值为
μ i = ∑ z = 0 N − 1 z H i [ z ] ∑ z = 0 N − 1 H i [ z ] = ∑ z = 0 N − 1 z H i [ z ] / ( N r o w s × N c o l s ) ∑ z = 0 N − 1 H i [ z ] / ( N r o w s × N c o l s ) \mu_i=\sum_{z=0}^{N-1}z\frac{H_i[z]}{\sum_{z=0}^{N-1}H_i[z]}=\sum_{z=0}^{N-1}z\frac{H_i[z]/(N_{rows}\times N_{cols})}{\sum_{z=0}^{N-1}H_i[z]/(N_{rows}\times N_{cols})} μi=z=0∑N−1z∑z=0N−1Hi[z]Hi[z]=z=0∑N−1z∑z=0N−1Hi[z]/(Nrows×Ncols)Hi[z]/(Nrows×Ncols)
我们可以将两个组的条件均值写为
μ 0 ( z t ) = ∑ z = 0 z t z P ( z ) q 0 ( z t ) , μ 1 ( z t ) = ∑ z = z t + 1 N − 1 z P ( z ) q 1 ( z t ) \mu_0(z_t)=\sum_{z=0}^{z_t}z\frac{P(z)}{q_0(z_t)},\quad \mu_1(z_t)=\sum_{z=z_t+1}^{N-1}z\frac{P(z)}{q_1(z_t)} μ0(zt)=z=0∑ztzq0(zt)P(z),μ1(zt)=z=zt+1∑N−1zq1(zt)P(z)
同理,方差可以写为
σ 0 2 ( z t ) = ∑ z = 0 z t ( z − μ 0 ( z t ) ) 2 P ( z ) q 0 ( z t ) σ 1 2 ( z t ) = ∑ z = z t + 1 N − 1 ( z − μ 1 ( z t ) ) 2 P ( z ) q 1 ( z t ) \begin{aligned} \sigma_0^2(z_t)&=\sum_{z=0}^{z_t}(z-\mu_0(z_t))^2\frac{P(z)}{q_0(z_t)} \\ \sigma_1^2(z_t)&=\sum_{z=z_t+1}^{N-1}(z-\mu_1(z_t))^2\frac{P(z)}{q_1(z_t)} \end{aligned} σ02(zt)σ12(zt)=z=0∑zt(z−μ0(zt))2q0(zt)P(z)=z=zt+1∑N−1(z−μ1(zt))2q1(zt)P(z) - 由于前景和背景像素数目占总像素比重不同,我们对二者方差加权求和,得到组内方差。即 σ w 2 ( z t ) = q 0 ( z t ) σ 0 2 ( z t ) + q 1 ( z t ) σ 1 2 ( z t ) \sigma_w^2(z_t)=q_0(z_t)\sigma_0^2(z_t)+q_1(z_t)\sigma_1^2(z_t) σw2(zt)=q0(zt)σ02(zt)+q1(zt)σ12(zt)
根据大津算法,我们的终极目标就是求使得 σ w 2 ( z t ) \sigma_w^2(z_t) σw2(zt)最小的阈值 z t z_t zt。
易知组内方差求解复杂,根据 σ 2 = σ w 2 + σ b 2 \sigma^2=\sigma_w^2+\sigma_b^2 σ2=σw2+σb2,其中 σ 2 \sigma^2 σ2为常数,不由 z t z_t zt选择的不同而改变。则 σ w 2 \sigma_w^2 σw2最小,则意味着组件方差 σ b 2 \sigma_b^2 σb2最大。而组间方差求解就简单很多了。 - 由式(11.15) σ b 2 = q 0 ( μ 0 − μ ) 2 + q 1 ( μ 1 − μ ) 2 \sigma_b^2=q_0(\mu_0-\mu)^2+q_1(\mu_1-\mu)^2 σb2=q0(μ0−μ)2+q1(μ1−μ)2
由 q 1 = 1 − q 0 q_1=1-q_0 q1=1−q0和 μ = q 1 μ 0 + q 1 μ 1 \mu=q_1\mu_0+q_1\mu_1 μ=q1μ0+q1μ1,我们可以将上式进一步写成 σ b 2 = q 0 ( 1 − q 0 ) ( μ 0 − μ 1 ) 2 \sigma_b^2=q_0(1-q_0)(\mu_0-\mu_1)^2 σb2=q0(1−q0)(μ0−μ1)2
该式在搜索最佳阈值 z t z_t zt时,有许多计算可以重复使用,故可以写成增量的形式。其中
q 0 ( z t + 1 ) = ∑ z = 0 z t + 1 P ( z ) = P ( z t + 1 ) + q 0 ( z t ) q_0(z_t+1)=\sum_{z=0}^{z_t+1}P(z)=P(z_t+1)+q_0(z_t) q0(zt+1)=z=0∑zt+1P(z)=P(zt+1)+q0(zt)
μ 0 ( z t + 1 ) = ∑ z = 0 z t + 1 z P ( z ) q 0 ( z t + 1 ) = ( z t + 1 ) P ( z t + 1 ) p 0 ( z t + 1 ) + q 0 ( z t ) q 0 ( z t + 1 ) μ 0 ( z t ) \begin{aligned} \mu_0(z_t+1)&=\sum_{z=0}^{z_t+1}z\frac{P(z)}{q_0(z_t+1)} \\ &=\frac{(z_t+1)P(z_t+1)}{p_0(z_t+1)}+\frac{q_0(z_t)}{q_0(z_t+1)}\mu_0(z_t) \end{aligned} μ0(zt+1)=z=0∑zt+1zq0(zt+1)P(z)=p0(zt+1)(zt+1)P(zt+1)+q0(zt+1)q0(zt)μ0(zt)
μ 1 ( z t + 1 ) = μ − q 0 ( z t + 1 ) μ 0 ( z t + 1 ) q 1 ( z t + 1 ) = μ − q 0 ( z t + 1 ) μ 0 ( z t + 1 ) 1 − q 0 ( z t + 1 ) \begin{aligned} \mu_1(z_t+1)&=\frac{\mu-q_0(z_t+1)\mu_0(z_t+1)}{q_1(z_t+1)}=\frac{\mu-q_0(z_t+1)\mu_0(z_t+1)}{1-q_0(z_t+1)} \end{aligned} μ1(zt+1)=q1(zt+1)μ−q0(zt+1)μ0(zt+1)=1−q0(zt+1)μ−q0(zt+1)μ0(zt+1)
所以在迭代完所有的可能阈值选项,选择使组间方差最大的 z t z_t zt为阈值。这就是自动选择阈值中的大津算法的全部思想。
参考链接:
=aladdin
.html
更多推荐
《机器人建模和控制》第十一章计算机视觉之自动阈值选择
发布评论