模式识别从0构建—大津法

⌛️本文状态:已完结✔️

一、算法原理

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

图像有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的核卷积之后,得到的均值滤波后的结果。

请我喝杯咖啡吧~

支付宝
微信