b0=0(黑),b1=1(白),即为我们通常所说的图像二值化。
一般意义下,阈值运算可以看作是对图像中某点的灰度、该点的某种局部特性以及该点在图像中的位置的一种函数,这种阈值函数可记作:
T(x,y,n(x,y),f(x,y))式中,f(x,y)是点(x,y)的灰度值;n(x,y)是点(x,y)的局部邻域特性.根据
对T的不同约束,可以得到3种不同类型的阈值,即
(1)点相关的全局阈值T=T(f(x,y)):
只与点的灰度值有关
(2)区域相关的全局阈值T=T(n(x,y),f(x,y)):
与点的灰度值和该点的局部邻域特征有关(3)局部阈值或动态阈值T=T(x,y,n(x,y),f(x,y)):
与点的位置、该点的灰度值和该点邻域特征有关因此本文分三大类对阈值选取技术进行综述:
1)基于点的全局阈值方法;2)基于区域的全局阈值方法3)局部阈值方法和多阈值方法1.3阈值分割方法的分类全局阈值法指利用全局信息对整幅图像求出最优分割阈值,可以是单阈值,也可以是多阈值;局部阈值法是把原始的整幅图像分为几个小的子图像,再对每个子图像应用全局阈值法分别求出最优分割阈值。
其中全局阈值法又可分为基于点的阈值法和基于区域的阈值法。
阈值分割法的结果很大程度上依赖于阈值的选择,因此该方法的关键是如何选择合适的阈值。
由于局部阈值法中仍要用到全局阈值法,因此本文主要对全局阈值法中基于点的阈值法和基于区域的阈值法分别进行了研究。
根据阈值法的原理可以将阈值选取技术分为三大类1.3.1基于点的全局阈值方法基于点的全局阈值算法与其他几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统。
1.3.2基于区域的全局阈值方法对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。
1.3.3局部阈值法和多阈值法局部阈值(动态阈值)当图像中有如下一些情况:
有阴影,照度不均匀,各处的对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。
有一种解决办法就是用与象素位置相关的一组阈值(即阈值使坐标的函数)来对图
像各部分分别进行分割。
这种与坐标相关的阈值也叫动态阈值,此方法也叫变化阈值法,或自适应阈值法。
这类算法的时间复杂性和空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。
多阈值法很显然,如果图像中含有占据不同灰度级区域的几个目标,则需要使用多个阈值才能将他们分开。
其实多域值分割,可以看作单阈值分割的推广。
2基于点的全局阈值分割方法2.1基于最小值点阈值的方法实现图像切割如果将直方图的包络看做1条曲线,刚选取直方图的谷可借助求曲线极小值的方法。
设用H(z)代表直方图,那么极小值点应满足2抖h(z)h(z)=0和>02抖zz和这些极小值点对应的灰度值就可用作分割阈值。
2.2基于最优阈值的方法实现图像切割有时目标和背景的灰度值有部分交错,用1个全局阈值并不能将它们绝对分开。
这时常希望能减小误分割的概率,而选取最优阈值是一种常用的方法。
设一幅图像仅包含2类主要的灰度值区域(目标和背景),它的直方图可看成灰度值概率密度函数p(z)的一个近似。
这个密度函数实际上是目标和背景的2个单峰密度函数之和。
如果已知密度函数的形式,那么就有可能选取1个最优阈值把图像分成2类区域而使误差最小。
设有这样1幅混有加性高斯噪声的图像,它的混合概率密度是轾轾22(z-m)P(z-m)P犏犏1122p(z)=Pp(z)+Pp(z)=exp-+exp-犏犏1122222s2s2ps2ps臌臌1212mmss其中和分别是背景和目标区域的平均灰度值,和分别是关于均值1212PP的均方差,和分别是背景和目标区域灰度值的行验概率。
根据概率定义有12PP+=1,所以混合概率密度中有5个未知的参数。
如果能求出这些参数就可以12确定混合概率密度。
mm假设<,需定义1个阈值T使得灰度值小于T的像素分割为背景而使得12
灰度值大于T的像素分割为目标。
这时错误地将1个目标像素划分为背景的概率和1个背景像素错误地划分为目标的概率分别是TòE(T)=p(z)dz12-¥òE(T)=p(z)dz21T总的误差概率是E(T)=PE(T)+PE(T)2112为求得使该误差最小的阈值可将E(T)对T求导并令导数为零,这样得到:
Pp(T)=Pp(T)1122将这个结果用于高斯密度,可得到解一元二次方程的根判别式的系数ìïïïï22A=s-sï12ïï()22B=2ms-msí1221ïïïnspïåï2222222=-+21Csmsm2ssXln()ï122112iïspïîi=112该二次在一般情况下有2个解。
如果2个区域的方差相等,刚只有1个最优阈值2m+mps122T=+ln()optimal2m-mp1212.3基于迭代的方法实现图像切割迭代法是基于逼近的思想,其步骤如下:
(1)求出图象的最大灰度值和最小灰度值,分别记为Zmax和Zmin,令初始阈值T0=(Zmax+Zmin)/2;
(2)根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB;(3)求出新阈值TK+1=(ZO+ZB)/2;(4)若TK=TK+1,则所得即为阈值;否则转2,迭代计算。
迭代所得的阈值分割的图象效果良好。
基于迭代的阈值能区分出图像的前景和背景的主要区域所在,但在图像的细微处还没有很好的区分度。
但令人惊讶的是,对某些特定图象,微小数据的变化却会引起分割效果的巨大改变,两者的数据只是稍有变化,但分割效果却反差极大经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快地获得满意结果。
但是对于直方图双峰不明显,或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如最大类间方差法。
2.4最大类间方差的方法实现图像切割由Otsu于1978年提出的最大类间方差法以其计算简单、稳定有效,一直广为使用。
从模式识别的角度看,最佳阈值应当产生最佳的目标类与背景类的分离性能,此性能我们用类别方差来表征,为此引入类内方差、类间方差和总体方差。
最大类间方差法计算简单、稳定有效,一直广为使用,是一种受到普遍欢迎的阈值选取方法。
其基本思路是将直方图在某一阈值处分割成两组,当被分成的两组的方差为最大时,得到阈值。
因为方差是灰度分布均匀性的一种量度,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。
图像的灰度级范围是0,1,2,„,L-1,设灰度级i的象素点个数为mi,l-1å图像的象素点的总数为,则灰度级i的出现概率定义为pM=mii0L-1mi在Ostu方法中,阈值t把图像的象素分为C0=(0,1,„,t)pi=,pi=1åM0和C1=(t+1,t+2,„,L-1)两类(分别代表门标与背景)。
CC类出现概率及均值分别为:
0和1tåw=p=w(t)0ii=0L-1åw=P=1-w(t)1ii=t+1tipm(t)åim==0ww(t)i=00L-1ipm(t)-m(t)åiTm==11-w(t)wi=t+11tL-1邋其中:
m(t)=ip,m(t)ipiTii=0i=t+1
CC类的方差:
0和12t(i-m)på20is(t)=0wi=002L-1(i-m)på21is(t)=1wi=t+11222类间方差为:
s(t)=ws+wsm0011222类内方差为:
s(t)=w(m-m)+w(m-m)n00T11T222总体方差为:
s(t)=s+sTmn2sm引入关于t的等价判决准则函数:
h(t)=2sn*最优阈值t通过等价判决准则的最大值得到:
*t=argmaxh(t)t=[0,L-1]即阈值T将图像分成目标,背景两部分,使得两类总方差取得最大值的t,即为最佳分割阈值2.5基于最大熵的方法实现图像切割八十年代以来,许多学者将Shannon信息熵的概念应用于图像阈值化,其基本思想都是利用图像的灰度分布密度函数定义图像的信息熵,根据假设的不同或视角的不同提出不同的熵准则,最后通过优化该准则得到阈值。
Pun[16]通过使后验熵的上限最大来确定阈值。
此方法又称为KSW熵方法。
2.6其它方法实现阈值分割对于基于点的全局阈值选取方法,除上述主要几种之外还许多,但大多都是以上述基本方法为基础,做出的改进方法或者对算法的优化,如使用递推方法以降低算法复杂性。
例如一种使目标和背景差距最大的阈值求取方法,类似于最大类间方差阈值法。
是它的一种简化算法。
又如1984年Dunn等人[23]提出了均匀化误差阈值选取方法,这种方法实质上是要使将背景点误分为目标点的概率等于将目标点误分为背景点的概率。
类似于最小误差阈值法。
近年来有一些新的研究手段被引入到阈值选取中。
比如人工智能,描述了如何用人工智能的方法,寻找直方图的谷底点,作为全局阈值分割。
其它如神经网络,数学形态学,小波分析与变换等等。
总的来说,基于点的全局阈值算法,与其它几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统。
基于区域的全局阈值选取方法对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。
而在上述基于点的全局阈值选取方法中,有一个共同的弊病,那就是它们实际上只考虑了直方图提供的灰度级信息,而忽略了图像的空间位置细节,其结果就是它们对于最佳阈值并不是反映在直方图的谷点的情况会束手无策,不幸我们通常遇到的很多图像恰恰是这种情况。
另一方面,完全不同的两幅图片却可以有相同的直方图,所以即使对于峰谷明显的情况,这些方法也不能保证你得到合理的阈值。
于是,人们又提出了很多基于空间信息的阈值化方法。
可以说,局部区域的全局阈值选取方法,是基于点的方法,再加上考虑点领域内象素相关性质组合而成,所以某些方法常称为“二维xxx方法”。
由于考虑了象素领域的相关性质,因此对噪声有一定抑止作用。
3图像切割的实现3.1图像切割实现代码clcclearall;%%%%%%%%%%%%极小值图像切割%%%%%%%%%%%%%%%%%%%%%%%%%I=imread('C:
\DocumentsandSettings\Administrator\桌面\课程设计题目\2.bmp');figure
(1);subplot(121),imhist(I);%观察灰度直方图,灰度80处有谷,确定阈值T=80title('直方图');subplot(1,2,2),imshow(I);title('原图')I1=im2bw(I,80/255);%im2bw函数需要将灰度值转换到[0,1]范围内figure
(2)subplot(3,2,1),imshow(I1);title('极小值点阈值切割');%%%%%%%%%%%%%%%%%迭代法图像切割%%%%%%%%%%%%%%%%%%%%%%%%I=imread('C:
\DocumentsandSettings\Administrator\桌面\课程设计题目\2.bmp');[x,y]=size(I);a=imhist(I);I=double(I);max=1;fori=2:
x
ifa(max)xifa(min)>a(i)min=i;endendz0=maxz1=minT=(z0+z1)/2;TT=0;S0=0;n0=0;S1=0;n1=0;allow=0.5;d=abs(T-TT);count=0;while(d>=allow)count=count+1;fori=1:
xforj=1:
yif(I(i,j)>=T)S0=S0+I(i,j);n0=n0+1;endif(I(i,j)Seg=zeros(x,y);fori=1:
xforj=1:
yif(I(i,j)>=T)Seg(i,j)=1;endendendsubplot(322),imshow(Seg);title('迭代阈值分割1');SI=1-Seg;subplot(323),imshow(SI);title('迭代阈值分割2');%%%%%%%%%%%%%%%%%%最优法切割%%%%%%%%%%%%%%%%%%%%%%%%%%I=imread('C:
\DocumentsandSettings\Administrator\桌面\课程设计题目\2.bmp');[m,n]=size(I);dt=1;d=0.3;I9=I;I9=double(I9);while(abs(dt-d)>0.001)background=0;object=0;bm=0;%背景象素数om=0;%前景象素数fori=1:
mforj=1:
nif(I9(i,j)tmax3=d%tmax3=79.9102fori=1:
mforj=1:
nifI9(i,j)\DocumentsandSettings\Administrator\桌面\课程设计题目\2.bmp');[r,t]=size(I);count=imhist(I);n=r*t;l=256;count=count/n;%各级灰度出现的概率fori=2:
lifcount(i)~=0st=i-1;breakendend%以上循环语句实现寻找出现概率不为0的最小灰度值fori=l:
-1:
1ifcount(i)~=0;nd=i-1;breakendend%实现找出出现概率不为0的最大灰度值f=count(st+1:
nd+1);p=st;q=nd-st;%p和q分别是灰度的起始和结束值u=0;fori=1:
q;u=u+f(i)*(p+i-1);ua(i)=u;
end%计算图像的平均灰度值fori=1:
q;w(i)=sum(f(1:
i));end%计算出选择不同k的时候,A区域的概率d=(u*w-ua).^2./(w.*(1-w));%求出不同k值时类间方差[y,tp]=max(d);%求出最大方差对应的灰度级tmax4=tp%tmax=96y1=zeros(r,t);fori=1:
rforj=1:
tx1(i,j)=double(I(i,j));endendfori=1:
rforj=1:
tif(x1(i,j)>tp)y1(i,j)=x1(i,j);elsey1(i,j)=0;endendend%上面一段代码实现分割subplot(325),imshow(y1);title('最大方差法分割的图像');%%%%%%%%%%%%%%%%%%%最大熵法图像切割%%%%%%%%%%%%%%%%%%%%%%%%I=imread('C:
\DocumentsandSettings\Administrator\桌面\课程设计题目\2.bmp');X=double(I);