⌛️本文状态:已完结✔️
大津法是一种自适应的灰度图像阈值算法。可以用该算法实现图像分割。
图像有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的核卷积之后,得到的均值滤波后的结果。