数字图像阈值自动分割的实现

数字图像阈值自动分割的实现
数字图像阈值自动分割的实现

数字图像阈值自动分割的实现

针对不同图像实现图像二值化的自动分割

一、摘要

本文主要讨论了数字图像阈值自动分割的实现和针对不同图像实现图像二值化的自动分割的课题。其中包括直方图阈值分割技术、类间方差阈值分割、迭代法阈值分割三种图像阈值分割的原理和基本内容,提出几种常用的图像阈值分割方法和比较几种方法的优缺点,更好地完成课题要求,并且从中获得一定的专业知识和技能。

关键词:阈值分割、二值化、直方图阈值分割技术、类间方差阈值分割、迭代法阈值分割

二、前言

本课题的主要目的是实现数字图像阈值自动分割,我们主要介绍三种有效的阈值分割方法:(1) 直方图阈值分割技术(2)类间方差阈值分割(3)迭代法阈值分割。我们分别介绍三种方法的原理、程序和运行结果,并结合结果进行优缺点的比较。

我们经过广泛的查取资料,注意到以下几个问题(1)编译的程序原理能够实现不同图像的自动阈值分割(2)对于彩色图像的阈值分割,要把彩色图像转化成灰度图像。

三、正文

3.1定义

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。1998年以来,研究人员不断改进原有的图像分割方法并把其它学科的一些新理论和新方法用于图像分割,提出了不少新的分割方法。图像分割后提取出的目标可以用于图像语义识别,图像搜索等等领域。

图像阈值分割是一种广泛应用的分割技术,阈值分割法的特点是:适用于目标与背景灰度有较强对比的情况,重要的是背景或物体的灰度比较单一,而且总可以得到封闭且连通区域的边界。

阈值分割法基本原理是:通过设定不同的特征阈值,把图像像素点分为若干类.常用的特征包括:直接来自原始图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征.设原始图像为f(x,y),按照一定的准则在f(x,y)中找到特征值T,将图像分割为两个部分,分割后的图像为 :

若取: 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)迭代法阈值分割

3.2设计目的:

图像分割的目的是把图像空间分成一些有意义的区域。例如对于安全监控图像来说,人脸的分割很重要。研究图像分割可以以逐个的像素为基础,也可以利用规定领域中的图像信息区分割。

阈值分割是一种利用图像中要提取的目标物与其背景在灰度特性上的差异,把图像视为具有不同灰度级的两类区域(目标和背景)的组合,选取一个合适的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生对应的二值图像。图像分割可以压缩数据,简化其后的分析与处理步骤,在很多图像处理系统中都是必不可少的一个环节。

3.3设计方案(思路):

阈值分割图像的基本原理描述如下:

式中,Z为阈值,是图像f(x,y)灰度级范围内的任一个灰度级集合,Z属于[Z1,Zk],Z1,Zk为任意选出来的目标和背景灰度级。可见从复杂背景中分辨出目标并将其形状完整地提取出来,预知的选择是阈值分割技术的关键,迄今为止还没有一种对所有图像都能有效分割的阈值选取方法。我们主要使用三种常用的阈值选取方法:直方图阈值分割法和类间方差阈值分割法以及迭代阈值分割法。

3.4设计内容:

阈值分割方法比较

3.4.1基于点的全局阈值方法

基于点的全局阈值算法与其他几大类方法相比,算法时间复杂度较小,易于实现,适合应用于在线实时图像处理系统。

3.4.2基于区域的全局阈值方法

对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。

3.4.3局部阈值法和多阈值法

局部阈值(动态阈值)当图像中有如下一些情况:有阴影,照度不均匀,各处的

对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。有一种解决办法就是用与象索位置相关的一组阈值(即阈值使坐标的函数)来对图像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,此方法也叫变化阈值法,或自适应阈值法。这类算法的时间复杂性和空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。多阈值法很显然,

如果图像中含有占据不同灰度级区域的几个目标,则需要使用多个阈值才能将他们分开。其实多域值分割,可以看作单阈值分割的推广。

3.5方法介绍

3.5.1直方图阈值分割技术

(一)定义与原理

灰度直方图就是灰度级的像素数ni与灰度i的二维关系,它反映了一幅图像上灰度分布的统计特性,在MATLAB中使用函数“imhist.m”来实现。

双峰法就是其中的一种简单的阈值分割方法,即会呈现直方图呈现明显的双峰状,如图1所示,则选取双峰之间的谷底所对应的灰度级作为阈值分割,与要注意的是,用灰度直方图双峰法来分割图像需要一定的图像知识。

图1 图像的直方图

(二)MATLAB仿真源程序

clc

clear

close all

I=imread('H.bmp'); %读取图像

I=rgb2gray(I);

figure(1); %绘制空图板

subplot(1,3,1);

imhist(I); %绘制直方图

subplot(1,3,2);

imshow(I);

[m,n]=size(I); %图像尺寸

for i=1:m

for j=1:n

if(I(i,j)<120) %阈值为双峰中间的谷底

I(i,j)=255;

end

end

end

subplot(1,3,3);

imshow(I);

(三)运行结果

(1)米粒灰度图像

(a)灰度直方图

(b)原始图(c)分割后的结果(2)人像灰度图像

(3)彩色图像

(四)提示

在图像阈值分割中,往往设置多个阈值进行图像和背景的分割。直方图分割技术还可以采用基于统计最优的最佳阈值分割方法和多门限分割方法。

(五)适用情况

该方法不适用于直方图中双峰差别很大或者双峰中间谷底比较宽广而平坦的图像,以及单峰直方图的情况。

3.5.2类间方差阈值分割

(一)定义与原理

由Ostu提出的最大类间方差法,是在判决分析最小二乘法原理的基础上推到得出的,其算法比较简单,是一种方便可行的阈值选取方法。

设原始灰度图像灰度级为L,灰度级为I的像素点数为n1,则图像的全部像素数为:

N=n0+n1+n2+n3+···nz-1

归一化直方图,则

C0和C1的类的方差可由下式得到:

t的选择是类间与类内方差比值最大的灰度值。

(二)该方法计算灰度门限的程序:

clear

clc

close all

C=imread('h.jpg');

C=rgb2gray(C);

%读取图像

figure,imshow(C);title('原始灰度图像');%绘原图

count=imhist(C); %直方图统计

subplot(1,3,1);

imhist(C); %绘制直方图

[r,t]=size(C);

%图像矩阵大小

N=r*t; %图像像素个数

L=256; %制定凸显灰度级为256 count=count/N;

%各级灰度出现概率

for i=2:L

if count(i)~=0 ;

st=i-1;

break

end

end

%以上循环语句实现寻找出现概率不为0的最小灰度值

for i=L:-1:1

if count(i)~=0;

nd=i-1;

break

end

end

%实现找出出现概率不为0的最大灰度值

f=count(st+1:nd+1);

p=st;q=nd-st;

%p和q分别是灰度的起始和结束值

u=0;

for i=1:q

u=u+f(i)*(p+i-1);

ua(i)=u;

end

%计算图像的平均灰度值

for i=1:q

w(i)=sum(f(1:i));

end

%计算出选择不同k的时候,A区域的概率

d=(u*w-ua).^2./(w.*(1-w)); %求出不同k值时类间方差

[y,tp]=max(d); %求出最大方差对应的灰度值

th=tp+p;

if th<=160

th=tp+p;

else

th=160

end %根据具体情况适当修正门限

Y1=zeros(r,t);

for i=1:r

for j=1:t

X1(i,j)=double(C(i,j));

end

end

for i=1:r

for j=1:t

if (X1(i,j)>=th)

Y1(i,j)=X1(i,j);

else Y1(i,j)=0;

end

end

end

%上面一段代码实现分割

figure,imshow(Y1);title('灰度门限分割图像');

(三)运行结果如下图

(1)米粒灰度图像

(2)人像灰度图像

(3)彩色图像

(四)适用情况

类间方差阈值分割算法比较简单,是一种方便可行的阈值选取方法。类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。

3.5.3迭代法阈值分割

(一)定义与原理

迭代法是基于逼近的思想,其步骤如下:

(1)求出图象的最大灰度值和最小灰度值,分别记为Zmax和Zmin,令初始阈值T0=(Zmax+Zmin)/2;

(2)根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB;

(3)求出新阈值TK+1=(ZO+ZB)/2;

(4)若TK=TK+1,则所得即为阈值;否则转2,迭代计算。

(二)程序设计:

clear all;

clear

clc

%%%%%%极小值图像切割%%%%%%

I=imread('h.jpg');

I=rgb2gray(I);

%读取图像

figure(1),imhist(I); % 观察灰度直方图,灰度135处有谷,确定阈值T=135;

figure(2);

%title('直方图');

imshow(I);

title('原图')

I1=im2bw(I,135/255); % im2bw函数需要将灰度值转换到[0,1]范围内

figure(3),imshow(I1); title('极小值点阈值切割'); %%%%%迭代法图像切割%%%%

I=imread('h.jpg'); %imread 从文件读取图象

figure(4),imshow(I); %%subplot 创建子图

title('原图像'); % %title 图名

[x,y]=size(I); %size 矩阵的大小

a=imhist(I); %hist 频数计算或频数直方图

I=double(I); %double 把其他类型对象转换为双精度数值

max=1;

for i=2:x

if a(max)

max=i;

end

end

min=1;

for i=2:x

if a(min)>a(i) ;

min=i;

end

end

z0=max;

z1=min ;

T=(z0+z1)/2;

TT=0; S0=0; n0=0; S1=0; n1=0;

allow=0.001;

d=abs(T-TT); %abs 绝对值、模、字符的ASCII码值

count=0;

while(d>=allow)

count=count+1;

for i=1:x

for j=1:y

if (I(i,j)>=T) ;

S0=S0+I(i,j);

n0=n0+1;

end

if (I(i,j)

S1=S1+I(i,j);

n1=n1+1;

end

end

end

T0=S0/n0;

T1=S1/n1;

TT=(T0+T1)/2;

d=abs(T-TT);

T=TT;

end

tmax2=T %tmax2=119.4582 Seg=zeros(x,y); %zeros 全零数组for i=1:x

for j=1:y

if(I(i,j)>=T)

Seg(i,j)=1;

end

end

end

figure(5),imshow(Seg);

title('迭代阈值分割1');

(三)运行结果

(1)米粒灰度图像

(2)人像灰度图像

(3)彩色图像

(四)适用情况

迭代所得的阈值分割的图象效果良好。基于迭代的阈值能区分出图像的前景和背景的主要区域所在,但在图像的细微处还没有很好的区分度。

3.6方法比较

对某些特定图象,微小数据的变化却会引起分割效果的巨大改变,两者的数据只是稍有变化,但分割效果却反差极大 。经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快地获得满意结果。但是对于直方图双峰不明显,或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如最大类间方差法。

四、深度研究

4.1问题的提出

在灰度图像的二维阈值化分割方法中,存在部分可能的噪声或边缘点,而没有对其进行处理或处理很草率.针对这个不足,提出了一种进一步将这些点归类、提高分割质量的后处理方法.该方法通过考察这些点的8-邻域或16-邻域内的其他点的分布情况,比较这些点到相应的邻域中分属于目标和背景的两类点中心之间的距离,将这些点分割到距离较小的一类中,以达到将图像中的所有点进行归类的目的.实验分析表明,这种后处理方法提高了分割的准确性,减少了分割错误.

4.2传统方法的不足

在灰度图像分割的众多方法中,灰度阈值法是最重要、最基本的也是最简单实用的图像分割技术之一.然而,传统的方法,尤其是经大量实践证明较为优越的方法,大多数是根据图像的一维灰度直方图选择阈值.由于图像的一维灰度直方图仅反映了图像的灰度分布,不能反映图像像素之间的空间相关的各种有效信息,当图像的复杂性提高、信噪比递减,或由于照明等因素的影响,使得图像的一维灰度直方图不一定出现明显的“峰和谷”时,仅利用灰度值分布得到的阈值往往不能得到满意的分割效果,甚至还可能产生严重的分割错误.近年来,有不少方法利用图像的二维灰度直方图———像素的灰度值分布及其邻域的平均灰度值分布所构成的二维直方图进行阈值分割[1,2],利用二维的类间方差测度准则取最大值[2,3]、利用最大熵阈值法[1,4]等得到一个最佳分割二维矢量(S,T),并以此二维矢量(S,T)作为分割门限对图像进行分割,大大提高了分割的准确性和抗噪能力。

二维阈值化方法同时考虑像素的灰度值及其邻域灰度平均值.像素(x,y)处的n×n邻域平均灰度值为g(x,y)=(1/n2)∑n/2i=-n/2∑n/2j=-n/2f(x-i),y+j),式中n≤N,n为一般取奇数,[n/2]为取整.用灰度、邻域平均灰度数据对[f(x,y), g(x,y)]来表示图像,并以二维矢量(S,T)为阈值分割图像.如图1所示

其起始点在左下方,灰度值从左至右增加,邻域平均灰度值自下而上增加.直方图被分成4块,根据同态性,在目标和背景处,像素的灰度值和邻域平均灰度值接近,在目标和背景的分界邻域,像素的灰度值与邻域平均灰度值差异较大.因此目标和背景中的像素将出现在对角线周围,方块0和1包含了目标类和背景类的分布;远离对角线的方块2和3对应着可能的边缘和噪声.在上述二维阈值化方法中,当选择了阈值矢量(S,T)之后,通常的方法是令二维直方图中的方块0或1为一类,而其余3块为另一类[1],或者干脆对于方块2和3的点不加处理[3,4],这样便无

法将噪声从图像中分离出来,亦有可能产生较多的分割错误。

4.3主要的思路

对图1中方块2和3中的点,考察其邻域内的其他点的归类情况,再通过比较点到邻域内的不同类的点的距离来确定该点所属的类.

设(x,y)为图1中方块2和3中尚未确定的点,其灰度及邻域灰度均值为[f(x,y),g(x,y)],先考察点(x,y)的8-邻域内的其他点:

a.如果该邻域内其他点都属于背景(或目标)类内,那么由于边缘点应该具有连续性、目标或背景也都具有一定的区域连续性,有理由认为点(x,y)为噪声,利用邻域的平均灰度将将该点平滑掉,这样点(x,y)就归属于邻域内其他点所在的类.

b.如果(x,y)的8-邻域内的其他点部分属于目标,部分属于背景,则该点极有可能是边缘点.这时如果点(x,y)的灰度f(x,y)奇高或特低,即与邻域内的其他所有点的灰度相差很悬殊,也可以认为点(x,y)为噪声,先将其用均值g(x,y)平滑掉.分别计算邻域内属于目标类的所有点的特征空间上的中心(f0,g0)和属于背景类的所有点的中心(f1,g1),再求得点[f(x,y),g(x,y)]到(f0,g0),(f1,g1)的距离d0和d1,这里采用简单的欧氏距离:d0=[f(x,y),g(x,y)][f0,g0]T;d1=[f(x,y),g(x,y)][f1,g1]T,如果d0>d1,则认为点[f(x,y),g(x,y)]更靠近背景类,将其划归背景;如果d0

c.如果该邻域内的其他点都是或主要是尚未确定的类的方块2和3中的点,或者是一部分为某一类(目标或背景)中的点,另一部分为尚未确定的点,则需继续分析.此时,类似于b中的方法,先将考察的邻域扩大到16-邻域,再用b中的方法计算距离,进行比较达到归类的目的.如果扩大到16-邻域还是一样,则继续扩大邻域范围,用同样的方法进行处理.

4.4实验分析

图2是一幅具有256级灰度的256×256的图像,图3是利用一维最大熵阈值分割方法对图2的分割结果,其计算出来的分割阈值为105;图4是利用二维最大熵阈值分割方法对图2分割的结果,分割阈值向量为(154,154),显然图4中一些细微的轮廓比图3的分割更分明些,分割更准确,比较图3和图4很容易看出结合了像素的空间信息的二维阈值分割的结果明显优于一维方法的结果;图5中的白色的亮点是图1中所说的尚未分割的块2和块3部分,对于这样一幅质量较好的图像仍然有2%的像素没有被处理,如果是噪声比较严重的图像,这个部分所占的比例就更高了,所以对这个部分绝不能置之不理或草率处理.图6是经本文提出的后处理方法处理后的结果,没有遗弃任何一个点.与未进行后处理的图4比较,可以观察到的如在图4中猫的眼睛周围的一些未处理的亮点,在此已经根据其局部的结构信息对进行了进一步的处理.理论及实验结果表明,本文的处理方法是较好的后处理方法,是对二维阈值分割方法的一个很好的补充。

五、结论

本课题主要运用直方图阈值分割技术、类间方差阈值分割、迭代法阈值分割三种方法实现数字图像的阈值分割。其中给我们对三种方法的结果进行比较和总结,对出现的问题进行归纳和解决。

通过此次三级项目的研究学习,让我们对matlab软件有了更加深入的学习和了解。通过自己动手设计编写程序,并从中发现问题、解决问题,增强了我们实际应用这门学科的能力和分析处理问题的能力。另一方面,也增强了我们的团队协作能力,让我们通过结组讨论、共同解决问题的形式,互补学习、共同进步。

六、参考文献

【1】《数字图像处理(第二版)》贾永红编著武汉大学出版社【2】《数字图像阈值自动分割的实现》百度文库

【3】《迭代法阈值分割》百度文库

相关文档
最新文档