摘要: 在很多图像处理的过程中,经常需要对灰度图像进行二值化。本文对几种常用的图像二值化算法进行了阐述,并通过仿真,进行比较研究。根据实验结果,阐明了各种算法的优缺点。
Abstract: The binarization of gray-level image is usually used in the process of image dealing. This paper explains several common image binarization algorithms, such as Otsu method, Bersen method etc. Then comparisons among these algorithms are done through experimental simulations. According to the experimental results , the paper demonstrates the advantages and the limitations of each algorithm.
关键词: 二值化;Otsu算法;Bersen算法
Key words: binarization;Otsu algorithm;Bersen algorithm
中图分类号:TP391.41 文献标识码:A文章编号:1006-4311(2010)05-0142-02
1基本理论
1.1 阈值及二值化
图像二值化是图像处理的基本技术,而选取合适的分割阈值可以说是图像二值化的重要步骤。对于灰度图像,选择合适的一个或几个灰度值 t(0≤t≤255),将目标和背景分开,这个灰度值t称为阈值。如果只选择一个阈值,就称为图像的二值化。二值化又称为灰度分划,凡是需要做文字识别或条纹辨认的图像,皆可利用此方式。二值化的基本过程如下:①对原始图像作中低通滤波,进行图像的预处理,降低或去除噪声;②用算法确定最佳阈值;③凡是像素的灰度值大于这个阈值的设成255,小于这个阈值的设成0。这样处理后的图像就只有黑白两色,从而将灰度范围划分成目标和背景两类,实现了图像的二值化。
1.2 阈值选取算法的分类
一般地,针对图像像素的阈值选取方法可分为全局阈值算法和局部阈值算法两类。全局阈值算法是根据整幅图像选取一个固定的阈值将图像二值化。常用的全局阈值算法有大律法(最大类间方差法或Otsu法)等。全局阈值算法比较简单,实现比较容易,适用于图像的灰度直方图有明显的双峰,此时可选灰度直方图的谷底对应的灰度值作为最佳阈值。但当图像有噪声或光照不均匀时,图像的灰度直方图往往没有明显的双峰或有多个峰,此时该方法受到极大的限制,可采用局部阈值算法。局部阈值算法是将图像划分为若干子图像,结合当前考察的像素点和其邻域像素点的灰度值,确定考察点的阈值。常用的局部阈值法有Bernsen算法等。使用局部算法可以图像的二值化效果更好,抗噪声能力更强。
2常用的二值化算法
2.1 Otsu算法(最大类间方差法)
最大类间方差法是由Otsu于1979年提出的,是基于整幅图像的统计特性,实现阈值的自动选取的,是全局二值化最杰出的代表。Otsu算法的基本思想是用某一假定的灰度值将图像的灰度分成两组(或者叫两类),当两组的类间方差最大时,此灰度值就是图像二值化的最佳阈值。设图像有M个灰度值,取值范围在0~M-1,在此范围内选取灰度值t,将图像分成两组G■和G■,G■包含的像素的灰度值在0~t,G■的灰度值在t+1~M-1,用N表示图像像素总数,n■表示灰度值为i的像素的个数,则:
每一个灰度值i出现的概率为:
p■=n■/N;(1)
G■和G■类出现的概率及均值为:
概率ω■=■p■,ω■■p■=1-ω■(2)
均值μ■=■ip■,μ■=■ip■(3)
类间方差σ(t)■=ω■ω■(μ■-μ■)■(4)
最佳阈值T就是使类间方差最大的t的取值,即T=arg maxσ(t)■,t∈[0,M-1]
Otsu算法可这样理解:阈值T将整幅图像分成前景和背景两部分,当两类的类间方差最大时,此时前景和背景的差别最大,二值化效果最好。
2.2 灰度拉伸法
当目标和背景对比不明显即灰度相差不大或图像有噪声时, Otsu算法的效果都不十分理想。为此,有人提出了灰度拉伸的增强的Otsu算法。灰度拉伸即用图像的原有灰度乘以一个大于1的系数,增加像素间灰度的差别,当系数为1时,即为Otsu算法。可以说Otsu算法是特殊的灰度拉伸法。实际使用时不同的图像可以乘以不同的系数,从而得到比较理想的效果。
2.3 与Otsu类似的算法
在Otsu的算法基础上,引入类内方差σ■■(t)=ω■μ■■ω■μ■■,求类间方差和类内方差的比值s(t)=σ■■(t)/σ■■(t),当s(t)最大时所得到的t就是最佳阈值。
2.4 Bernsen 算法
Bernsen 算法是一种典型的局部二值化算法,是一种动态选择阈值的自适应方法。设图像在像素点(x,y)处的灰度值为f(x,y),考虑以像素点(x,y)为中心的(2w+1)×(2w+1)窗口(2w+1是窗口的宽度),则Bersen算法可以描述如下:
(1)计算图像中各点(x,y)的阈值w(x,y)
w(x,y)=0.5×(maxf(x+m,y+n)+minf(x+m,y+n));(5)
-w?燮m?燮w-w?燮m?燮w
-w?燮n?燮w -w?燮n?燮w
(2)对图像中各像素点(x,y)用w(x,y)值逐点进行二值化
本文仿真时取w=1,即利用当前像素点周围八点邻域来计算当前像素点的Bersen阈值。
2.5 直方图方法
根据图像的直方图统计,找出双峰间的谷值,即最佳阈值。
3仿真实验及结果
本文分别对上述各种算法进行了仿真实验,得到Lena图像的二值化图像结果如图1~图6。
从仿真结果可以看出,图2用Otsu算法二值化后的人物比较清晰,前景和背景分割比较明显,图3的算法是将原图像的灰度进行拉伸,即将原有灰度乘以一个大于1的系数,本实验乘的系数是1.2,从而使像素间差别增大,利于分类,从实验的结果可以看出人物的鼻子和嘴巴较图2呈现了一定的轮廓。图4则是在灰度拉伸的基础上,求得使类间最大且类内方差最小的阈值,从而比图3的效果更好,人物的鼻子和嘴巴的轮廓更为清晰。图5 Bersen算法同样可以人物和背景比较好地分开来。图6是根据原图直方图的峰谷特性取谷值为阈值,分割效果比较理想,方法也非常简单。
4结论
Otsu算法可以得到比较理想的分割效果,分割效率也比较高,此法选出来的阈值比较稳定,分割质量有一定的保证,因而得到广泛的应用,是较为实用的全局二值化算法。但当背景本身的灰度反差极大时,例如由于光照引起的背景具有明显亮点的情况,Otsu算法容易把背景本身当作两类来处理,此时用这种算法不能正确地分出前景和背景。Bersen算法是典型的局部二值化算法,分割效果比较清晰,可以把图像正确地二值化。
参考文献:
[1]Rafael C.Gonzalez.数字图像处理[M].北京:电子工业出版社,2005.
[2]Otsu N. A Threshold Selection Method From Gray-level Histograms[J].IEEE Trans Systems,Man and Cybernetics.1979 9(1):62-66.
[3]吕俊哲.图像二值化算法研究及其实现[J].科技情报开发与经济,2004,(12).
[4]黄春艳等.基于熵的图像二值化方法比较研究[J].河南大学学报(自然科学版),2005年6月,第35卷第2期.
[5]杨枝灵,王开.Visual C++数字图像获取、处理及实践应用[M]. 北京:人民邮电出版社,2003:535-546.
[6]李了了等.基于大律法的图像分块二值化算法[J].微计算机信息(管控一体化),2005,(21),第8-3期.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文