大津法是一种自适应的灰度图像阈值算法。可以用该算法实现图像分割。

图像有L阶灰度,$n_i$ 是灰度为 $i$ 的像素数,图像总像素数 $N=n_1+n_2+...+n_L$

灰度为 $i$ 的像素概率:$p_i=\dfrac{n_i}{N}$ 。

类间方差:

$$
\sigma^2_B(k)=\omega_1(\mu_1-\mu)^2+\omega_2(\mu_2-\mu)^2
$$

其中:

$$
\mu_1=\sum_{i=0}^ki\cdotp p(i|C_1)=\sum_{i=0}^ki\cdotp\dfrac{p_i}{\sum^k_{i=0}p_i}=\dfrac{\sum_{i=0}^ki\cdotp p_i}{\omega_1}
$$

$$
\mu_2=\dfrac{\sum^L_{i=k+1}ip_i}{\omega_2}
$$

$$
\mu=\sum_{i=1}^Li\cdotp p_i
$$

$$
\omega_1=\sum_{i=1}^kp_i
$$

$$
\omega_2=\sum_{i=k+1}^Lp_i=1-\omega_1
$$

其中,选取前k个像素等级为背景,$\mu_1$ 为背景均值,$\mu_2$ 为前景均值,$\mu$ 为总均值。$\omega_1$ 为背景概率,$\omega_2$ 为前景概率。

做实验时,只需遍历k,选取可以使类间方差最大的k为最终的阈值即可。

实验结果

使用MATLAB完成实验,源代码及图片已上传到Github

实验结果如下图所示,第一张图片为原始图片,第二张图片为原始图片的灰度分布。第三张图片为大津法分割后的二进制图片。第四张为第三张图片经过5*5的核卷积之后,得到的均值滤波后的结果。

otsu

标签: 机器学习

添加新评论