最大类间方差法(Otsu)
由Otsu(大津展之)于1978年提出的最大类间方差法,是引起较多关注的一种阈值选取方法。它是在判决分析或最小二乘原理的基础上推导出来的。
参考文献:
[1] Otsu N. A threshold selection method from gray-level histogram. IEEE Trans,1979;SMC-9;62-66 下载地址
算法思想:
假设一幅图像有L个灰度级[1,2,…,L]。灰度级为i的像素点的个数为ni,那么总的像素点个数就应该为N=n1+n2+…+nL。为了讨论方便,我们使用归一化的灰度级直方图并且视为这幅图像的概率分布:
现在假设我们通过一个灰度级为k的门限将这些像素点划分为两类:C0和C1(背景和目标,或者反之亦然);C0表示灰度级为[1,…,k]的像素点,C1表示灰度级为[k+1,…,L]的像素点。那么,每一类出现的概率以及各类的平均灰度级分别由下面的式子给出:
以及
其中,
分别为灰度级从1到k的累积出现概率和平均灰度级(一阶累积矩),而
是整幅图像的平均灰度级。我们可以很容易验证,对于任意选定的k,都有:
这两类的类内方差由下面的公式给出:
这需要二阶累积矩(second-order cumulative moment,统计学概念)。
为了评价(灰度级k)这个门限“好”的程度,我们需要引入判别式分析中使用的判别式标准来测量(类的分离性测量):
其中:
又根据式(9),可以得出:
这三个式子分别是类内方差、类间方差和灰度级的总方差。然后,我们的问题就简化为一个优化问题,即寻找一个门限k使(12)式中给出的一个目标函数取最大值。
这个观点是出于这样一个猜想,一个好的阈值将会把灰度级分为两类,那么反过来说,就是如果一个门限能够在灰度级上将图像分割为最好的两类的话,那么这个门限就是最好的门限。
上面给出的判别式标准是分别求取λ、κ和η的最大值。然而,对于κ而言,它又等于另外一个,比如κ=λ+1;而对于λ而言,又有η=λ/(λ+1),因为始终存在下面的基本关系:
效果展示:
算法评价:
就最大类间方差算法而言,优点是算法简单,当目标与背景的面积相差不大时,能够有效地对图像进行分割。但是,当图像中的目标与背景的面积相差很大时,表现为直方图没有明显的双峰,或者两个峰的大小相差很大,分割效果不佳,或者目标与背景的灰度有较大的重叠时也不能准确的将目标与背景分开。导致这种现象出现的原因是该方法忽略了图像的空间信息,同时该方法将图像的灰度分布作为分割图像的依据,因而对噪声也相当敏感。所以,在实际应用中,总是将其与其他方法结合起来使用。
最大类间方差法(Otsu)的更多相关文章
- OpenCV2.x自学笔记——最大类间方差法OTSU
推荐用法:(参数勿动) threshold(gray,binary,0,255,CV_THRESH_OTSU+CV_THRESH_BINARY);
- 图像二值化----otsu(最大类间方差法、大津算法)
最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津 法,简称OTSU.它是按图像的灰度特性,将图像分成背景和目标2部分.背景和目标之间的类间方差越大,说明构成图像 ...
- 自适应阈值二值化之最大类间方差法(大津法,OTSU)
最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU.它是按图像的灰度特性,将图像分成背景和目标2部分.背景和目标之间 ...
- Otsu 类间方差法
又称最大类间方差法.是由日本学者大津(Nobuyuki Otsu)于1979年提出的[1],是一种自适合于双峰情况的自动求取阈值的方法.又叫大津法,简称Otsu. 算法提出初衷是是按图像的灰度特性 ...
- 大津法---OTSU算法
简介: 大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出.从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景 ...
- iOS设计模式 - (2)UML类间关系精解
在正式讲设计模式之前, 介绍一下UML类图之间的关系还是非常有必要的, 由于一些教程, 书籍, 包含我之后的文章, 都会大量使用类图, 去描写叙述各个类之间的关系.这是一种非常直观, 简约的方式. 当 ...
- UML 有关类图知识及类间关系
原文链接:https://blog.csdn.net/mj_ww/article/details/53020346 1. 类的含义 类图(Class diagram)显示了系统的静态结构,而系统的静态 ...
- UML(一) 类图及类间关系
原创文章,同步发自作者个人博客,http://www.jasongj.com/uml/class_diagram/ UML类图 UML类图介绍 在UML 2.*的13种图形中,类图是使用频率最高的UM ...
- 类间调用inline函数的效率
问题描述: class A { public: int x, y, k, NY; inline int f(int i, int j, int k) {return ((i)*(NY + 1) * ...
随机推荐
- 关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了)
从Spring框架流行后,几乎根本不用自己写解析配置文件的代码了,但近日一个基础项目(实在是太基础,不能用硕大繁琐的Spring), 碰到了用java.util.Properties读取中文内容(UT ...
- IOS UILabel自动换行
{ UILabel *lb=[[UILabel alloc]initWithFrame:CGRectMake(offset_xx, offset_yy, , )]; [lb setText:@&quo ...
- SHGetSpecialFolderLocation
uses shlobj;function GetDesktopFolder():string;var pItem: PItemIDList; temp: array[0..MAX_PATH] of ...
- 每天进步一点点——负载均衡之DNS域名解析
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38017027 在上一篇文章(http://blog.csdn.net/cywosp/ ...
- VC depends使用说明
Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(动态链接库dll),以及该exe或dll引用了这些dll中的哪些接口,同时也可以看到每个被依赖的dll中的所有导出的函数接口. ...
- mvc_ajax_for form
在上一篇介绍MVC中的Ajax实现方法的时候,曾经提到了除了使用Ajax HTML Helper方式来实现之外,Jquery也是实现Ajax的另外一种方案. 通过get方法实现AJax请求 View ...
- Route Filters
Route Filters The Controller's Middleware, represents a High-Level processing API, executed by the r ...
- Languages
Languages A language class exists inside the system/Core folder, this class have 2 methods: load - L ...
- Intent的介绍
一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作 的动作.动作涉及数据.附加数据进行描 ...
- Spring中BeanPostProcessor
Spring中BeanPostProcessor 前言: 本文旨在介绍Spring动态配置数据源的方式,即对一个DataSource的配置诸如jdbcUrl,user,password,driverC ...