基于MATLAB的图像复原
1、课程设计的目的
3.1图像阈值分割技术基本原理
所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同。简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提。同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。
在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部分称为目标或前景(其他部分称为背景),他们一般对应图像中特定的、具有独特性质的区域。为了辨识和分析目标,需要将他们分离提取出来,在此基础上才有可能对目标进一步利用。图像分割就是指把图像分成格局特性的区域并提取出感兴趣目标的技术和过程。这里特性可以是象素的灰度、颜色、纹理等,预先定义的目标可以对应单个区域,也可以对应多个区域。现有的图像分割算法有:阈值分割、边缘检测和区域提取法。本文着重研究基于阈值法的图像分割技术。
若图像中目标和背景具有不同的灰度集合:目标灰度集合与背景灰度集合,且两个灰度集合可用一个灰度级阈值T进行分割。这样就可以用阈值分割灰度级的方法在图像中分割出目标区域与背景区域,这种方法称为灰度阈值分割方法。
在物体与背景有较强的对比度的图像中,此种方法应用特别有效。比如说物体内部灰度分布均匀一致,背景在另一个灰度级上也分布均匀,这时利用阈值可以将目标与背景分割得很好。如果目标和背景的差别是某些其他特征而不是灰度特征时,那么先将这些特征差别转化为灰度差别,然后再应用阈值分割方法进行处理,这样使用阈值分割技术也可能是有效的
设图像为f(x,y),其灰度集范围是[0,L],在0和L之间选择一个合适的灰度阈值T,则图像分割方法可由式(2.1)描述
(2.1)
这样得到的g(x,y)是一幅二值图像。
3.2图像阈值分割技术研究现状和实际应用
阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。
3.3图像阈值分割技术研究背景意义
阈值分割的优点是计算简单,运算效率较高,速度快。全局阈值对于灰度相差很大的不同目标和背景能进行有效的分割。当图像的灰度差异不明显或不同目标的灰度值范围有重叠时,应采用局部阈值或动态阈值分割法。另一方面,这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。在实际应用中,阈值法通常与其他方法结合使用。法也叫变化阈值法,或自适应阈值法。这类算法的时间复杂性和空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。
4.1阈值分割的基本概念
图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别适用于目标和背景占据不同灰度级范围的图像[1]。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。
阈值分割法是一种基于区域的图像分割技术,其基本原理是:通过设定不同的特征阈值,把图像像素点分为若干类.常用的特征包括:直接来自原始图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征.设原始图像为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))
(与点的位置、该点的灰度值和该点邻域特征有关)
所有这些阈值化方法,根据使用的是图像的局部信息还是整体信息,可以分为上下文无关(non-contextual)方法(也叫做基于点(point-dependent)的方法)和上下文相关(contextual)方法(也叫做基于区域(region-dependent)的方法);根据对全图使用统一阈值还是对不同区域使用不同阈值,可以分为全局阈值方法(global thresholding)和局部阈值方法(local thresholding,也叫做自适应阈值方法adaptive thresholding);另外,还可以分为双阈值方法(bilever thresholding)和多阈值方法(multithresholding)。
4.2阈值分割方法的分类
全局阈值法指利用全局信息对整幅图像求出最优分割阈值,可以是单阈值,也可以是多阈值;局部阈值法是把原始的整幅图像分为几个小的子图像,再对每个子图像应用全局阈值法分别求出最优分割阈值。其中全局阈值法又可分为基于点的阈值法和基于区域的阈值法。阈值分割法的结果很大程度上依赖于阈值的选择,因此该方法的关键是如何选择合适的阈值。由于局部阈值法中仍要用到全局阈值法,因此本文主要对全局阈值法中基于点的阈值法和基于区域的阈值法分别进行了研究。根据阈值法的原理可以将阈值选取技术分为三大类:
(1)基于点的全局阈值方法
基于点的全局阈值算法与其他几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统。
(2)基于区域的全局阈值方法
对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。
(3)局部阈值法和多阈值法
局部阈值(动态阈值) 当图像中有如下一些情况:有阴影,照度不均匀,各处的对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。有一种解决办法就是用与象索位置相关的一组阈值(即阈值使坐标的函数)来对图像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,此方法也叫变化
阈值法,或自适应阈值法。这类算法的时间复杂性和空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。
本文对基于对图像阈值分割技术的理解,介绍以下三种算法的使用及实现:基于灰度直方图的阈值选取图像分割、基于最大熵的阈值分割和基本全局门限算法实现阈值分割。
4.3阈值分割的处理算法
4.3.1基于灰度直方图的阈值选取图像分割(MATLAB实现)
直方图给出了图像中各个灰度级再图像中所占的比例。图像分割的目的在于将图像中的前景从背景中提取出来,而前景与背景的灰度值有差距,这个差距在直方图中表现出来就是:直方图上会出现一个谷底值,如果我们将这个谷底所对应的灰度值作为阈值,那么就可以将前景从背景中提取出来,可惜往往这个谷底不是很明显,不过这是阈值选取的最基本的方法。
4.3.2基于灰度直方图的阈值选取方法描述
对灰度图像的阈值分割就是先确定一个处干图像灰度取值范围之中的灰度阈值, 然后将图像中各个象素的灰度值都与这个阈值相比较, 并根据比较结果将对应的象素分为两类这两类象素一般分属图像的两类区域, 从而达到分割的目的从该方法中可以看出, 确定一个最优闭值是分割的关键现有的大部分算法都是集中在阈值确定的研究上。阈值分割方法根据图像本身的特点, 可分为全局闭值法局部闭值法。全局阈值法利用全局信息如灰度直方图对整幅图像求出最优
分割阈值, 可以是单阈值, 也可以是多阈值局部淘值法是把原始的整幅图像分为几个小的子图像, 再对每个子图像分别求出最优阈值。
程序流程图如下图所示:
假设图像由具有单峰灰度分布的目标和背景组成,在目标和背景内部的相邻象素间的灰度值是高度相关的,但在目标和背景处两边的象素在灰度值上有很大的区别,这类图像常可用取阈值方法来较好的分割。
这是未经转换的原始图:
5.基于灰度阈值图像分割技术的源代码
clear;
I = imread('F:che.gif');
figure, imshow(I), title('original image');
C=histc(I,0:255);%histc是一个内部函数
n=sum(C');%n(k)表示灰度值=k的象素的个数
N=sum(n);%求出图象象素总数
t=n/N;%t(k)表第k个灰度级出现的概率
figure;
bar(0:255,t);%画直方图
title('histogram');
hold off;
axis([0,255,0,0.03]);
%开始利用阈值法分割图像
[p,threshold]=min(t(120:150));%寻找阈值
threshold=threshold+120;
tt=find(I>threshold);
I(tt)=255;
tt=find(I<=threshold);
I(tt)=0;
figure;
imshow(I);
title('the thresholded image');
6.仿真结果
灰度直方图:
阈值分割后的图像:
结果分析:
实验结果表明:本文提出的基于最大熵的自动图像阈值选取分割算法分割效果要明显优于传统基于直方图的阈值分割算法,分割效果良好。首先由于图像的灰度分布往往不是很均匀,并且图像背景也很有可能受到噪声影响,从而使图像的直方图存在多个且不明显的谷值, 在这种情况下要得到合理的图像分割阈值是十分困难的;另外,常用的确定谷值的方法是先做直方图,然后人工找谷点,因为直方图往往参差不齐,很难找出理想的谷值。
本文提出的最大熵阈值分割算法要优于常用的直方图阈值选取算法,并且分割结果要好于采用数学期望法得到的结果,这主要是由于数字图像处理是离散数值操作,在离散域里求取数学期望本质上就是求取了图像的灰度平均值,因此该方法本身具有自身的不足。但与经典的OSTU分割算法相比,本文算法又有所不及,但本文所提的方法运算复杂度稍低,且运算时间较短。
7.总结
阈值法分为全局阈值法和局部阈值法两种。全局阈值法指利用全局信息(例如整幅图像的灰度直方图)对整幅图像求出最优分割阈值 ,可以是单阈值 ,也可以是多阈值;局部阈值法是把原始的整幅图像分为几个小的子图像 ,再对每个子图像应用全局阈值法分别求出最优分割阈值。其中全局阈值法又可分为基于点的阈值法和基于区域的阈值法。阈值分割法的结果很大程度上依赖于对阈值的选择 ,因此该方法的关键是如何选择合适的阈值。
图像分割是图像处理中的重要问题 ,也是计算机视觉研究中的一个经典难题。阈值法是一种简单有效的图像分割方法 ,它用一个或几个阈值将图像的灰度级分为几个部分 ,认为属于同一个部分的像素是同一个物体。阈值法的最大特点是计算简单 ,在重视运算效率的应用场合,它得到了广泛的应用。
参考文献
[1] 张强.精通MATLAB数字图像处理.北京:电子工业出版社,2009.6
[2] 朱虹等.数字图像处理.北京:科学出版社,2009.8
[3] 余成波. 数字图像处理及MATLAB实现. 重庆大学出版社, 2003
[4] 谢凤英,赵丹培. Visual C++数字图像处理.北京:电子工业出版社,2008.
[5] 曹志刚等.现代通信原理[M].清华大学出版社,2008: 66-89.
[6] 葛哲学.精通MATLAB[M].电子工业出版社,2008: 2-8.
[7] 张圣勤. MATLAB7.0实用教程[M].机器工业出版社,2006: 90-118.
[8] 樊昌信,曹丽娜.通信原理[M].国防工业出版社,2008:132-158.
[9] 苗云长.现代通信原理及应用[M].电子工业出版社,2005:30-40.