《机器人建模和控制》第十一章计算机视觉之自动阈值选择

大津算法

书本第十一章第三节所讲解的自动阈值选择的算法又叫大津算法。大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出。从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大。
其思想如下
它是按图像的灰度特性,将图像分成背景和前景两部分。因方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。大津算法二值化图如下
在这里插入图片描述
算法步骤如下:

  1. 我们假定选择的阈值为 z t z_t zt。图像像素灰度小于 z t z_t zt的像素是背景,图像像素灰度大于 z t z_t zt的像素是前景(即物体)。这就将图像中的像素分成了两个组别。
  2. 我们定义条件均值和方差。条件均值 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×Ncolsz=0ztH[z],q1(zt)=Nrows×Ncolsz=zt+1N1H[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=0N1zz=0N1Hi[z]Hi[z]=z=0N1zz=0N1Hi[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=0ztzq0(zt)P(z),μ1(zt)=z=zt+1N1zq1(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=0zt(zμ0(zt))2q0(zt)P(z)=z=zt+1N1(zμ1(zt))2q1(zt)P(z)
  3. 由于前景和背景像素数目占总像素比重不同,我们对二者方差加权求和,得到组内方差。即 σ 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最大。而组间方差求解就简单很多了。
  4. 由式(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=1q0 μ = 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(1q0)(μ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=0zt+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=0zt+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)=1q0(zt+1)μq0(zt+1)μ0(zt+1)
    所以在迭代完所有的可能阈值选项,选择使组间方差最大的 z t z_t zt为阈值。这就是自动选择阈值中的大津算法的全部思想。

参考链接:
https://baike.baidu.com/item/大津算法/8535962?fr=aladdin
https://blog.csdn.net/qq_35608277/article/details/78594474
https://www.cnblogs.com/ranjiewen/p/6385564.html

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值