图像处理算法2——Otsu最佳阈值分割法

原创 2013年12月04日 18:43:27

    Otsu法是1979年由日本大津提出的。该方法在类间方差最大的情况下是最佳的,即统计鉴别分析中所用的度量。Otsu方法有一个重要的特性,就是它完全以在一幅图像的直方图上执行计算为基础,而直方图是很容易得到的一维阵列。

    具体的公式推理及公式细节就不说了,详见 Conzalez 那本书,我是第三版的,在P.479——P.482 上面。

给出具体步骤如下:

1、计算输入图像的直方图,并归一化。

2、计算累积均值mu,以及全局灰度均值。

3、计算被分到类1的概率q1,和被分到类2的概率q2。

4、用公式计算类间方差,sigma = q1*q2*(mu1 - mu2)*(mu1 - mu2)

5、循环寻找类间方差最大值,并记下此时的阈值,即为最佳阈值。

6、利用最佳阈值进行图像阈值化。

关于otsu部分的程序代码如下:

double getThreshVal_Otsu_8u( const Mat& _src )
{
	Size size = _src.size();
	const int N = 256;
	int i, j, h[N] = {0};
	unsigned char* src;
	//直方图统计
	for( i = 0; i < size.height; i++ )
	{
		src = _src.data + _src.step*i;
		j = 0;
		for(j = 0; j < size.width; j++ )
			h[src[j]]++;
	}
	//像素平均值
	double mu = 0, scale = 1./(size.width*size.height);
	for( i = 0; i < N; i++ )
	{
		mu += i*(double)h[i];//累加均值
	}
	mu *= scale;//平均

	double mu1 = 0, q1 = 0;//q1 ,q2 为类1和类2的概率累积和,mu1=mg*q1
	double p_i, q2, mu2, sigma;
	double max_sigma = 0, max_val = 0;
	//循环求取最大阈值
	for( i = 0; i < N; i++ )
	{
		p_i = h[i]*scale;//直方图归一化
		mu1 *= q1;
		q1 += p_i;
		q2 = 1. - q1;
		mu1 = (mu1 + i*p_i)/q1;
		mu2 = (mu - q1*mu1)/q2;
		sigma = q1*q2*(mu1 - mu2)*(mu1 - mu2);//类间方差
		if( sigma > max_sigma )
		{
			max_sigma = sigma;
			max_val = i;//记下使类间方差最大的阈值
		}
	}
	return max_val;//返回阈值
}

注意,上面这部分传递的图像是 Mat 类型的,和 Iplimage 类型在图像参数部分写法上有一点区别,注意区分开来

显示结果如下:



灰度图像的自动阈值分割(Otsu 法)

灰度图像的自动阈值分割(Otsu 法)机器视觉领域许多算法都要求先对图像进行二值化。这种二值化操作阈值的选取非常重要。阈值选取的不合适,可能得到的结果就毫无用处。今天就来讲讲一种自动计算阈值的方法。这...

基于Otsu算法的图像自适应阈值分割

在图像处理实践中,将灰度图转化为二值图是非常常见的一种预处理手段。有没有一种根据图像自身特点来自适应地选择阈值的方法呢?答案是肯定的!我们今天就来介绍其中最为经典的Otsu算法(或称大津算法)。这个算...

图像处理之基于Otsu阈值二值化

基于Otsu阈值方法实现图像二值化
  • jia20003
  • jia20003
  • 2015年02月23日 12:33
  • 10292

otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用

otsu算法选择使类间方差最大的灰度值为阈值,具有很好的效果 算法具体描述见otsu论文,或冈萨雷斯著名的数字图像处理那本书 这里给出程序流程:...
  • onezeros
  • onezeros
  • 2011年01月13日 22:54
  • 25341

OSTU最佳阈值法二值化原理-matlab和C

觉得这篇介绍OTSU方法挺清楚的。自己又加了一些,希望对初学者有帮助哦~  转载:http://blog.csdn.net/WuHaibing_CVer OTSU算法是由日本学者OTSU于...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

图像二值化----otsu(最大类间方差法、大津算法)

/****************************************以下部分内容为转载**********************************************/ /*...

Otsu的全局阈值处理实现

为了克服图像噪声对图像分割结果的影响,利用图像中与像素具有相似邻域结构的像素提取当前像素的非局部空间信息,构造了基于像素的灰度信息和非局部空间灰度信息的二维直方图,并将此二维直方图引入到Otsu曲线阈...
  • utimes
  • utimes
  • 2013年07月14日 13:05
  • 2010

图像的阈值分割(Optimum Thresholding)

摘 要:本实验主要实现最优阈值。图像分割就是把图像中具有特殊涵义的不同区域分开来,这些区域是互不相交的,每个区域都满足特定区域的一致性。图像分割是图像处理中的重要问题,也是计算机视觉研究中的一个...

灰度图像阈值化分割常见方法总结及VC实现

在图像处理领域,二值图像运算量小,并且能够体现图像的关键特征,因此被广泛使用。将灰度图像变为二值图像的常用方法是选定阈值,然后将待处理图像的每个像素点进行单点处理,即将其灰度值与所设置的门限进行比对,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像处理算法2——Otsu最佳阈值分割法
举报原因:
原因补充:

(最多只允许输入30个字)