用otsu算法进行图像分割

2024-01-26 12:05:00 来源 : haohaofanwen.com 投稿人 : admin

下面是好好范文网小编收集整理的用otsu算法进行图像分割,仅供参考,欢迎大家阅读!

最优阈值分割图像的基本思想

OTSU是阈值分割中一种常用的算法,它可以根据图像自动生成最佳分割阈值。OTSU的核心思想是类间方差最大化。

令 left{ 0,1,2,...,L-1 right} 表示一幅大小为 Mtimes N 像素的数字图像中的 L 个不同的灰度级, n_{i} 表示灰度级为 i 的像素数。

图像中的像素总数为: n=n_{0}+n_{1}+...+n_{L-1} 。

像素的灰度级为 i 的概率为: p_{i}=frac{n_{i}}{n} 。且有: sum_{i=0}^{L-1}{p_{i}}=1 。

现在,假设我们选择一个阈值 T(k)=k,0<k<L-1 。并使用它把输入图像阈值化处理为两类 C_{1} 和 C_{2} ,其中C_{1}由图像中灰度值在范围 [0,k] 内的所有像素组成, C_{2} 由灰度值在范围 [k+1,L-1] 内所有像素组成。

则像素被分类到C_{1}中的概率为: P_{1}(k)=sum_{i=0}^{k}{p_{i}} (1)

像素被分类到C_{2}中的概率为:P_{2}(k)=sum_{i=k+1}^{L-1}{p_{i}}=1-P_{1}(k)

则分配到类C_{1}的像素的平均灰度值为:

m_{1}(k)=sum_{i=0}^{k}{iP(i|C_{1})}=sum_{i=0}^{k}{frac{iP(C_{1}|i)P(i)}{P(C_{1})}}=frac{1}{P_{1}(k)}sum_{i=0}^{k}{ip_{i}}

类似的,分配到类 C_{2} 中的像素的平均灰度值为:

m_{2}(k)=sum_{i=k+1}^{L-1}{iP(i|C_{2})}=frac{1}{P_{2}(k)}sum_{i=k+1}^{L-1}{ip_{i}}

灰度级为0到k的像素的平均灰度值为: m_{k}=sum_{i=0}^{k}{ip_{i}} (2)

整个图像的平均灰度值为:m_{G}=sum_{i=0}^{L-1}{ip_{i}} (3)

可以验证以下式成立:

P_{1}(k)cdot m_{1}(k)+P_{2}(k)cdot m_{2}(k)=m_{G} (4)

P_{1}(k)+P_{2}(k)=1 (5)

则类间方差定义为(为方便书写省略 k):(由式(4)、(5)可推得)

sigma_{B}^{2}=P_{1}(m_{1}-m_{G})^{2}+P_{2}(m_{2}-m_{G})^{2}=P_{1}P_{2}(m_{1}-m_{2})=frac{(m_{G}P_{1}-m)^{2}}{P_{1}(1-P_{1})}(6)

全局方差为:

sigma_{G}^{2}=sum_{i=0}^{L-1}{(i-mG)^{2}p_{i}} (7)

令 eta=frac{sigma_{B}^{2}(k)}{sigma_{G}^{2}} ,其中 sigma_{B}^{2}(k)=frac{(m_{G}cdot P_{1}(k)-m(k))^{2}}{P_{1}(k)cdot(1-P_{1}(k))} (8)

由式(6)可知,两个均值 m_{1}m_{2}彼此隔得越远, sigma_{B}^{2}越大,这表明类间方差是类之间的可分性度量。因为sigma_{G}^{2} 是一个常数,所以 eta 是一个归一化后的可分性度量

所以我们要求得最佳阈值 k^{*} ,使得 sigma_{B}^{2} 最大,即:

sigma_{B}^{2}(k^{*})=max_{0 leq kleq L-1}{sigma_{B}^{2}(k)}

OTSU算法步骤

计算输入图像的归一化直方图。使用 p_{i} , i=0,1,2,...,L-1 表示该直方图的各个分量。

用式(1),对于 k=0,1,2,...,L-1 ,计算 P_{1}(k) 。

用式(2),对于 k=0,1,2,...,L-1 ,计算 m(k) 。

用式(3)计算全局灰度均值 m_{G} 。

用式(8),对于 k=0,1,2,...,L-1,计算类间方差 sigma_{B}^{2}(k) 。

得到OTSU阈值 k^{*},即使得sigma_{B}^{2}(k)最大的 k 值。如果最大值不唯一,则将各个最大k 值平均得到 k^{*} 值。

在 k=k^{*} 处计算可分性度量 eta 。


相关文章

    暂无相关信息
专题分类