图像二值化是图像处理中一项非常重要的基本方法,一般可作为众多图像处理方法的预处理技术,如边缘提取、目标识别、形状处理、图像分割及光学字符识别等都可以先将图像进行二值化后再进行后续处理[1-5]。二值化方法大多都为基于阈值的方法,即寻找一个合适的阈值将原图像的像素灰度分为大于阈值和小于阈值的两类,从而得到二值化的结果,因此,阈值的选取对二值化的结果起着决定性的作用。目前,基于阈值的二值化方法可以分为两类,即全局阈值法和局部阈值法[6-8]。
全局阈值法[9]对整个图像采用单一的阈值,将图像中每个像素灰度值与阈值进行比较,再依据比较结果将其分为背景或目标对象。该类方法对于目标和背景的像素灰度明显分离的图像效果较好,但对于背景复杂或光照不均匀的图像则无法得到满意的效果。为了克服全局阈值法的缺点,一些学者提出了一类局部阈值方法,这类方法不再选用统一的阈值,而是将每个点与其局部邻域的其他像素点进行比较,根据局部邻域像素灰度分布特性自适应调节阈值,每个像素点依据局部阈值再进行二值化。现今,典型的局部阈值法有Bernsen法[10-11]、Niblack法[12-13]等。大量学者经过实验发现,对于光照不均匀或对比度差的图像,使用局部阈值法可以得到更好的二值化效果,但是该类方法仍然存在缺陷,不可避免地导致二值化结果中部分区域存在虚假目标或目标对象断裂等问题。针对此种情况,Madhuri等[14]先将原始图像进行高斯滤波,再利用Bernsen方法对原图和高斯滤波后的图像分别求出阈值,然后对这两个阈值进行加权处理得到最终的阈值进行二值化,该方法能够在一定程度上消除噪声干扰,但是仍然没有解决Bernsen算法进行强制二值化的问题。由此,不少学者提出了一些其他的改进方法,这些方法主要针对图像细节对算法的各种参数进行调控,以求在复杂光照下能够得到较为完整地保留细节的二值化结果[11, 15]。这类改进方法常用的手段是:首先获得一个全局阈值,再将每个像素与该阈值相比较,若差别非常大,则直接判定该像素为背景或目标;若差别较小且在一定范围内,则一般先用Bernsen算法或Niblack算法求得一个阈值,再将该阈值与整幅图像的全局阈值进行加权后求得一个最终的新阈值,利用新阈值再将像素判定为背景或目标。经过这类方法的处理,图像二值化结果存在的目标虚假或目标断裂的问题可以得到一定的缓解,但有些情况下获得的结果仍然不能满足需要。
针对上述情况,本文提出了一种基于图像分块思想的二值化方法。该方法不再是简单地将整幅图像的全局阈值和局部窗口阈值相结合,而是首先将一幅图像分为若干子块,通过计算每个子块内所有像素的平均绝对偏差来考察其像素灰度变化情况。接着利用一定大小的局部窗口在整幅图像中滑动,计算不同子块在局部窗口中所占的面积比例并求得对应的比例因子,将该因子作为加权系数将不同子块的平均绝对偏差进行加权求和之后得到新阈值,利用该阈值判断局部窗口内像素灰度变化是否为平坦(或剧烈)区域,再针对不同的区域设计了局部窗口中心像素点的二值化具体方案。
1 Niblack及Bernsen算法及其存在的问题Niblack算法是一种典型的局部阈值二值化方法,图像每个像素点与通过局部邻域计算得到的阈值相比较进行二值化。局部阈值的计算方法为:设f(x, y)是图像某一点(x, y)的灰度值,则该点的局部阈值是在以其为中心的一个w×w大小的窗口内计算得到的,计算公式如下:
$T(x,y) = m(x,y) + k*\sigma (x,y)$ | (1) |
其中:m(x, y)和σ(x, y)分别是窗口内所有像素点的平均灰度和均方差;k是偏差系数,其值由经验预先设定,一般取值范围为0.1~0.5。
Bernsen算法是另一种流行的局部阈值二值化方法,局部阈值的计算公式如下:
$\begin{array}{l} T(i,j) = 0.5*(\max I(i + m,j + n) + \\ \min I(i + m,j + n)) \end{array}$ | (2) |
其中:I(i, j)是灰度图像的某个像素点,m∈[-w, w], n∈[-w, w],w为窗口宽度的一半。
Niblack算法和Bernsen算法的阈值均由考察点的局部邻域像素灰度决定,该阈值可以随着局部区域的变化而动态调整,因此比全局阈值二值化有更好的自适应能力,但这种局部阈值思想会导致新的问题出现。若某个局部窗口中的像素绝大部分甚至全部是目标(或背景)像素,而由于光照等因素使得目标(或背景)像素的灰度值分布不均匀时,会造成该窗口内本应属于同一类的像素被强行二值化为不同类,从而产生虚假目标或使得目标断裂。因此,如何在可以动态计算局部阈值的同时,又能够尽量减少强行二值化,是需要进一步研究的问题。
2 基于图像分块的局部阈值二值化方法以往针对传统局部阈值二值化算法进行改进的大部分方法中,都是先对整幅图像计算一个阈值T1,T1通常由计算整个图像的平均值、方差或像素灰度的最大值与最小值的均值而得到。然后对局部窗口内的像素再次计算一个阈值T2,T2往往通过计算该局部窗口内像素的平均值与方差的偏差或窗口内像素灰度最大值与最小值的均值得到。最后,再将T1和T2进行加权求和得到最终的阈值,该阈值就是进行图像二值化的依据。
本文提出的基于图像分块的二值化方法,最大的不同之处在于将图像进行了分块,将图像分块后,能够得到更加细致的图像不同部分的子块中像素灰度变化情况。当一定大小的局部窗口在图像中滑动时,综合分析该窗口内像素分布状态μ1及窗口模板覆盖的所有子块内的像素分布状态μ2,将μ1与μ2进行比较后,判断局部窗口内像素灰度分布是否为平坦(或剧烈)区域,再根据不同区域给出具体的二值化方案。在新方法中,不再将μ1和整幅图像的像素分布情况进行比较,而是将μ1和包含自身但比自身更大区域的μ2比较,这样是为了能够更加准确地分析出局部窗口内像素灰度的变化情况。首先判断局部窗口内区域是否属于像素灰度变化平坦(或剧烈)区域,再根据不同的区域给出不同的二值化方法,可以提高后续二值化的准确度。
2.1 图像分块在新算法中,图像首先被分成若干子块,具体分块方法如图 1所示。外矩形框代表整幅图像,内部细线虚线矩形框代表图像分成的若干子块,粗线矩形框代表局部滑动窗口,粗线虚线矩形框代表局部窗口模板下覆盖的所有子块组成的图像区域。实验发现,每个子块如果选取太大,运算成本则会大幅增加,并且发现如若每个子块选取大于3×3的图像块时,得到的二值化结果与选取3×3的图像块的结果相比并没有明显提升,因此本文每个子块选择为3×3的图像块(如图 1中左上角子块1的划分方法),共选取同样大小的9个子块。
新算法依次考察图像被分成的若干子块区域内像素灰度的变化情况,考察的方法是计算子块区域内所有像素的平均绝对偏差T1。一块图像区域的平均绝对偏差代表单个像素灰度值与所有像素灰度平均值的偏离水平,能够反映该区域内像素值的灰度变化偏向平坦还是剧烈。
2.2 像素灰度变化平坦(或剧烈)区域的二值化 2.2.1 判断灰度变化平坦(或剧烈)区域的方法判断局部滑动窗口内的像素灰度变化情况时,以往的方法常常是同时计算整幅图像与局部窗口内的像素灰度平均值或标准差,然后将这两种平均值或标准差进行比较。但在一幅图像中,往往不同区域的像素灰度变化情况是不同的,有的区域灰度变化较小,而有的区域则变化较为剧烈。若以整幅图像的像素灰度平均值或标准差的大小作为依据,考察某个局部窗口内的像素灰度变化情况是不准确的。
本文提出的算法中取出局部窗口周边的比该窗口自身更大一些的区域,通过比较该区域与局部窗口内的像素灰度变化情况,判断局部窗口内像素灰度变化是否属于平坦(或剧烈)区域。如图 1中,局部窗口模板所覆盖的图像子块有9个,考察局部窗口内像素灰度变化程度时,要首先分析被覆盖的9个子块中的像素情况,具体算法如下:
当局部窗口在整幅图像中滑动时,计算局部窗口中不同图像子块落入的面积比例,将每个子块对应的T1通过该比例进行加权求和后可得到阈值T2,计算公式为:
${T_2} = \sum\limits_{i = 1}^n {{k_i}{T_{1i}}} $ | (3) |
其中:n代表图像子块落入局部窗口中的个数,i代表图像子块标号。T1i为第i个子块对应的平均绝对偏差。ki为第i个子块落入滑动窗口中所占的面积比例因子,该因子可由下式求得:
${k_i} = su{m_i}/sum$ | (4) |
其中:sumi为第i个子块落入滑动窗口中的像素数,sum为滑动窗口中的像素总数。
接着,再计算局部滑动窗口内像素的平均绝对偏差σ,通过比较σ和T2来判断局部窗口区域内像素灰度变化情况,具体比较方法如下所示:
$\left\{ \begin{array}{l} 如果\sigma < \alpha *{T_2},则为灰度变化平坦区域\\ 如果\sigma \ge \alpha *{T_2},则为灰度变化剧烈区域 \end{array} \right.$ | (5) |
其中:α为比较系数,通过大量实验发现,该系数取值为0.5时,效果最佳。
2.2.2 灰度变化平坦区域二值化方法在图像分成若干子块时,利用OTSU算法同时计算每个子块的二值化阈值,再统计不同子块落入局部窗口中的面积比例并得到比例因子,最后由各个子块对应的阈值乘以各自比例因子加权求和计算出局部窗口的最终阈值。具体计算方法如式(6) :
$O = \sum\limits_{i = 1}^n {{k_i}{O_{1i}}} $ | (6) |
其中:O1i为第i个子块对应的OTSU阈值。当窗口内为灰度变化平坦区域时,直接判断局部窗口中心像素灰度值与式(6) 计算得到的阈值O的大小,并进行二值化。如式(7) 所示:
$imgBW(x,y) = \left\{ \begin{array}{l} 0,img(x,y) < O\\ 1{\kern 1pt} ,img(x,y) \ge O \end{array} \right.$ | (7) |
其中,img(x, y)和imgBW(x, y)分别为图像在(x, y)像素点处的原灰度值和二值化后的值。
2.2.3 灰度变化剧烈区域二值化方法当局部窗口内像素灰度变化较为剧烈时,像素灰度值分布范围较广,且很可能包含一定数量的灰度值与局部窗口阈值O非常接近的像素,因此,本文算法将像素分为两类后再进行处理,即灰度值远离阈值O的像素和灰度值靠近阈值O的像素。当局部窗口中心像素灰度值远小于(或远大于)阈值O时,直接将该像素置为0(或1) ,如式(8) 所示:
$imgBW(x,y) = \left\{ \begin{array}{l} 0{\kern 1pt} ,img(x,y) < (1 - \beta )*O\\ 1,img(x,y) \ge (1 + \beta )*O \end{array} \right.$ | (8) |
其中:参数β控制局部窗口中心像素灰度值与阈值O的距离,β越大距离越远,本文算法中取0.5。
当局部窗口中心像素灰度值与阈值O接近时,二值化方法如式(9) 所示:
$imgBW(x,y) = \left\{ \begin{array}{l} 0,img(x,y) < Mean + 0.5*\sigma \\ 1,img(x,y) \ge Mean + 0.5*\sigma \end{array} \right.$ | (9) |
其中:Mean和σ分别代表局部窗口像素灰度平均值和平均绝对偏差。
3 实验结果与分析 3.1 实验结果为了充分验证本文算法的有效性,采用了4种不同类型的图像进行了实验。4种图像类型分别为X光图像(图 2)、红外图像(图 3)、自然光照图像(图 4)及车牌图像(图 5)。
本文分别利用OTSU、Bernsen、Niblack、文献[1]、文献[10]、文献[11]以及文中提出的方法等7种算法,对4个种类的4组图像进行二值化实验。实验中,除了OTSU为全局阈值方法以外,其余6种都属于局部阈值二值化方法。
从所有实验结果可以看出,OTSU算法只用唯一的全局阈值将整幅图像进行二值化,对于光照不均匀或背景和目标区域灰度值区分不明显的图像,利用OTSU算法并不能准确地将目标分离出来。局部阈值二值化方法考察了每个像素点局部邻域内的灰度情况,实现了二值化阈值随区域变化而动态调整,因此一般情况下二值化效果比OTSU好,但是,局部阈值方法在窗口内计算阈值时,若窗口内全部为背景(或目标)并且背景(或目标)区域像素灰度分布不均匀时,该窗口内势必会强行二值化,使得本该属于同一背景(或目标)区域的像素而错误分成不同类。如在Bernsen算法和Niblack算法的二值化结果中,往往将图像中的微弱背景强化成目标,从而导致存在大量的虚假目标,如图 2中的(c)和(d)。仔细查看原始图像(a)可以发现,由于灰度分布不均匀,在骨架背景区域有非常微弱的环状条纹,Bernsen算法和Niblack算法进行二值化时,错误地将背景条纹作为目标分离了出来。
文献[1]首先计算了局部窗口内灰度最大值和最小值的均值,然后利用高斯滤波器平滑后再次计算窗口内灰度最大值和最小值的均值,最后将前后两次均值进行加权求和得到新的阈值,若局部窗口中心像素点的灰度值与新阈值的差距足够大则认为是背景,否则认为是目标。通过分析发现,在灰度大面积相似的背景区域,局部窗口中心像素点的灰度值与新阈值非常接近,因此背景大部分区域都被变成了目标(即白色,如图 2(g))。文献[11]中首先计算整幅图像的均值及局部窗口的Bernsen阈值,再将该均值和Bernsen阈值加权求和后得到最终阈值,最后利用该阈值进行二值化。该方法是在原有Bernsen算法上的改进,在二值化时综合考虑了Bernsen阈值和整幅图像的均值,但事实上整幅图像的均值在衡量局部窗口内像素的灰度变化情况时贡献不大,因此,利用文献中的方法得到的二值化结果并不理想。文献[10]首先将局部窗口中灰度的最大值和最小值进行加权求和得到一个阈值,再利用均值滤波器滤波后再次计算该局部窗口的灰度最大值和最小值加权求和得到另一个阈值,将前后两个阈值乘以各自比例因子后求和得到最终的阈值,最后依据此阈值进行二值化。由于采用了均值滤波,图像丢失了一定的细节,因此得到的二值化结果中目标出现断裂的情况,并没有被完整提取出来。图 2中,本文算法的二值化结果为图 2(h),由于采用了图像分块策略,在考察局部窗口像素灰度变化时参考了包含窗口自身且更大区域的像素灰度情况,可以较为准确地判断局部窗口的灰度变化情况,针对不同情况进行合适的处理。通过本文算法得到的二值化结果中多余背景几乎全部被屏蔽,提取出来的目标细节保留良好(如图 2(h)中实线矩形区域部分),图像较为清晰。
图 3是对舰船红外图像的二值化结果。在所有结果中,文献[1]和本文算法结果较为满意,但是文献[1]的结果中多了一些本该属于背景而不属于舰船本身的部分(如图 3(c)、(e)中的虚线矩形区域),另外在目标舰船的细节保留方面,本文算法的结果更胜一筹,如舰船桅杆的最高部等部分(如图 3(h)中的实线矩形区域)。
图 4是对自然光照图像的二值化结果。图 4中的目标是铜质雕像人物,从结果中同样可以看到,本文的二值化最优。文献[11]的结果与本文算法结果最为接近,但是文献[11]的结果中背景仍然存在部分噪声(如图 4(g)中的虚线矩形区域),并且提取得到的目标中部分细节保留不及本文算法的结果,如人物所执手杖的最上部以及人物身后翅膀的纹理(如图 4(h)中的实线矩形区域)。
图 5是对分割出来的车牌的二值化结果。在所有结果中,本文二值化效果最为满意。文献[1]、文献[10]和文献[11]的结果可以提取得到目标,但是背景处理不佳,均存在不同程度的伪目标。另外,采用Gatos提出的方法[16],对车牌图像不同算法二值化结果进行定量分析。该方法具体如式(10) 和式(11) 所示:
$Recall=\frac{{{C}_{\text{TP}}}}{{{C}_{\text{TP}}}+{{C}_{\text{FN}}}}$ | (10) |
$Precision=\frac{{{C}_{\text{TP}}}}{{{C}_{\text{TP}}}+{{C}_{\text{FP}}}}$ | (11) |
其中:CTP代表各算法得到的分割结果与正确分割结果相符的像素点个数;CFN代表本该为目标物体的像素而被错分割为背景部分的像素点个数;CFP代表本该为背景部分而被错分割为目标物体的像素点个数。经过定量计算,对于图 5中各算法的比较结果如表 1所示。
从定量分析的结果可以看到,本文算法的二值化结果最优。
4 结语本文针对目前的局部阈值二值化方法存在的问题,提出了一种基于图像分块思想的局部阈值二值化方法。该方法将图像分解成了若干子块,当局部窗口在图像中滑动时,分析以窗口模板覆盖的若干子块组成的更大区域中像素灰度的变化情况,以此来判断局部窗口内像素灰度分布是否为平坦(或剧烈)区域。若为平坦区域,则根据每个子块加权后的OTSU阈值直接二值化;若为剧烈区域,则再将像素灰度详细划分为远离阈值和靠近阈值两部分,分别给出具体二值化方案。为了能够充分验证算法的性能,本文利用7种算法对X光图像、红外图像、自然光照图像及车牌图像等4种类型的4组图像进行了实验。通过对比实验结果发现,本文算法能够屏蔽绝大部分背景噪声并且同时保留更多的目标细节。
[1] | WEN Y, LU Y, YAN J, et al. An algorithm for license plate recognition applied to intelligent transportation system[J]. IEEE Transactions on Intelligent Transportation Systems, 2011, 12 (3) : 830-845. doi: 10.1109/TITS.2011.2114346 |
[2] | SU Q, HUANG Z, HU Z, et al. Binarization algorithm based on differential evolution algorithm for gray images[C]//Proceedings of the 20129th International Conference on Fuzzy Systems and Knowledge Discovery. Piscataway, NJ:IEEE, 2012:2611-2615. |
[3] | ZHENG L, HE X, SAMALI B, et al. An algorithm for accuracy enhancement of license plate recognition[J]. Journal of Computer and System Sciences, 2013, 79 (2) : 245-255. doi: 10.1016/j.jcss.2012.05.006 |
[4] | 张健.复杂图像文本提取关键技术与应用研究[D].天津:南开大学,2014:34-61. ( ZHANG J. Research on the text detection and extraction from complex images[D]. Tianjin:Naikai University, 2014:34-61. ) |
[5] | 吴锐, 黄剑华, 唐降龙, 等. 基于灰度直方图和谱聚类的文本图像二值化方法[J]. 电子与信息学报, 2009, 31 (10) : 2460-2464. ( WU R, HUANG J H, TANG X L, et al. Method of text image binarization processing using histogram and spectral clustering[J]. Journal of Electronics and Information Technology, 2009, 31 (10) : 2460-2464. ) |
[6] | 张龙, 乔铁柱. 一种红外图像的二值化分割算法研究[J]. 红外技术, 2014, 36 (8) : 649-651. ( ZHANG L, QIAO T Z. An binary segmentation algorithm for infrared image[J]. Infrared Technology, 2014, 36 (8) : 649-651. ) |
[7] | 孟立娜, 韩其睿. 一种全局和局部相结合的二值化方法研究[J]. 计算机技术与发展, 2012, 22 (11) : 116-119. ( MENG L N, HAN Q R. An improved binarization method combined global thresholding with local thresholding[J]. Computer Technology and Development, 2012, 22 (11) : 116-119. ) |
[8] | 郭佳, 刘晓玉, 吴冰, 等. 一种光照不均匀图像的二值化方法[J]. 计算机应用与软件, 2014, 31 (3) : 183-186. ( GUO J, LIU X Y, WU B, et al. Binarization method for images acquired under non-uniform illumination[J]. Computer Applications and Software, 2014, 31 (3) : 183-186. ) |
[9] | OTSU N. A threshold selection method from gray-level histograms[J]. IEEE Transactions on Systems, Man, and Cybernetics, 1979, 9 (1) : 62-66. doi: 10.1109/TSMC.1979.4310076 |
[10] | TALAB A M A, HUANG Z, WANG J. An enhanced Bernsen algorithm approaches for vehicle logo detection[J]. International Journal of Signal Processing, Image Processing and Pattern Recognition, 2014, 7 (4) : 203-210. doi: 10.14257/ijsip |
[11] | 王骏飞, 黄樟灿, TALABA M A. 一种针对图像细节优化的BM二值化方法[J]. 武汉理工大学学报, 2014, 36 (8) : 127-132. ( WANG J F, HUANG Z C, TALAB A M A. New binarization method called BM aim to optimize detail of image[J]. Journal of Wuhan University of Technology, 2014, 36 (8) : 127-132. ) |
[12] | 鲁周迅, 张彬彬. 一种新的手背静脉分割方法[J]. 微电子学与计算机, 2014, 31 (8) : 25-28. ( LU Z X, ZHANG B B. A new segmentation method of hand dorsal vein image[J]. Microelectronics and Computer, 2014, 31 (8) : 25-28. ) |
[13] | 申森, 李艾华, 姚良, 等. 基于小波包和Niblack法的枪号图像二值化算法[J]. 光子学报, 2013, 42 (3) : 354-358. ( SHEN S, LI A H, YAO L, et al. Gun code binary image algorithm based on wavelet packet and Niblack method[J]. Acta Photonica Sinica, 2013, 42 (3) : 354-358. doi: 10.3788/gzxb ) |
[14] | MADHURI L G, CHAKRAVARTHY G. An improved Bernsen algorithm approaches for license plate recognition[J]. Journal of Electronics and Communication Engineering, 2012, 3 (4) : 1-5. doi: 10.9790/2834 |
[15] | 王珺, 彭进业, 吴俊, 等. 复杂光照下的车牌图像二值化新方法[J]. 电子设计工程, 2011, 19 (22) : 147-150. ( WANG J, PENG J Y, WU J, et al. Binarization of license plate images under complex illumination[J]. Electronic Design Engineering, 2011, 19 (22) : 147-150. ) |
[16] | GATOS B, NTIROGIANNIS K, PRATIKAKIS I. ICDAR 2009:Document Image Binarization Contest (DIBCO 2009)[C]//Proceedings of the 200910th International Conference on Document Analysis and Recognition. Washington, DC:IEEE Computer Society, 2009:1375-1382. |