
在阈值面板的阈值色阶,属于想要调整的数值,或者使用鼠标拖动在直方图下面的三角形左右拖动进行想要的调整。
图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域。本文是在阅读大量国内外相关文献的基础上,对阈值分割技术稍做总结,分三个大类综述阈值选取方法,然后对阈值化算法的评估做简要介绍。
关键词
图像分割 阈值选取 全局阈值 局部阈值 直方图 二值化
1.引言
所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同[37].简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。
阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。
2.阈值分割的基本概念
图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别适用于目标和背景占据不同灰度级范围的图像[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种不同类型的阈值[37],即
点相关的全局阈值T=T(f(x,y))
(只与点的灰度值有关)
区域相关的全局阈值T=T(N(x,y),f(x,y))
(与点的灰度值和该点的局部邻域特征有关)
局部阈值或动态阈值T=T(x,y,N(x,y),f(x,y))
(与点的位置、该点的灰度值和该点邻域特征有关)
图像阈值化这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法[2-9],但是遗憾的是,如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果,甚至也没有一个理论指导我们选择特定方法处理特定图像。
所有这些阈值化方法,根据使用的是图像的局部信息还是整体信息,可以分为上下文无关(non-contextual)方法(也叫做基于点(point-dependent)的方法)和上下文相关(contextual)方法(也叫做基于区域(region-dependent)的方法);根据对全图使用统一阈值还是对不同区域使用不同阈值,可以分为全局阈值方法(global thresholding)和局部阈值方法(local thresholding,也叫做自适应阈值方法adaptive thresholding);另外,还可以分为双阈值方法(bilever thresholding)和多阈值方法(multithresholding)
本文分三大类对阈值选取技术进行综述:
1) 基于点的全局阈值方法;
2) 基于区域的全局阈值方法
3) 局部阈值方法和多阈值方法
3.基于点的全局阈值选取方法
31 p-分位数法
1962年Doyle[10]提出的p-分位数法(也称p-tile法)可以说是最古老的一种阈值选取方法。该方法使目标或背景的像素比例等于其先验概率来设定阈值,简单高效,但是对于先验概率难于估计的图像却无能为力。
例如,根据先验知识,知道图像目标与背景象素的比例为PO/PB,则可根据此条件直接在图像直方图上找到合适的阈值T,使得f(x,y)>=T的象素为目标,f(x,y)<T的象素为背景。
32 迭代方法选取阈值[11]
初始阈值选取为图像的平均灰度T0,然后用T0将图像的象素点分作两部分,计算两部分各自的平均灰度,小于T0的部分为TA,大于T0的部分为TB
计算 ,将T1 作为新的全局阈值代替T0,重复以上过程,如此迭代,直至TK 收敛,即TK+1 =TK
经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快地获得满意结果。但是对于直方图双峰不明显,或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如最大类间方差法。
33 直方图凹面分析法
从直观上说,图像直方图双峰之间的谷底,应该是比较合理的图像分割阈值,但是实际的直方图是离散的,往往十分粗糙、参差不齐,特别是当有噪声干扰时,有可能形成多个谷底。从而难以用既定的算法,实现对不同类型图像直方图谷底的搜索。
Rosenfeld和Torre[12]提出可以构造一个包含直方图 的最小凸多边形 ,由集差 确定 的凹面。若 和 分别表示 与 在灰度级之处的高度,则 取局部极大值时所对应的灰度级可以作为阈值。也有人使用低通滤波的方法平滑直方图,但是滤波尺度的选择并不容易[13]。
但此方法仍然容易受到噪声干扰,对不同类型的图像,表现出不同的分割效果。往往容易得到假的谷底。但此方法对某些只有单峰直方图的图像,也可以作出分割。如:
34 最大类间方差法
由Otsu[14]于1978年提出的最大类间方差法以其计算简单、稳定有效,一直广为使用。从模式识别的角度看,最佳阈值应当产生最佳的目标类与北京类的分离性能,此性能我们用类别方差来表征,为此引入类内方差 、类间方差 和总体方差 ,并定义三个等效的准则测量:
, , (3)
鉴于计算量的考量,人们一般通过优化第三个准则获取阈值。此方法也有其缺陷,kittler和Illingworth[15]的实验揭示:当图像中目标与背景的大小之比很小时方法失效。
在实际运用中,往往使用以下简化计算公式:
(T) = WA(μa-μ)2 + Wb(μb-μ)2
其中, 为两类间最大方差,WA 为A类概率,μa为A类平均灰度,Wb 为B类概率,μb为B类平均灰度,μ为图像总体平均灰度。
即阈值T将图像分成A,B两部分,使得两类总方差 (T)取最大值的T,即为最佳分割阈值。
35 熵方法
八十年代以来,许多学者将Shannon信息熵的概念应用于图像阈值化,其基本思想都是利用图像的灰度分布密度函数定义图像的信息熵,根据假设的不同或视角的不同提出不同的熵准则,最后通过优化该准则得到阈值。Pun[16]通过使后验熵的上限最大来确定阈值。Kapur等人[17]的方法假定目标和背景服从两个不同的概率分布 和 定义
(4)
使得熵
(5)
达到最大求得最佳阈值。
此方法又称为KSW熵方法。
36 最小误差阈值
此方法来源于Bayes最小误差分类方法。
Eb(T)是目标类错分到背景类的概率,Eo(T)是背景类错分到目标类的概率
总的误差概率 E(T) = Eb(T) + Eo(T)
使E(T)取最小值,即为最优分类方法。
在Kittler和Illingworth[18]于1986年提出的最小误差法中,直方图被视为目标与背景混合集概率密度函数 的估计
(9)
其中, 为先验概率, ,求解下列方程可得到Bayes最小误差阈值
(10)
遗憾的是上式中 , 和 通常是未知的,Nakagawa和Rosenfeld[19]提倡用拟合方法从直方图中估计这些参数,但是算法相当复杂,不易实现。
37 矩量保持法
矩量保持(moment-preserving)法[20] ,即矩守恒阈值法,是1985年提出的,其基本思想是最佳的阈值应该使分割前后图像的矩量保持不变,由此可以得到一组矩量保持方程,求解该方程组就可以得到最佳阈值。
38 模糊集方法
模糊集理论较好的描述了人类视觉中的模糊性和随机性,因此在图像阈值化领域受到了广泛的关注。模糊集阈值化方法的基本思想是,选择一种S状的隶属度函数定义模糊集,隶属度为05的灰度级对应了阈值,当然在上述隶属度函数的表达式中阈值是一个未知的参数;然后在此模糊集上定义某种准则函数(例如整个图像的总体模糊度),通过优化准则函数来确定最佳阈值。
Pal等[21]首先,他们把一幅具有 个灰度级的 图像看作一个模糊集 ,其中隶属函数 定义如下:
(11)
参数 称之为交叉点(即 )。由此从图像 的空间 平面得到模糊特性 平面。然后,基于此模糊集定义了图像的线性模糊度 、二次模糊度 和模糊熵 ,使这三个量取最小值时的交叉点 即为最佳阈值。
文献[21]指出模糊隶属度函数在该算法中的作用仅在于将图像由灰度数据空间转换为模糊空间 ,其函数的形式对增强结果几乎没有影响。这就使我们有理由使用一些形式简单的函数形式。例如国内学者发表的一种模糊阈值方法[22]:
隶属度μ(x)表示灰度x具有明亮特性的程度,c为隶属函数窗宽,q对应隶属度为05的灰度级。设灰度级 的模糊率为:
= min{μ(l),1-μ(l)}
则得到整幅图像的模糊率[44]
其中,MN为图像尺寸,L为图像总灰度级, 图像中灰度为 的象素个数。
对应于不同的q值,就可以计算出相应的图像模糊率,选取使得 最小的q值,作为图像分割的最佳阈值即可。
39 小结
对于基于点的全局阈值选取方法,除上述主要几种之外还许多,但大多都是以上述基本方法为基础,做出的改进方法或者对算法的优化,如使用递推方法以降低算法复杂性。
例如在文献[42]中,提出一种使目标和背景差距最大的阈值求取方法,类似于最大类间方差阈值法。是它的一种简化算法。
又如1984年Dunn等人[23]提出了均匀化误差阈值选取方法,这种方法实质上是要使将背景点误分为目标点的概率等于将目标点误分为背景点的概率。类似于最小误差阈值法。
近年来有一些新的研究手段被引入到阈值选取中。比如人工智能,在文献[24] 中,描述了如何用人工智能的方法,寻找直方图的谷底点,作为全局阈值分割。其它如神经网络,数学形态学[39][46],小波分析与变换[40]等等。
总的来说,基于点的全局阈值算法,与其它几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统。由于我的研究方向为机器视觉,所作的项目要求算法具有良好的实时性,因此针对基于点的全局阈值方法,阅读了较多的文献,在综述里叙述也相对比较详细。
4 基于区域的全局阈值选取方法
对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。
而在上述基于点的全局阈值选取方法中,有一个共同的弊病,那就是它们实际上只考虑了直方图提供的灰度级信息,而忽略了图像的空间位置细节,其结果就是它们对于最佳阈值并不是反映在直方图的谷点的情况会束手无策,不幸我们通常遇到的很多图像恰恰是这种情况。另一方面,完全不同的两幅却可以有相同的直方图,所以即使对于峰谷明显的情况,这些方法也不能保证你得到合理的阈值。于是,人们又提出了很多基于空间信息的阈值化方法。
可以说,局域区域的全局阈值选取方法,是基于点的方法,再加上考虑点领域内象素相关性质组合而成,所以某些方法常称为“二维xxx方法”。由于考虑了象素领域的相关性质,因此对噪声有一定抑止作用[41]。
41 二维熵阈值分割方法[25]
使用灰度级-局域平均灰度级形成的二维灰度直方图[43]进行阈值选取,这样就得到二维熵阈值化方法。
(二维灰度直方图: 灰度-领域平均灰度)
如图,在0区和1区,象素的灰度值与领域平均灰度值接近,说明一致性和相关性较强,应该大致属于目标或背景区域;2区和3区一致性和相关性较弱,可以理解为噪声或边界部分。二维熵阈值分割,就是选择(S,T)对,使得目标类和背景类的后验熵最大。(具体方法是一维熵阈值分割的推广,可参见上一节)
Abutaleb[26],和Pal]结合Kapur]和Kirby的方法,分别提出了各自的二维熵阈值化方法,其准则函数都是使目标熵和背景熵之和最大化。Brink[27]的方法则是使这两者中的较小者最大化,该方法的计算复杂度为 ,后来有人改进为递推快速算法将时间复杂度降为 (其中 为最大灰度级数)。
42 简单统计法
Kittler等人[28],[29]提出一种基于简单的图像统计的阈值选取方法。使用这种方法,阈值可以直接计算得到,从而避免了分析灰度直方图,也不涉及准则函数的优化。该方法的计算公式为
(19)
其中,
因为e(x,y)表征了点(x,y)领域的性质,因此本方法也属于基于区域的全局阈值法。
43 直方图变化法
从理论上说,直方图的谷底是非常理想的分割阈值,然后在实际应用中,图像常常受到噪声等的影响而使其直方图上原本分离的峰之间的谷底被填充,或者目标和背景的峰相距很近或者大小差不多,要检测他们的谷底就很难了。
在上一节基于点的全局阈值方法中,我们知道直方图凹面分析法的弊病是容易受到噪声干扰,对不同类型的图像,表现出不同的分割效果。往往容易得到假的谷底。这是由于原始的直方图是离散的,而且含噪声,没有考虑利用象素领域性质。
而直方图变化法,就是利用一些象素领域的局部性质变换原始的直方图为一个新的直方图。这个新的直方图与原始直方图相比,或者峰之间的谷底更深,或者谷转变成峰从而更易于检测。这里的象素领域局部性质,在很多方法中经常用的是象素的梯度值。
例如,由于目标区的象素具有一定的一致性和相关性,因此梯度值应该较小,背景区也类似。而边界区域或者噪声,就具有较大的梯度值。最简单的直方图变换方法,就是根据梯度值加权,梯度值小的象素权加大,梯度值大的象素权减小。这样,就可以使直方图的双峰更加突起,谷底更加凹陷。
44 其它基于区域的全局阈值法
松弛法利用邻域约束条件迭代改进线性方程系统的收敛特性,当用于图像阈值化时其思想是:首先根据灰度级按概率将像素分为“亮”和“暗”两类,然后按照领域像素的概率调整每个像素的概率,调整过程迭代进行,使得属于亮(暗)区域的像素“亮(暗)”的概率变得更大。
其它还有许多方法利用灰度值和梯度值散射图,或者利用灰度值和平均灰度值散射图。
5 局部阈值法和多阈值法
51 局部阈值(动态阈值)
当图像中有如下一些情况:有阴影,照度不均匀,各处的对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。有一种解决办法就是用与象素位置相关的一组阈值(即阈值使坐标的函数)来对图像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,此方法也叫变化阈值法,或自适应阈值法。这类算法的时间复杂性可空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。
例如,一幅照度不均(左边亮右边暗)的原始图像为:
如果只选择一个全局阈值进行分割,那么将出现下面两种情况,都不能得到满意的效果。
(阈值低,对亮区效果好,则暗区差) (阈值高,对暗区效果好,则亮区差)
若使用局部阈值,则可分别在亮区和暗区选择不同的阈值,使得整体分割效果较为理性。
(按两个区域取局部阈值的分割结果)
进一步,若每个数字都用不同的局部阈值,则可达到更理想的分割效果。
511 阈值插值法
首先将图像分解成系列子图,由于子图相对原图很小,因此受阴影或对比度空间变化等带来的问题的影响会比较小。然后对每个子图计算一个局部阈值(此时的阈值可用任何一种固定阈值选取方法)。通过对这些子图所得到的阈值进行插值,就可以得到对原图中每个象素进行分割所需要的合理阈值。这里对应每个象素的阈值合起来构成的一个曲面,叫做阈值曲面。
512 水线阈值算法
水线(也称分水岭或流域,watershed)阈值算法可以看成是一种特殊的自适应迭代阈值方法,它的基本思想是:初始时,使用一个较大的阈值将两个目标分开,但目标间的间隙很大;在减小阈值的过程中,两个目标的边界会相向扩张,它们接触前所保留的最后像素集合就给出了目标间的最终边界,此时也就得到了阈值。
513 其它的局部阈值法
文献[30]提出了一种基于阈值曲面的二维遗传算法。遗传算法是基于进化论中自然选择机理的、并行的、统计的随机化搜索方法,所以在图像处理中常用来确定分割阈值。
文献[31] [32]中提出一种基于局部梯度最大值的插值方法。首先平滑图像,并求得具有局部梯度最大值的像素点,然后利用这些像素点的位置和灰度在图像上内插,得到灰度级阈值表面。
除此之外,典型的局部阈值方法还有White和Rohrer[33]的加权移动平均阈值方法,Perez和Gonzalez[34]的适用于非均匀照射下图像的局部阈值方法以及Shio[35]的与照射无关的对比度度量阈值方法等。总的来说,这类算法的时间和空间复杂度都较大,但是抗噪能力强,对一些使用全局阈值法不宜分割的图像具有较好的效果。
52 多阈值法
很显然,如果图像中含有占据不同灰度级区域的几个目标,则需要使用多个阈值才能将它们分开。其实多域值分割,可以看作单阈值分割的推广,前面讨论的大部分阈值化技术,诸如Otsu的最大类间方差法, Kapur的最大熵方法、矩量保持法和最小误差法等等都可以推广到多阈值的情形。以下介绍另外几种多阈值方法。
521 基于小波的多域值方法。
小波变换的多分辨率分析能力也可以用于直方图分析[36],一种基于直方图分析的多阈值选取方法思路如下:首先在粗分辨率下,根据直方图中独立峰的个数确定分割区域的类数,这里要求独立峰应该满足三个条件:(1)具有一定的灰度范围;(2)具有一定的峰下面积;(3)具有一定的峰谷差。然后,在相邻峰之间确定最佳阈值,这一步可以利用多分辨的层次结构进行。首先在最低分辨率一层进行,然后逐渐向高层推进,直到最高分辨率。可以基于最小距离判据对在最低层选取的所有阈值逐层跟踪,最后以最高分辨率层的阈值为最佳阈值。
522 基于边界点的递归多域值方法。
这是一种递归的多阈值方法。首先,将象素点分为边界点和非边界点两类,边界点再根据它们的邻域的亮度分为较亮的边界点和较暗的边界点两类,然后用这两类边界点分别作直方图,取两个直方图中的最高峰多对应的灰度级作为阈值。接下去,再分别对灰度级高于和低于此阈值的像素点递归的使用这一方法,直至得到预定的阈值数。
523 均衡对比度递归多域值方法。
首先,对每一个可能阈值计算它对应于它的平均对比度
其中, 是阈值为 时图像总的对比度, 是阈值 检测到的边界点的数目。然后,选择 的直方图上的峰值所对应的灰度级为最佳阈值。对于多阈值情形,首先用这种方法确定一个初始阈值,接着,去掉初始阈值检测到的边界点的贡献再做一次 的直方图,并依据新的直方图选择下一个阈值。这一过程可以这样一直进行下去,直到任何阈值的最大平均对比度小于某个给定的限制为止。
6 阈值化算法评价简介
尽管人们在图像分割方面做了许多研究工作,但由于尚无通用的分割理论,现已提出的分割算法大都是针对具体问题的,并没有一种适合于所有图像的通用的分割算法。另一方面,给定一个实际图像分割问题要选择合用的分割算法也还没有标准的方法。为解决这些问题需要研究对图像分割的评价问题。分割评价是改进和提高现有算法性能、改善分割质量和指导新算法研究的重要手段。
然而,如同所有的图像分割方法一样,阈值化结果的评价是一个比较困难的问题。事实上对图像分割本身还缺乏比较系统的精确的研究,因此对其评价则更差一些。人们先后已经提出了几十个评价准则。这些准则中又有定性的,也有定量的;有分析算法的,也有检测实验结果的,文献[37]将它们大致分为13类。
文献[4] 中选择摄影师、建筑物和模特三幅图像作为标准图像,并采用趋于一致性度量和形状参数对几种常用的全局阈值方法的分割结果进行了评价。结果表明对于这三幅图像,如果希望得到的二值图像比较均匀且目标的形状较好,推荐使用最大熵方法、矩量保持方法和最大类间方差法。
文献[38] 中以磁盘及鹤模型作标准图像,在噪声条件下用错分概率、形状和均匀性度量作为标准评估了五种常见的整体阈值选取方法的性能。这五种方法是四元树方法、矩量保持法、最大类间方差法、最大熵方法和简单统计法。结果表明各种方法的性能不仅与所处理的图像有关,而且也和所选用的准则有关。该文献也指出,对于一般实时应用来说,可以选择最大类间方差方法和简单统计法。
最后,评价的目的是为了能指导、改进和提高分割,如何把评价和分割应用联系起来尚有许多工作要做。一个可能的方法是结合人工智能技术,建立分割专家系统[45],以有效的利用评价结果进行归纳推理,从而把对图像的分割由目前比较盲目的试验阶段推进到系统地实现的阶段。
MATLAB实用源代码
1图像的读取及旋转
A=imread('');%读取图像
subplot(2,2,1),imshow(A),title('原始图像');%输出图像
I=rgb2gray(A);
subplot(2,2,2),imshow(A),title('灰度图像');
subplot(2,2,3),imhist(I),title('灰度图像直方图');%输出原图直方图
theta = 30;J = imrotate(I,theta);% Try varying the angle, theta
subplot(2,2,4), imshow(J),title(‘旋转图像’)
2边缘检测
I=imread('C:\Users\HP\Desktop\平时总结\路飞jpg');
subplot(2,2,1),imshow(I),title('原始图像');
I1=edge(I,'sobel');
subplot(2,2,2),imshow(I1),title('sobel边缘检测');
I2=edge(I,'prewitt');
subplot(2,2,3),imshow(I2),title('prewitt边缘检测');
I3=edge(I,'log');
subplot(2,2,4),imshow(I3),title('log边缘检测');
3图像反转
MATLAB 程序实现如下:
I=imread('xianbmp');
J=double(I);
J=-J+(256-1);%图像反转线性变换
H=uint8(J);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(H);
4灰度线性变换
MATLAB 程序实现如下:
I=imread('xianbmp');
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on;%显示坐标系
I1=rgb2gray(I);
subplot(2,2,2),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
axis on; %显示坐标系
J=imadjust(I1,[01 05],[]); %局部拉伸,把[01 05]内的灰度拉伸为[0 1]
subplot(2,2,3),imshow(J);
title('线性变换图像[01 05]');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
K=imadjust(I1,[03 07],[]); %局部拉伸,把[03 07]内的灰度拉伸为[0 1]
subplot(2,2,4),imshow(K);
title('线性变换图像[03 07]');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
5非线性变换
MATLAB 程序实现如下:
I=imread('xianbmp');
I1=rgb2gray(I);
subplot(1,2,1),imshow(I1);
title(' 灰度图像');
axis([50,250,50,200]);
grid on;%显示网格线
axis on;%显示坐标系
J=double(I1);
J=40(log(J+1));
H=uint8(J);
subplot(1,2,2),imshow(H);
title(' 对数变换图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
4直方图均衡化
MATLAB 程序实现如下:
I=imread('xianbmp');
I=rgb2gray(I);
figure;
subplot(2,2,1);
imshow(I);
subplot(2,2,2);
imhist(I);
I1=histeq(I);
figure;
subplot(2,2,1);
imshow(I1);
subplot(2,2,2);
imhist(I1);
5 线性平滑滤波器
用MATLAB实现领域平均法抑制噪声程序:
I=imread('xianbmp');
subplot(231)
imshow(I)
title('原始图像')
I=rgb2gray(I);
I1=imnoise(I,'salt & pepper',002);
subplot(232)
imshow(I1)
title(' 添加椒盐噪声的图像')
k1=filter2(fspecial('average',3),I1)/255; %进行33模板平滑滤波
k2=filter2(fspecial('average',5),I1)/255; %进行55模板平滑滤波k3=filter2(fspecial('average',7),I1)/255; %进行77模板平滑滤波
k4=filter2(fspecial('average',9),I1)/255; %进行99模板平滑滤波
subplot(233),imshow(k1);title('33 模板平滑滤波');
subplot(234),imshow(k2);title('55 模板平滑滤波');
subplot(235),imshow(k3);title('77 模板平滑滤波');
subplot(236),imshow(k4);title('99 模板平滑滤波');
6中值滤波器
用MATLAB实现中值滤波程序如下:
I=imread('xianbmp');
I=rgb2gray(I);
J=imnoise(I,'salt&pepper',002);
subplot(231),imshow(I);title('原图像');
subplot(232),imshow(J);title('添加椒盐噪声图像');
k1=medfilt2(J); %进行33模板中值滤波
k2=medfilt2(J,[5,5]); %进行55模板中值滤波
k3=medfilt2(J,[7,7]); %进行77模板中值滤波
k4=medfilt2(J,[9,9]); %进行99模板中值滤波
subplot(233),imshow(k1);title('33模板中值滤波');
subplot(234),imshow(k2);title('55模板中值滤波 ');
subplot(235),imshow(k3);title('77模板中值滤波');
subplot(236),imshow(k4);title('99 模板中值滤波');
7用Sobel算子和拉普拉斯对图像锐化:
I=imread('xianbmp');
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on;%显示坐标系
I1=im2bw(I);
subplot(2,2,2),imshow(I1);
title('二值图像');
axis([50,250,50,200]);
grid on;%显示网格线
axis on;%显示坐标系
H=fspecial('sobel');%选择sobel算子
J=filter2(H,I1); %卷积运算
subplot(2,2,3),imshow(J);
title('sobel算子锐化图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on;%显示坐标系
h=[0 1 0,1 -4 1,0 1 0]; %拉普拉斯算子
J1=conv2(I1,h,'same');%卷积运算
subplot(2,2,4),imshow(J1);
title('拉普拉斯算子锐化图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
8梯度算子检测边缘
用 MATLAB实现如下:
I=imread('xianbmp');
subplot(2,3,1);
imshow(I);
title('原始图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
I1=im2bw(I);
subplot(2,3,2);
imshow(I1);
title('二值图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
I2=edge(I1,'roberts');
figure;
subplot(2,3,3);
imshow(I2);
title('roberts算子分割结果');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
I3=edge(I1,'sobel');
subplot(2,3,4);
imshow(I3);
title('sobel算子分割结果');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
I4=edge(I1,'Prewitt');
subplot(2,3,5);
imshow(I4);
title('Prewitt算子分割结果 ');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
9LOG算子检测边缘
用 MATLAB程序实现如下:
I=imread('xianbmp');
subplot(2,2,1);
imshow(I);
title('原始图像');
I1=rgb2gray(I);
subplot(2,2,2);
imshow(I1);
title('灰度图像');
I2=edge(I1,'log');
subplot(2,2,3);
imshow(I2);
title('log算子分割结果');
10Canny算子检测边 缘
用MATLAB程序实现如下:
I=imread('xianbmp');
subplot(2,2,1);
imshow(I);
title('原始图像')
I1=rgb2gray(I);
subplot(2,2,2);
imshow(I1);
title('灰度图像');
I2=edge(I1,'canny');
subplot(2,2,3);
imshow(I2);
title('canny算子分割结果');
11边界跟踪 (bwtraceboundary函数)
clc
clear all
I=imread('xianbmp');
figure
imshow(I);
title('原始图像');
I1=rgb2gray(I); %将彩色图像转化灰度图像
threshold=graythresh(I1); %计算将灰度图像转化为二值图像所需的门限
BW=im2bw(I1, threshold); %将灰度图像转化为二值图像
figure
imshow(BW);
title('二值图像');
dim=size(BW);
col=round(dim(2)/2)-90; %计算起始点列坐标
row=find(BW(:,col),1); %计算起始点行坐标
connectivity=8;
num_points=180;
contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points);
%提取边界
figure
imshow(I1);
hold on;
plot(contour(:,2),contour(:,1), 'g','LineWidth' ,2);
title('边界跟踪图像');
12Hough变换
I= imread('xianbmp');
rotI=rgb2gray(I);
subplot(2,2,1);
imshow(rotI);
title('灰度图像');
axis([50,250,50,200]);
grid on;
axis on;
BW=edge(rotI,'prewitt');
subplot(2,2,2);
imshow(BW);
title('prewitt算子边缘检测 后图像');
axis([50,250,50,200]);
grid on;
axis on;
[H,T,R]=hough(BW);
subplot(2,2,3);
imshow(H,[],'XData',T,'YData',R,'InitialMagnification','fit');
title('霍夫变换图');
xlabel('\theta'),ylabel('\rho');
axis on , axis normal, hold on;
P=houghpeaks(H,5,'threshold',ceil(03max(H(:))));
x=T(P(:,2));y=R(P(:,1));
plot(x,y,'s','color','white');
lines=houghlines(BW,T,R,P,'FillGap',5,'MinLength',7);
subplot(2,2,4);,imshow(rotI);
title('霍夫变换图像检测');
axis([50,250,50,200]);
grid on;
axis on;
hold on;
max_len=0;
for k=1:length(lines)
xy=[lines(k)point1;lines(k)point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow');
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
len=norm(lines(k)point1-lines(k)point2);
if(len>max_len)
max_len=len;
xy_long=xy;
end
end
plot(xy_long(:,1),xy_long(:,2),'LineWidth',2,'Color','cyan');
13直方图阈值法
用 MATLAB实现直方图阈值法:
I=imread('xianbmp');
I1=rgb2gray(I);
figure;
subplot(2,2,1);
imshow(I1);
title(' 灰度图像')
axis([50,250,50,200]);
grid on;%显示网格线
axis on; %显示坐标系
[m,n]=size(I1);%测量图像尺寸参数
GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(I1==k))/(mn);%计算每级灰度出现的概率,将其存入GP中相应位置
end
subplot(2,2,2),bar(0:255,GP,'g')%绘制直方图
title('灰度直方图')
xlabel('灰度值')
ylabel(' 出现概率')
I2=im2bw(I,150/255);
subplot(2,2,3),imshow(I2);
title('阈值150的分割图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
I3=im2bw(I,200/255); %
subplot(2,2,4),imshow(I3);
title('阈值200的分割图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
14 自动阈值法:Otsu法
用MATLAB实现Otsu算法:
clc
clear all
I=imread('xianbmp');
subplot(1,2,1),imshow(I);
title('原始图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
level=graythresh(I); %确定灰度阈值
BW=im2bw(I,level);
subplot(1,2,2),imshow(BW);
title('Otsu 法阈值分割图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
15膨胀 *** 作
I=imread('xianbmp'); %载入图像
I1=rgb2gray(I);
subplot(1,2,1);
imshow(I1);
title('灰度图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
se=strel('disk',1); %生成圆形结构元素
I2=imdilate(I1,se); %用生成的结构元素对图像进行膨胀
subplot(1,2,2);
imshow(I2);
title(' 膨胀后图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
16腐蚀 *** 作
MATLAB 实现腐蚀 *** 作
I=imread('xianbmp'); %载入图像
I1=rgb2gray(I);
subplot(1,2,1);
imshow(I1);
title('灰度图像')
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
se=strel('disk',1); %生成圆形结构元素
I2=imerode(I1,se); %用生成的结构元素对图像进行腐蚀
subplot(1,2,2);
imshow(I2);
title('腐蚀后图像');
axis([50,250,50,200]);
grid on; %显示网格线
axis on; %显示坐标系
17开启和闭合 *** 作
用 MATLAB实现开启和闭合 *** 作
I=imread('xianbmp'); %载入图像
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on; %显示坐标系
I1=rgb2gray(I);
subplot(2,2,2),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
axis on; %显示坐标系
se=strel('disk',1); %采用半径为1的圆作为结构元素
I2=imopen(I1,se); %开启 *** 作
I3=imclose(I1,se); %闭合 *** 作
subplot(2,2,3),imshow(I2);
title('开启运算后图像');
axis([50,250,50,200]);
axis on; %显示坐标系
subplot(2,2,4),imshow(I3);
title('闭合运算后图像');
axis([50,250,50,200]);
axis on; %显示坐标系
18开启和闭合组合 *** 作
I=imread('xianbmp');%载入图像
subplot(3,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on;%显示坐标系
I1=rgb2gray(I);
subplot(3,2,2),imshow(I1);
title('灰度图像');
axis([50,250,50,200]);
axis on;%显示坐标系
se=strel('disk',1);
I2=imopen(I1,se);%开启 *** 作
I3=imclose(I1,se);%闭合 *** 作
subplot(3,2,3),imshow(I2);
title('开启运算后图像');
axis([50,250,50,200]);
axis on;%显示坐标系
subplot(3,2,4),imshow(I3);
title('闭合运算后图像');
axis([50,250,50,200]);
axis on;%显示坐标系
se=strel('disk',1);
I4=imopen(I1,se);
I5=imclose(I4,se);
subplot(3,2,5),imshow(I5);%开—闭运算图像
title('开—闭运算图像');
axis([50,250,50,200]);
axis on;%显示坐标系
I6=imclose(I1,se);
I7=imopen(I6,se);
subplot(3,2,6),imshow(I7);%闭—开运算图像
title('闭—开运算图像');
axis([50,250,50,200]);
axis on;%显示坐标系
19形态学边界提取
利用 MATLAB实现如下:
I=imread('xianbmp');%载入图像
subplot(1,3,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
grid on;%显示网格线
axis on;%显示坐标系
I1=im2bw(I);
subplot(1,3,2),imshow(I1);
title('二值化图像');
axis([50,250,50,200]);
grid on;%显示网格线
axis on;%显示坐标系
I2=bwperim(I1); %获取区域的周长
subplot(1,3,3),imshow(I2);
title('边界周长的二值图像');
axis([50,250,50,200]);
grid on;
axis on;
20形态学骨架提取
利用MATLAB实现如下:
I=imread('xianbmp');
subplot(2,2,1),imshow(I);
title('原始图像');
axis([50,250,50,200]);
axis on;
I1=im2bw(I);
subplot(2,2,2),imshow(I1);
title('二值图像');
axis([50,250,50,200]);
axis on;
I2=bwmorph(I1,'skel',1);
subplot(2,2,3),imshow(I2);
title('1次骨架提取');
axis([50,250,50,200]);
axis on;
I3=bwmorph(I1,'skel',2);
subplot(2,2,4),imshow(I3);
title('2次骨架提取');
axis([50,250,50,200]);
axis on;
21直接提取四个顶点坐标
I = imread('xianbmp');
I = I(:,:,1);
BW=im2bw(I);
figure
imshow(~BW)
[x,y]=getpts
平滑滤波
h=fspecial('average',9);
I_gray=imfilter(I_gray,h,'replicate');%平滑滤波
(1)数据预处理,理论上来说在使用遥感影像进行科学研究或者工程实践中时首先需要进行遥感影像的预处理工作。但仅从自动解译的角度来讲,影像是否进行预处理对自动解译几乎没有太大影响。
(2)使用 Band math 工具进行水体指数 NDWI 的计算。
大津法又叫最大类间方差法、最大类间阈值法(OTSU)。它的基本思想是,用一个阈值将图像中的数据分为两类,一类中图像的像素点的灰度均小于这个阈值,另一类中的图像的像素点的灰度均大于或者等于该阈值。如果这两个类中像素点的灰度的方差越大,说明获取到的阈值就是最佳的阈值(方差是灰度分布均匀性的一种度量,背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。)。则利用该阈值可以将图像分为前景和背景两个部分。而我们所感兴趣的部分一般为前景。
对于灰度分布直方图有两个峰值的图像,大津法求得的T近似等于两个峰值之间的低谷。
它由大津于1979年提出,被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。
在白内障眼科图像处理中,也尝试了大津法。其流程为:
(1)统一图像大小;(2)利用最大类间阈值进行分割;(3)进行中值滤波;(4)构造圆形元素;(5)膨胀处理;(6)填充空洞;(7)删除小面积对象;(8)删除红**杂质;(9)剪切感兴趣的部分
首先将每一张的格式,大小进行统一,我们采用了基于双线性插值的方法进行大小转换。然后根据最大类间方差法求出整张的最佳阈值。随后对该标记矩阵进行中值滤波,使得被前景包围的背景区域重新被填充,避免分割到的前景中的区域被掏空。接下来进行圆形元素的构造,根据已有的前景区域,给定半径和周期线性元素结构去和给定的前景区域去近似。满足条件则可以构建出完整的圆形结构,最大可能的保持晶状体的形状。接下来对标记矩阵进行膨胀处理,通过膨胀可以使得图像中的小孔和边缘凹陷被填充。如果此时前景区域仍有空洞,则用填充函数将二值图像中的空洞填充掉。将小面积对象删除,避免未来对白内障区域的识别产生噪声和干扰。接下来从前景整个黑白相间的内容中除去红色和近似**的部分。根据RGB三原色的分布特征,取出剩余的红**杂质。处理效果如下:
由于存在被掏空的情况,因此结合了中值滤波和填充膨胀等 *** 作。掏空情况见下图:
可见这种算法将感兴趣区域掏空了,由于被掏空区域不是闭合区域,因此中值滤波和膨胀等 *** 作都无法将原区域回复,最终选择了canng算子和Hough变换相结合的算法。
在病理图像的处理中,为了得到病理区域,也使用该方法从病理区域进行裁剪。得到组织掩码。
病理图像细节如下图。
根据裁剪到的图像,集合医生标注,通过卷积神经网络进行识别。
通过遥感变化信息检测方法对两时相遥感影像进行处理分析后,得到 “变化信息”影像,同时为了便于后续震害信息的识别,需要把这些变化信息从复杂的环境背景中提取出来,得到一个仅包含变化信息的二值影像,这里就需要用到图像分割 ( ImageSegmentation ) 技术。图 像 分 割 包括 手 动分 割 和 自动分割两种,手动分割是指 *** 作者利用相关的经验进行小图斑的合并、提取和取舍,但是对于大区域遥感影像来说,手工 *** 作工作量大、效率低、速度慢、周期长、容易漏掉小图斑,并且分割图斑的边界容易受到 *** 作者的主观控制,对精度的影响也较大,所以本研究中的图像分割一般指的是自动分割。
退化废弃地遥感信息提取研究
图 4 -11 基于 MNF/ICA 多源遥感变化信息检测法结果从 20 世纪 70 年代起,图像分割方法一直受到各国学者的关注,至今已经提出了很多种分割方法,FuK S ( 1981) 将分割方法分成阈值分割、边缘分割和区域分割,实际上区域分割包含了阈值分割。蔡殉、朱波 ( 2002) 则将图像分割方法分成更多的类别,包括阈值分割、彩色分割、基于模糊集法、深度分割、像素分割、区域增长法,其中彩色分割、深度分割和像素分割都属于阈值分割。
由于现今遥感变化信息检测还处于像元级别 ( 钟家强,2005) ,通过不同检测方法,对灰度、彩色影像进行处理变换,使得变化信息的灰度 ( 像素值) 和色彩信息得到加强,通常表现出灰白色 ( 图 4 - 8、图 4 - 9) 和亮绿色 ( 图 4 - 11) ,与周围地物的色标不协调,可以通过确定相关的变化阈值把变化区域分割出来。但是由于变化信息受到太阳辐射、大气干扰、传感器参数、空间分辨率、光谱分辨率以及季节差异等因素影响,变化图斑的灰度有时在一定的范围内波动,增加了变化信息精确分割的难度,这使得变化阈值的确定显得尤为重要。
( 一) 变化影像特征分析
通过多时相遥感变化信息检测方法得到的灰度或彩色影像通常具有以下特征: ① 影像中光谱特征复杂,包含的地物类型众多,但是变化信息和背景环境的光谱性质不一致。② 灰度影像的变换信息图斑一般分布在灰度轴的两端 ( 就是较亮的区域) ,不过有时也可能位于暗端,极少数情况下也可能位于两者之间,这要根据具体的遥感数据和采用何种检测方法来定; 彩色影像变化信息图斑一般为亮绿色,是否能够和周围地物类型明显区分要根据实际情况而定。③ 变化信息图斑内部的灰度值比较均匀,但是会在一定范围内波动,所以图像分割时很容易丢失细小的图斑。④ 变化信息图斑之间灰度特征比较相似 ( 一致) ,但是纹理特征的差别通常较明显,因为变化信息的图斑可能属于不同的地物类型,所以通常不能用纹理信息来分割变化信息图斑。⑤ 由于非人为控制的因素,影像中不可避免地存在一些噪声信息,这些噪声信息一般表现在与变化信息图斑接近的小图斑( 图 4 - 9 表现得特别明显) ,所以分割的时候要区分哪些是变化信息图斑,哪些是噪声图斑。⑥ 对于不同的环境和区域,变化信息图斑是服从随机分布的,有的地方稀疏,有的地方密集。
( 二) 单阈值区域分割法
单阈值区域分割是一种简单有效的图像分割方法,其用一个阈值将变化图像的灰度级分为两个部分: 变化与未变化。其最大特点是计算简单,在重视运算效率的应用场合 ( 例如用于硬件实现) 得到了广泛应用 ( 冯德俊,2004) 。一般是利用图像的灰度直方图来确定分割阈值。在计算分割阈值时,常在去除噪声的基础上将灰度直方图包络成一条曲线,如果图像上有多个特征区域,其直方图就会出现多个峰值,每个峰值对应一个特征区域,而谷底值点就为分割阈值,用以划分不同的特征区域。
复杂图像的目标和背景的灰度值时常有部分交错,为了在分割时使这种错误分割的概率最小,需要寻找出最优的分割阈值,所以单阈值区域分割法也叫最优阈值法,意指能够使分割误差最小。图像的灰度直方图可以看成是像元灰度值的概率分布密度函数,假设一幅图像仅含有目标和背景两个主要的灰度值区域,那么其直方图就表示对应目标和背景两个单峰值的概率分布密度函数之和,如果已知密度函数的形式,就可以计算出使误差最小的最优阈值。其计算原理如下:
假设一幅含有高斯噪声的图像,其背景和目标的直方图(概率密度函数)分别为pb(z)和po(z),那么整个图像的混合概率密度p(z)为(章毓晋,2001):
退化废弃地遥感信息提取研究
式中:σb和σo分别为背景和目标均值的均方差;μb和μo分别为背景和目标的平均灰度值;pb和po分别为背景和目标区域灰度的先验概率,二者之和为1。如果μb<μo,需要确定阈值T,将小于阈值的分割作为背景,大于阈值的分割作为目标,假设将目标像元错误地划分为背景以及把背景错误地划分为目标的概率分别为Eb(T)和Eo(T),则总的误差为两者之和E(T)。为了使该误差最小,将总误差对T求导数,并令导数为零,得到
退化废弃地遥感信息提取研究
将该式代入式(4-3),可得二项式
退化废弃地遥感信息提取研究
求解该二项式得到最优阈值
退化废弃地遥感信息提取研究
最优阈值T的选取原理如图4-12所示,其原理可以概括为:将经过平滑去噪后的直方图看成一条曲线h(x),最优阈值T必须满足以下两个条件:
退化废弃地遥感信息提取研究
图4-12 最优阈值选取原理
设原始图像 f( x,y) 的灰度值范围为 G =[0,L -1],用最优单阈值法把图像分成两类,最优分割阈值为 T ( 0 < T < L -1) ,分割后生成的二值影像为 g( x,y) :
退化废弃地遥感信息提取研究
本研究在 ERDAS 软件下利用空间建模语言 ( SML) 实现了单阈值 ( 最优阈值) 法,分别分析了图 4 -8、图 4 -9 和图 4 -11 变化影像的直方图分布情况 ( 图 4 -13) ,并进行了最优阈值区域分割,把得到的三幅二值变化信息影像取合集,即把三幅影像相加,保留所有大于 1 的像素点,最后得到变化区域二值影像,如图 4 -14 所示。
图 4 -13 三幅变化影像的直方图曲线
图 4 -14 单阈值法提取的变化信息二值影像( 白色区域为发生变化的区域)
图 4 -15 双阈值模糊识别法计算流程
(三)双阈值模糊识别分割法
由于单阈值区域分割法只有一个全局阈值参与影像分割,然而影像受到大气、噪声、光照以及背景灰度变化的共同影响,导致了变化信息的灰度值总是在一定范围内波动,常常出现变化信息和噪声以及其他地物类别交错的现象。在这种情况下,单阈值区域分割难以满足精度的要求,如何区分出其中的变化信息本研究提出了双阈值模糊识别分割法,其流程如图4-15所示。
利用变化图像的灰度直方图计算得到两个阈值T1和T2,并且T1<T2,然后利用双阈值法对变化图像进行分割(DaneKottkeetal,1989、1998),将图像f(x,y)分割为三个类别:背景、不确定类、变化信息:
退化废弃地遥感信息提取研究
对其中不确定的像元保留其灰度值不变,利用模糊识别算子构建目标函数,分别计算出该像元属于两种不同类别(背景和变化信息)的模糊隶属度,通过比较两种隶属度的大小判断其归属(把它归类到隶属度大的那一类当中),划分到背景与变化信息当中,直到完成所有不确定像元的划分,即完成了整个分割过程。
1双阈值T1和T2的计算
核心阈值T1的计算按照公式4-5的单阈值(最优阈值法)区域分割法得到。核心阈值T2则是利用灰度直方图中大于T1阈值的像元灰度求平均值得到。
设影像的灰度值在0到255之间(8维图像),利用离散积分的原理来计算灰度的均值。如果利用单阈值法计算出来的最优阈值为T1,那么核心阈值T2的计算公式如下:
退化废弃地遥感信息提取研究
式中:ni表示变化图像中灰度为i的像元出现的个数。
2模糊识别算法
模糊识别算法的基本思想如下(李希灿等,2003、2008):
首先将样本集规格化,就是把样本集的特征值规格化到0到1之间,设样本特征值y规格化为x,样本集n个样本划分为C个类别,则模糊识别矩阵为
退化废弃地遥感信息提取研究
式中:Uhj为样本j归属于第h类的相对隶属度,h=1,2,…,C,且应当满足以下条件:
退化废弃地遥感信息提取研究
设C个类别的特征值为标准指数或模糊聚类中心指标,则C个类别的中心指标向量为:
退化废弃地遥感信息提取研究
式中:Sh为第h类的中心指标,0≤Sh≤1且h=1,2,…,c,为了求解最优模糊识别矩阵U和模糊最优中心指标S,建立目标函数(李希灿,1998):
退化废弃地遥感信息提取研究
式4-14的意义是:样本集对于全体类别的加权广义海明距离平方和为最小。显然,在不分类别(h=1,Uhj=1)的情况下,该公式变为通常的最小二乘最优准则。在式4-14的目标函数下,计算出最优模糊划分的隶属度和中心指标向量:
退化废弃地遥感信息提取研究
式中:uhj为样本j隶属于h类的隶属度。
3分割归类
通过构造的目标函数(隶属度函数),分别计算出每个像素点属于“目标”(变化信息)和“背景”(非变化信息)的隶属度,并把它分入到隶属度大的那一类当中,从而完成图像分割的过程。
图4-16 双阈值模糊识别分割法二值影像
(白色区域为变化信息)
通过在ERDAS下利用空间建模语言(SML)实现该分割算法,分别将图4-8、图4-9和图4-11变化图像作为输入对象,进行双阈值模糊识别分割,得到的二值变化图像取合集最终结果如图4-16所示。从图4-16中可以看出,双阈值模糊识别分割法能够在一定程度上消除单阈值区域分割法中混杂在变化信息中的离散噪声和个别地物类型,使变化信息更加准确、集中,从而提高了分割的精度。实践证明,双阈值模糊识别分割法有着坚实的理论基础,并且在实际变化信息的分割中能够取得很好的效果,是一种可行、可靠的图像分割自动算法。
以上就是关于Photoshop阈值怎么调整全部的内容,包括:Photoshop阈值怎么调整、在遥感中阈值是什么意思、求MATLAB代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)