OTSU算法对图像二值化

来源:互联网 发布:邀请好友进群js编码 编辑:程序博客网 时间:2024/05/22 02:28

文章来源:http://blog.csdn.net/WuHaibing_CVer

       OTSU算法是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法。
       1. OTSU算法原理简介
       对于一幅图像,设当前景与背景的分割阈值为t时,前景点占图像比例为w0,均值为u0,背景点占图像比例为w1,均值为u1。则整个图像的均值为u = w0*u0+w1*u1。建立目标函数g(t)=w0*(u0-u)^2+w1*(u1-u)^2,g(t)就是当分割阈值为t时的类间方差表达式。OTSU算法使得g(t)取得全局最大值,当g(t)为最大时所对应的t称为最佳阈值。OTSU算法又称为最大类间方差法。
       2.OTSU算法例程
下面是OSTU算法的C语言代码及其测试,代码基于opencv。
[cpp] view plaincopyprint?
下面是上述代码的运行结果图片。其中左边为原图像,右边为使用OTSU算法进行二值化后的图像。
 
 
————————————————————我是分割线————————————————————————
 
以上为转载部分。
以下为另一种表述:
 

OSTU算法目的就是计算出一连通区域的阈值,然后对该区域二值化。

 

数学描述为:令连通区域S,其中象素灰度范围为[0,255],点(x,y)的灰度表示为I(x,y),灰度级x的点的概率为P(x);则OSTU就是求下式达到最大值的灰度级m

 

 

可以证明:

w0*(u0-u)^2+w1*(u1-u)^2与上图公式,这两者是等价的。

 

而显然,第二种方式经过了简化,减少了计算机的工作量,这对于图像处理来说是好的。

 

PS:此算法的简称为OTSU,而很多地方很多论文中均写作OSTU,这是错误的。