‘壹’ “阈值法”怎么定义
阈值方法分为全局阈值和局部阈值两种,如果分割过程中对图像上每个像素所使用的阈值都相等,则为全局阈值方法。如果每个像素所使用的阈值可能不同,则为局部阈值方法。
‘贰’ ps中的阈值有什么作用怎样使用阈值
阈值是色阶的最大控制值,它的作用是用于控制当前图像的明度与暗度的对比程度,并且会把图像中所有的彩色信息去除,只剩下黑白色,使用阈值可以提取出当前图像中的高光部分与阴暗部分。可以使用二种方法执行:一种是利用图像菜单中的调整命令中直接启动,另一种是添加调整图层中添加。
‘叁’ 图像分割最好方法
1.基于阈值的分割方法
阈值法的基本思想是基于图像的灰度特征来计算一个或多个灰度阈值,并将图像中每个像素的灰度值与阈值作比较,最后将像素根据比较结果分到合适的类别中。因此,该方法最为关键的一步就是按照某个准则函数来求解最佳灰度阈值。
阈值法特别适用于目标和背景占据不同灰度级范围的图。图像若只有目标和背景两大类,那么只需要选取一个阈值进行分割,此方法成为单阈值分割;但是如果图像中有多个目标需要提取,单一阈值的分割就会出现作物,在这种情况下就需要选取多个阈值将每个目标分隔开,这种分割方法相应的成为多阈值分割。
2.基于区域的图像分割方法
基于区域的分割方法是以直接寻找区域为基础的分割技术,基于区域提取方法有两种基本形式:一种是区域生长,从单个像素出发,逐步合并以形成所需要的分割区域;另一种是从全局出发,逐步切割至所需的分割区域。
分水岭算法
分水岭算法是一个非常好理解的算法,它根据分水岭的构成来考虑图像的分割,现实中我们可以想象成有山和湖的景象,那么一定是水绕山山围水的景象。
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
‘肆’ 一幅图像通过阈值分割算法得到最佳阈值,怎么通过阈值得到分割后的两幅图像比如说:分割舌苔舌质
根据灰度、梯度、形态等来设定自适应阈值。
设定过程:设置→参数→选择(灰度、梯度、形态)→输入数值→计算阈值→搞定。
阈值又叫临界值,是指一个效应能够产生的最低值或最高值。
阈值又称阈强度,是指释放一个行为反应所需要的最小刺激强度。低于阈值的刺激不能导致行为释放。在反射活动中,阈值的大小是固定不变的,在复杂行为中,阈值则受各种环境条件和动物生理状况的影响。当一种行为更难于释放时,就是阈值提高了;当一种行为更容易释放时,就是阈值下降了。一般说来,刚刚完成某一行为后,动物对这一行为的要求就会大大下降。例如刚交过尾的动物,对于性刺激或是没有反应或是反应很弱,这就意味着释放性行为的阈值增加了。类似情况在觅食行为和其他行为中也很常见。另一方面,长时间未发生的行为非常容易被释放,释放这种行为的刺激强度会变得非常小。在极端情况下,阈值的降低可以导致行为的自发产生,这就是空放行为(vacuum behavior)。空放行为是一种无刺激行为释放,是达不到该种行为目的的一种行为。最令人信服的实例是织巢鸟的筑巢行为。饲养在鸟笼中的织巢鸟,在得不到任何筑巢材料和代用物的情况下,也完全可以表现出筑巢动作,虽然这种动作达不到它本来的目的。
阈值又叫临界值,是指一个效应能够产生的最低值或最高值。
‘伍’ ps中,阈值是什么意思具体形象一点,最好有例子说明
字典解释:在自动控制系统中能产生一个校正动作的最小输入值
刺激引起应激组织反应的最低值
PS解释:“阈值”命令将灰度或彩色图像转换为高对比度的黑白图像。您可以指定某个色阶作为阈值。所有比阈值亮的像素转换为白色;而所有比阈值暗的像素转换为黑色。“阈值”命令对确定图像的最亮和最暗区域很有用。
我的解释,就是拿黑白2色去阐述你的图片,是可调节的。
‘陆’ 在遥感中阈值是什么意思
图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域。本文是在阅读大量国内外相关文献的基础上,对阈值分割技术稍做总结,分三个大类综述阈值选取方法,然后对阈值化算法的评估做简要介绍。
关键词
图像分割 阈值选取 全局阈值 局部阈值 直方图 二值化
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.基于点的全局阈值选取方法
3.1 p-分位数法
1962年Doyle[10]提出的p-分位数法(也称p-tile法)可以说是最古老的一种阈值选取方法。该方法使目标或背景的像素比例等于其先验概率来设定阈值,简单高效,但是对于先验概率难于估计的图像却无能为力。
例如,根据先验知识,知道图像目标与背景象素的比例为PO/PB,则可根据此条件直接在图像直方图上找到合适的阈值T,使得f(x,y)>=T的象素为目标,f(x,y)<T的象素为背景。
3.2 迭代方法选取阈值[11]
初始阈值选取为图像的平均灰度T0,然后用T0将图像的象素点分作两部分,计算两部分各自的平均灰度,小于T0的部分为TA,大于T0的部分为TB
计算 ,将T1 作为新的全局阈值代替T0,重复以上过程,如此迭代,直至TK 收敛,即TK+1 =TK
经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快地获得满意结果。但是对于直方图双峰不明显,或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如最大类间方差法。
3.3 直方图凹面分析法
从直观上说,图像直方图双峰之间的谷底,应该是比较合理的图像分割阈值,但是实际的直方图是离散的,往往十分粗糙、参差不齐,特别是当有噪声干扰时,有可能形成多个谷底。从而难以用既定的算法,实现对不同类型图像直方图谷底的搜索。
Rosenfeld和Torre[12]提出可以构造一个包含直方图 的最小凸多边形 ,由集差 确定 的凹面。若 和 分别表示 与 在灰度级之处的高度,则 取局部极大值时所对应的灰度级可以作为阈值。也有人使用低通滤波的方法平滑直方图,但是滤波尺度的选择并不容易[13]。
但此方法仍然容易受到噪声干扰,对不同类型的图像,表现出不同的分割效果。往往容易得到假的谷底。但此方法对某些只有单峰直方图的图像,也可以作出分割。如:
3.4 最大类间方差法
由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,即为最佳分割阈值。
3.5 熵方法
八十年代以来,许多学者将Shannon信息熵的概念应用于图像阈值化,其基本思想都是利用图像的灰度分布密度函数定义图像的信息熵,根据假设的不同或视角的不同提出不同的熵准则,最后通过优化该准则得到阈值。Pun[16]通过使后验熵的上限最大来确定阈值。Kapur等人[17]的方法假定目标和背景服从两个不同的概率分布 和 定义
(4)
使得熵
(5)
达到最大求得最佳阈值。
此方法又称为KSW熵方法。
3.6 最小误差阈值
此方法来源于Bayes最小误差分类方法。
Eb(T)是目标类错分到背景类的概率,Eo(T)是背景类错分到目标类的概率
总的误差概率 E(T) = Eb(T) + Eo(T)
使E(T)取最小值,即为最优分类方法。
在Kittler和Illingworth[18]于1986年提出的最小误差法中,直方图被视为目标与背景混合集概率密度函数 的估计
(9)
其中, 为先验概率, ,求解下列方程可得到Bayes最小误差阈值
(10)
遗憾的是上式中 , 和 通常是未知的,Nakagawa和Rosenfeld[19]提倡用拟合方法从直方图中估计这些参数,但是算法相当复杂,不易实现。
3.7 矩量保持法
矩量保持(moment-preserving)法[20] ,即矩守恒阈值法,是1985年提出的,其基本思想是最佳的阈值应该使分割前后图像的矩量保持不变,由此可以得到一组矩量保持方程,求解该方程组就可以得到最佳阈值。
3.8 模糊集方法
模糊集理论较好的描述了人类视觉中的模糊性和随机性,因此在图像阈值化领域受到了广泛的关注。模糊集阈值化方法的基本思想是,选择一种S状的隶属度函数定义模糊集,隶属度为0.5的灰度级对应了阈值,当然在上述隶属度函数的表达式中阈值是一个未知的参数;然后在此模糊集上定义某种准则函数(例如整个图像的总体模糊度),通过优化准则函数来确定最佳阈值。
Pal等[21]首先,他们把一幅具有 个灰度级的 图像看作一个模糊集 ,其中隶属函数 定义如下:
(11)
参数 称之为交叉点(即 )。由此从图像 的空间 平面得到模糊特性 平面。然后,基于此模糊集定义了图像的线性模糊度 、二次模糊度 和模糊熵 ,使这三个量取最小值时的交叉点 即为最佳阈值。
文献[21]指出模糊隶属度函数在该算法中的作用仅在于将图像由灰度数据空间转换为模糊空间 ,其函数的形式对增强结果几乎没有影响。这就使我们有理由使用一些形式简单的函数形式。例如国内学者发表的一种模糊阈值方法[22]:
隶属度μ(x)表示灰度x具有明亮特性的程度,c为隶属函数窗宽,q对应隶属度为0.5的灰度级。设灰度级 的模糊率为:
= min{μ(l),1-μ(l)}
则得到整幅图像的模糊率[44]
其中,MN为图像尺寸,L为图像总灰度级, 图像中灰度为 的象素个数。
对应于不同的q值,就可以计算出相应的图像模糊率,选取使得 最小的q值,作为图像分割的最佳阈值即可。
3.9 小结
对于基于点的全局阈值选取方法,除上述主要几种之外还许多,但大多都是以上述基本方法为基础,做出的改进方法或者对算法的优化,如使用递推方法以降低算法复杂性。
例如在文献[42]中,提出一种使目标和背景差距最大的阈值求取方法,类似于最大类间方差阈值法。是它的一种简化算法。
又如1984年Dunn等人[23]提出了均匀化误差阈值选取方法,这种方法实质上是要使将背景点误分为目标点的概率等于将目标点误分为背景点的概率。类似于最小误差阈值法。
近年来有一些新的研究手段被引入到阈值选取中。比如人工智能,在文献[24] 中,描述了如何用人工智能的方法,寻找直方图的谷底点,作为全局阈值分割。其它如神经网络,数学形态学[39][46],小波分析与变换[40]等等。
总的来说,基于点的全局阈值算法,与其它几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统。由于我的研究方向为机器视觉,所作的项目要求算法具有良好的实时性,因此针对基于点的全局阈值方法,阅读了较多的文献,在综述里叙述也相对比较详细。
4 基于区域的全局阈值选取方法
对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。
而在上述基于点的全局阈值选取方法中,有一个共同的弊病,那就是它们实际上只考虑了直方图提供的灰度级信息,而忽略了图像的空间位置细节,其结果就是它们对于最佳阈值并不是反映在直方图的谷点的情况会束手无策,不幸我们通常遇到的很多图像恰恰是这种情况。另一方面,完全不同的两幅图片却可以有相同的直方图,所以即使对于峰谷明显的情况,这些方法也不能保证你得到合理的阈值。于是,人们又提出了很多基于空间信息的阈值化方法。
可以说,局域区域的全局阈值选取方法,是基于点的方法,再加上考虑点领域内象素相关性质组合而成,所以某些方法常称为“二维xxx方法”。由于考虑了象素领域的相关性质,因此对噪声有一定抑止作用[41]。
4.1 二维熵阈值分割方法[25]
使用灰度级-局域平均灰度级形成的二维灰度直方图[43]进行阈值选取,这样就得到二维熵阈值化方法。
(二维灰度直方图: 灰度-领域平均灰度)
如图,在0区和1区,象素的灰度值与领域平均灰度值接近,说明一致性和相关性较强,应该大致属于目标或背景区域;2区和3区一致性和相关性较弱,可以理解为噪声或边界部分。二维熵阈值分割,就是选择(S,T)对,使得目标类和背景类的后验熵最大。(具体方法是一维熵阈值分割的推广,可参见上一节)
Abutaleb[26],和Pal]结合Kapur]和Kirby的方法,分别提出了各自的二维熵阈值化方法,其准则函数都是使目标熵和背景熵之和最大化。Brink[27]的方法则是使这两者中的较小者最大化,该方法的计算复杂度为 ,后来有人改进为递推快速算法将时间复杂度降为 (其中 为最大灰度级数)。
4.2 简单统计法
Kittler等人[28],[29]提出一种基于简单的图像统计的阈值选取方法。使用这种方法,阈值可以直接计算得到,从而避免了分析灰度直方图,也不涉及准则函数的优化。该方法的计算公式为
(19)
其中,
因为e(x,y)表征了点(x,y)领域的性质,因此本方法也属于基于区域的全局阈值法。
4.3 直方图变化法
从理论上说,直方图的谷底是非常理想的分割阈值,然后在实际应用中,图像常常受到噪声等的影响而使其直方图上原本分离的峰之间的谷底被填充,或者目标和背景的峰相距很近或者大小差不多,要检测他们的谷底就很难了。
在上一节基于点的全局阈值方法中,我们知道直方图凹面分析法的弊病是容易受到噪声干扰,对不同类型的图像,表现出不同的分割效果。往往容易得到假的谷底。这是由于原始的直方图是离散的,而且含噪声,没有考虑利用象素领域性质。
而直方图变化法,就是利用一些象素领域的局部性质变换原始的直方图为一个新的直方图。这个新的直方图与原始直方图相比,或者峰之间的谷底更深,或者谷转变成峰从而更易于检测。这里的象素领域局部性质,在很多方法中经常用的是象素的梯度值。
例如,由于目标区的象素具有一定的一致性和相关性,因此梯度值应该较小,背景区也类似。而边界区域或者噪声,就具有较大的梯度值。最简单的直方图变换方法,就是根据梯度值加权,梯度值小的象素权加大,梯度值大的象素权减小。这样,就可以使直方图的双峰更加突起,谷底更加凹陷。
4.4 其它基于区域的全局阈值法
松弛法利用邻域约束条件迭代改进线性方程系统的收敛特性,当用于图像阈值化时其思想是:首先根据灰度级按概率将像素分为“亮”和“暗”两类,然后按照领域像素的概率调整每个像素的概率,调整过程迭代进行,使得属于亮(暗)区域的像素“亮(暗)”的概率变得更大。
其它还有许多方法利用灰度值和梯度值散射图,或者利用灰度值和平均灰度值散射图。
5 局部阈值法和多阈值法
5.1 局部阈值(动态阈值)
当图像中有如下一些情况:有阴影,照度不均匀,各处的对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。有一种解决办法就是用与象素位置相关的一组阈值(即阈值使坐标的函数)来对图像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,此方法也叫变化阈值法,或自适应阈值法。这类算法的时间复杂性可空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。
例如,一幅照度不均(左边亮右边暗)的原始图像为:
如果只选择一个全局阈值进行分割,那么将出现下面两种情况,都不能得到满意的效果。
(阈值低,对亮区效果好,则暗区差) (阈值高,对暗区效果好,则亮区差)
若使用局部阈值,则可分别在亮区和暗区选择不同的阈值,使得整体分割效果较为理性。
(按两个区域取局部阈值的分割结果)
进一步,若每个数字都用不同的局部阈值,则可达到更理想的分割效果。
5.1.1 阈值插值法
首先将图像分解成系列子图,由于子图相对原图很小,因此受阴影或对比度空间变化等带来的问题的影响会比较小。然后对每个子图计算一个局部阈值(此时的阈值可用任何一种固定阈值选取方法)。通过对这些子图所得到的阈值进行插值,就可以得到对原图中每个象素进行分割所需要的合理阈值。这里对应每个象素的阈值合起来构成的一个曲面,叫做阈值曲面。
5.1.2 水线阈值算法
水线(也称分水岭或流域,watershed)阈值算法可以看成是一种特殊的自适应迭代阈值方法,它的基本思想是:初始时,使用一个较大的阈值将两个目标分开,但目标间的间隙很大;在减小阈值的过程中,两个目标的边界会相向扩张,它们接触前所保留的最后像素集合就给出了目标间的最终边界,此时也就得到了阈值。
5.1.3 其它的局部阈值法
文献[30]提出了一种基于阈值曲面的二维遗传算法。遗传算法是基于进化论中自然选择机理的、并行的、统计的随机化搜索方法,所以在图像处理中常用来确定分割阈值。
文献[31] [32]中提出一种基于局部梯度最大值的插值方法。首先平滑图像,并求得具有局部梯度最大值的像素点,然后利用这些像素点的位置和灰度在图像上内插,得到灰度级阈值表面。
除此之外,典型的局部阈值方法还有White和Rohrer[33]的加权移动平均阈值方法,Perez和Gonzalez[34]的适用于非均匀照射下图像的局部阈值方法以及Shio[35]的与照射无关的对比度度量阈值方法等。总的来说,这类算法的时间和空间复杂度都较大,但是抗噪能力强,对一些使用全局阈值法不宜分割的图像具有较好的效果。
5.2 多阈值法
很显然,如果图像中含有占据不同灰度级区域的几个目标,则需要使用多个阈值才能将它们分开。其实多域值分割,可以看作单阈值分割的推广,前面讨论的大部分阈值化技术,诸如Otsu的最大类间方差法, Kapur的最大熵方法、矩量保持法和最小误差法等等都可以推广到多阈值的情形。以下介绍另外几种多阈值方法。
5.2.1 基于小波的多域值方法。
小波变换的多分辨率分析能力也可以用于直方图分析[36],一种基于直方图分析的多阈值选取方法思路如下:首先在粗分辨率下,根据直方图中独立峰的个数确定分割区域的类数,这里要求独立峰应该满足三个条件:(1)具有一定的灰度范围;(2)具有一定的峰下面积;(3)具有一定的峰谷差。然后,在相邻峰之间确定最佳阈值,这一步可以利用多分辨的层次结构进行。首先在最低分辨率一层进行,然后逐渐向高层推进,直到最高分辨率。可以基于最小距离判据对在最低层选取的所有阈值逐层跟踪,最后以最高分辨率层的阈值为最佳阈值。
5.2.2 基于边界点的递归多域值方法。
这是一种递归的多阈值方法。首先,将象素点分为边界点和非边界点两类,边界点再根据它们的邻域的亮度分为较亮的边界点和较暗的边界点两类,然后用这两类边界点分别作直方图,取两个直方图中的最高峰多对应的灰度级作为阈值。接下去,再分别对灰度级高于和低于此阈值的像素点递归的使用这一方法,直至得到预定的阈值数。
5.2.3 均衡对比度递归多域值方法。
首先,对每一个可能阈值计算它对应于它的平均对比度
其中, 是阈值为 时图像总的对比度, 是阈值 检测到的边界点的数目。然后,选择 的直方图上的峰值所对应的灰度级为最佳阈值。对于多阈值情形,首先用这种方法确定一个初始阈值,接着,去掉初始阈值检测到的边界点的贡献再做一次 的直方图,并依据新的直方图选择下一个阈值。这一过程可以这样一直进行下去,直到任何阈值的最大平均对比度小于某个给定的限制为止。
6 阈值化算法评价简介
尽管人们在图像分割方面做了许多研究工作,但由于尚无通用的分割理论,现已提出的分割算法大都是针对具体问题的,并没有一种适合于所有图像的通用的分割算法。另一方面,给定一个实际图像分割问题要选择合用的分割算法也还没有标准的方法。为解决这些问题需要研究对图像分割的评价问题。分割评价是改进和提高现有算法性能、改善分割质量和指导新算法研究的重要手段。
然而,如同所有的图像分割方法一样,阈值化结果的评价是一个比较困难的问题。事实上对图像分割本身还缺乏比较系统的精确的研究,因此对其评价则更差一些。人们先后已经提出了几十个评价准则。这些准则中又有定性的,也有定量的;有分析算法的,也有检测实验结果的,文献[37]将它们大致分为13类。
文献[4] 中选择摄影师、建筑物和模特三幅图像作为标准图像,并采用趋于一致性度量和形状参数对几种常用的全局阈值方法的分割结果进行了评价。结果表明对于这三幅图像,如果希望得到的二值图像比较均匀且目标的形状较好,推荐使用最大熵方法、矩量保持方法和最大类间方差法。
文献[38] 中以磁盘及鹤模型作标准图像,在噪声条件下用错分概率、形状和均匀性度量作为标准评估了五种常见的整体阈值选取方法的性能。这五种方法是四元树方法、矩量保持法、最大类间方差法、最大熵方法和简单统计法。结果表明各种方法的性能不仅与所处理的图像有关,而且也和所选用的准则有关。该文献也指出,对于一般实时应用来说,可以选择最大类间方差方法和简单统计法。
最后,评价的目的是为了能指导、改进和提高分割,如何把评价和分割应用联系起来尚有许多工作要做。一个可能的方法是结合人工智能技术,建立分割专家系统[45],以有效的利用评价结果进行归纳推理,从而把对图像的分割由目前比较盲目的试验阶段推进到系统地实现的阶段。
‘柒’ 自动确定图像二值化最佳阈值的方法
阈值将原图象分成前景,背景两个图象。
前景:用n1, csum, m1来表示在当前阈值下的前景的点数,质量矩,平均灰度
后景:用n2, sum-csum, m2来表示在当前阈值下的背景的点数,质量矩,平均灰度
当取最佳阈值时,背景应该与前景差别最大,关键在于如何选择衡量差别的标准
而在otsu算法中这个衡量差别的标准就是最大类间方差(英文简称otsu,这也就是这个算法名字的来源)
在本程序中类间方差用sb表示,最大类间方差用fmax
关于最大类间方差法(otsu)的性能:
类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。
当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。
最大最大类间方差法(otsu)的公式推导:
记t为前景与背景的分割阈值,前景点数占图像比例为w0, 平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。
则图像的总平均灰度为:u=w0*u0+w1*u1。
前景和背景图象的方差:g=w0*(u0-u)*(u0-u)+w1*(u1-u)*(u1-u)=w0*w1*(u0-u1)*(u0-u1),此公式为方差公式,可参照概率论课本
上面的g的公式也就是下面程序中的sb的表达式
当方差g最大时,可以认为此时前景和背景差异最大,也就是此时的灰度是最佳阈值
unsafe public int GetThreshValue(Bitmap image)
{
BitmapData bd = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.WriteOnly, image.PixelFormat);
byte* pt = (byte*)bd.Scan0;
int[] pixelNum = new int[256]; //图象直方图,共256个点
byte color;
byte* pline;
int n, n1, n2;
int total; //total为总和,累计值
double m1, m2, sum, csum, fmax, sb; //sb为类间方差,fmax存储最大方差值
int k, t, q;
int threshValue = 1; // 阈值
int step = 1;
switch (image.PixelFormat)
{
case PixelFormat.Format24bppRgb:
step = 3;
break;
case PixelFormat.Format32bppArgb:
step = 4;
break;
case PixelFormat.Format8bppIndexed:
step = 1;
break;
}
//生成直方图
for (int i = 0; i < image.Height; i++)
{
pline = pt + i * bd.Stride;
for (int j = 0; j < image.Width; j++)
{
color = *(pline + j * step); //返回各个点的颜色,以RGB表示
pixelNum[color]++; //相应的直方图加1
}
}
//直方图平滑化
for (k = 0; k <= 255; k++)
{
total = 0;
for (t = -2; t <= 2; t++) //与附近2个灰度做平滑化,t值应取较小的值
{
q = k + t;
if (q < 0) //越界处理
q = 0;
if (q > 255)
q = 255;
total = total + pixelNum[q]; //total为总和,累计值
}
pixelNum[k] = (int)((float)total / 5.0 + 0.5); //平滑化,左边2个+中间1个+右边2个灰度,共5个,所以总和除以5,后面加0.5是用修正值
}
//求阈值
sum = csum = 0.0;
n = 0;
//计算总的图象的点数和质量矩,为后面的计算做准备
for (k = 0; k <= 255; k++)
{
sum += (double)k * (double)pixelNum[k]; //x*f(x)质量矩,也就是每个灰度的值乘以其点数(归一化后为概率),sum为其总和
n += pixelNum[k]; //n为图象总的点数,归一化后就是累积概率
}
fmax = -1.0; //类间方差sb不可能为负,所以fmax初始值为-1不影响计算的进行
n1 = 0;
for (k = 0; k < 255; k++) //对每个灰度(从0到255)计算一次分割后的类间方差sb
{
n1 += pixelNum[k]; //n1为在当前阈值遍前景图象的点数
if (n1 == 0) { continue; } //没有分出前景后景
n2 = n - n1; //n2为背景图象的点数
if (n2 == 0) { break; } //n2为0表示全部都是后景图象,与n1=0情况类似,之后的遍历不可能使前景点数增加,所以此时可以退出循环
csum += (double)k * pixelNum[k]; //前景的“灰度的值*其点数”的总和
m1 = csum / n1; //m1为前景的平均灰度
m2 = (sum - csum) / n2; //m2为背景的平均灰度
sb = (double)n1 * (double)n2 * (m1 - m2) * (m1 - m2); //sb为类间方差
if (sb > fmax) //如果算出的类间方差大于前一次算出的类间方差
{
fmax = sb; //fmax始终为最大类间方差(otsu)
threshValue = k; //取最大类间方差时对应的灰度的k就是最佳阈值
}
}
image.UnlockBits(bd);
image.Dispose();
return threshValue;
}
‘捌’ 图像分割的分割方法
灰度阈值分割 法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换:
其中,T为阈值,对于物体的图像元素g(i,j)=1,对于背景的图像元素g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值逐个进行比较,而且像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
阈值分割的优点是计算简单、运算效率较高、速度快。在重视运算效率的应用场合(如用于硬件实现),它得到了广泛应用。
人们发展了各种各样的阈值处理技术,包括全局阈值、自适应阈值、最佳阈值等等。
全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。它是根据整幅图像确定的:T=T(f)。但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。
在许多情况下,物体和背景的对比度在图像中的各处不是一样的,这时很难用一个统一的阈值将物体与背景分开。这时可以根据图像的局部特征分别采用不同的阈值进行分割。实际处理时,需要按照具体问题将图像分成若干子区域分别选择阈值,或者动态地根据一定的邻域范围选择每点处的阈值,进行图像分割。这时的阈值为自适应阈值。
阈值的选择需要根据具体问题来确定,一般通过实验来确定。对于给定的图像,可以通过分析直方图的方法确定最佳的阈值,例如当直方图明显呈现双峰情况时,可以选择两个峰值的中点作为最佳阈值。
图1(a)和(b)分别为用全局阈值和自适应阈值对经典的Lena图像进行分割的结果。
区域生长和分裂合并法是两种典型的串行区域技术,其分割过程后续步骤的处理要根据前面步骤的结果进行判断而确定。 区域生长 区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。这样一个区域就长成了。
区域生长需要选择一组能正确代表所需区域的种子像素,确定在生长过程中的相似性准则,制定让生长停止的条件或准则。相似性准则可以是灰度级、彩色、纹理、梯度等特性。选取的种子像素可以是单个像素,也可以是包含若干个像素的小区域。大部分区域生长准则使用图像的局部性质。生长准则可根据不同原则制定,而使用不同的生长准则会影响区域生长的过程。区域生长法的优点是计算简单,对于较均匀的连通目标有较好的分割效果。它的缺点是需要人为确定种子点,对噪声敏感,可能导致区域内有空洞。另外,它是一种串行算法,当目标较大时,分割速度较慢,因此在设计算法时,要尽量提高效率。
区域分裂合并
区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标提取。分裂合并差不多是区域生长的逆过程:从整个图像出发,不断分裂得到各个子区域,然后再把前景区域合并,实现目标提取。分裂合并的假设是对于一幅图像,前景区域由一些相互连通的像素组成的,因此,如果把一幅图像分裂到像素级,那么就可以判定该像素是否为前景像素。当所有像素点或者子区域完成判断以后,把前景区域或者像素合并就可得到前景目标。
在这类方法中,最常用的方法是四叉树分解法(如图3所示)。设R代表整个正方形图像区域,P代表逻辑谓词。基本分裂合并算法步骤如下:(1)对任一个区域,如果H(Ri)=FALSE就将其分裂成不重叠的四等份;
(2)对相邻的两个区域Ri和Rj,它们也可以大小不同(即不在同一层),如果条件H(Ri∪Rj)=TRUE满足,就将它们合并起来。
(3)如果进一步的分裂或合并都不可能,则结束。
分裂合并法的关键是分裂合并准则的设计。这种方法对复杂图像的分割效果较好,但算法较复杂,计算量大,分裂还可能破坏区域的边界。 图像分割的一种重要途径是通过边缘检测,即检测灰度级或者结构具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方。这种不连续性称为边缘。不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。
图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。因此常用微分算子进行边缘检测。常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh算子等。在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。
由于边缘和噪声都是灰度不连续点,在频域均为高频分量,直接采用微分运算难以克服噪声的影响。因此用微分算子检测边缘前要对图像进行平滑滤波。LoG算子和Canny算子是具有平滑功能的二阶和一阶微分算子,边缘检测效果较好,如图4所示。其中loG算子是采用Laplacian算子求高斯函数的二阶导数,Canny算子是高斯函数的一阶导数,它在噪声抑制和边缘检测之间取得了较好的平衡。关于微分算子的边缘检测的详细内容可参考文献 。 与其他图像分割方法相比,基于直方图的方法是非常有效的图像分割方法,因为他们通常只需要一个通过像素。在这种方法中,直方图是从图像中的像素的计算,并在直方图的波峰和波谷是用于定位图像中的簇。颜色和强度可以作为衡量。
这种技术的一种改进是递归应用直方图求法的集群中的形象以分成更小的簇。重复此操作,使用更小的簇直到没有更多的集群的形成。
基于直方图的方法也能很快适应于多个帧,同时保持他们的单通效率。直方图可以在多个帧被考虑的时候采取多种方式。同样的方法是采取一个框架可以应用到多个,和之后的结果合并,山峰和山谷在以前很难识别,但现在更容易区分。直方图也可以应用于每一个像素的基础上,将得到的信息被用来确定的像素点的位置最常见的颜色。这种方法部分基于主动对象和一个静态的环境,导致在不同类型的视频分割提供跟踪。
‘玖’ 阀值法是什么方法
阀值(Threshold):决定多大反差的相邻像素边界可以被锐化处理,而低于此反差值就不作锐化。阀值的设置是避免因锐化处理而导致的斑点和麻点等问题的关键参数,正确设置后就可以使图像既保持平滑的自然色调(例如背景中纯蓝色的天空)的完美,又可以对变化细节的反差作出强调。在一般的印前处理中我们推荐的值为3到4,超过10是不可取的,它们会降低锐化处理效果并使图像显得很难看。
‘拾’ 图像分割
图像阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。它特别适用于目标和背景占据不同灰度级范围的图像。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。
图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域不具有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。
基本原理是:通过设定不同的特征阈值,把图像象素点分为若干类。
常用的特征包括:直接来自原始图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征。
设原始图像为f(x,y),按照一定的准则f(x,y)中找到特征值T,将图像分割为两个部分,分割后的图像为:
若取:b0=0(黑),b1=1(白),即为我们通常所说的图像二值化。
阈值分割方法实际上是输入图像f到输出图像g的如下变换:
其中,T为阈值,对于物体的图像元素g(i,j)=1,对于背景的图像元素g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。阈值确定后,将阈值与像素点的灰度值逐个进行比较,而且像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
阈值分割的优点是计算简单、运算效率较高、速度快。有着各种各样的阈值处理技术,包括全局阈值、自适应阈值、最佳阈值等等。
阈值处理技术参看:
区域分割是讲图像按照相似性准则分成不同的区域,主要包括区域增长,区域分裂合并和分水岭等几种类型。
区域生长是一种串行区域分割的图像分割方法。区域生长是指从某个像素出发,按照一定的准则,逐步加入邻近像素,当满足一定的条件时,区域生长终止。区域生长的好坏决定于1. 初始点(种子点)的选取。 2. 生长准则。 3. 终止条件 。区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标的提取。
区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。这样一个区域就长成了。
区域生长需要选择一组能正确代表所需区域的种子像素,确定在生长过程中的相似性准则,制定让生长停止的条件或准则。相似性准则可以是灰度级、彩色、纹理、梯度等特性。选取的种子像素可以是单个像素,也可以是包含若干个像素的小区域。大部分区域生长准则使用图像的局部性质。生长准则可根据不同原则制定,而使用不同的生长准则会影响区域生长的过程。
图1是区域增长的示例。
区域生长是一种古老的图像分割方法,最早的区域生长图像分割方法是由Levine等人提出的。该方法一般有两种方式,一种是先给定图像中要分割的目标物体内的一个小块或者说种子区域(seed point),再在种子区域基础上不断将其周围的像素点以一定的规则加入其中,达到最终将代表该物体的所有像素点结合成一个区域的目的;另一种是先将图像分割成很多的一致性较强,如区域内像素灰度值相同的小区域,再按一定的规则将小区域融合成大区域,达到分割图像的目的,典型的区域生长法如T. C. Pong等人提出的基于小面(facet)模型的区域生长法,区域生长法固有的缺点是往往会造成过度分割,即将图像分割成过多的区域
区域生长实现的步骤如下:
区域分裂合并算法的基本思想是先确定一个分裂合并的准则,即区域特征一致性的测度,当图像中某个区域的特征不一致时就将该区域分裂成4个相等的子区域,当相邻的子区域满足一致性特征时则将它们合成一个大区域,直至所有区域不再满足分裂合并的条件为止。当分裂到不能再分的情况时,分裂结束,然后它将查找相邻区域有没有相似的特征,如果有就将相似区域进行合并,最后达到分割的作用。在一定程度上区域生长和区域分裂合并算法有异曲同工之妙,互相促进相辅相成的,区域分裂到极致就是分割成单一像素点,然后按照一定的测量准则进行合并,在一定程度上可以认为是单一像素点的区域生长方法。区域生长比区域分裂合并的方法节省了分裂的过程,而区域分裂合并的方法可以在较大的一个相似区域基础上再进行相似合并,而区域生长只能从单一像素点出发进行生长(合并)。
反复进行拆分和聚合以满足限制条件的算法。
令R表示整幅图像区域并选择一个谓词P。对R进行分割的一种方法是反复将分割得到的结果图像再次分为四个区域,直到对任何区域Ri,有P(Ri)=TRUE。这里是从整幅图像开始。如果P(R)=FALSE,就将图像分割为4个区域。对任何区域如果P的值是FALSE.就将这4个区域的每个区域再次分别分为4个区域,如此不断继续下去。这种特殊的分割技术用所谓的四叉树形式表示最为方便(就是说,每个非叶子节点正好有4个子树),这正如图10.42中说明的树那样。注意,树的根对应于整幅图像,每个节点对应于划分的子部分。此时,只有R4进行了进一步的再细分。
如果只使用拆分,最后的分区可能会包含具有相同性质的相邻区域。这种缺陷可以通过进行拆分的同时也允许进行区域聚合来得到矫正。就是说,只有在P(Rj∪Rk)=TRUE时,两个相邻的区域Rj和Rk才能聚合。
前面的讨论可以总结为如下过程。在反复操作的每一步,我们需要做:
可以对前面讲述的基本思想进行几种变化。例如,一种可能的变化是开始时将图像拆分为一组图象块。然后对每个块进一步进行上述拆分,但聚合操作开始时受只能将4个块并为一组的限制。这4个块是四叉树表示法中节点的后代且都满足谓词P。当不能再进行此类聚合时,这个过程终止于满足步骤2的最后的区域聚合。在这种情况下,聚合的区域可能会大小不同。这种方法的主要优点是对于拆分和聚合都使用同样的四叉树,直到聚合的最后一步。
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
分水岭的计算过程是一个迭代标注过程。分水岭比较经典的计算方法是L. Vincent提出的。在该算法中,分水岭计算分两个步骤,一个是排序过程,一个是淹没过程。首先对每个像素的灰度级进行从低到高排序,然后在从低到高实现淹没过程中,对每一个局部极小值在h阶高度的影响域采用先进先出(FIFO)结构进行判断及标注。
分水岭变换得到的是输入图像的集水盆图像,集水盆之间的边界点,即为分水岭。显然,分水岭表示的是输入图像极大值点。因此,为得到图像的边缘信息,通常把梯度图像作为输入图像,即
分水岭算法对微弱边缘具有良好的响应,图像中的噪声、物体表面细微的灰度变化,都会产生过度分割的现象。但同时应当看出,分水岭算法对微弱边缘具有良好的响应,是得到封闭连续边缘的保证的。另外,分水岭算法所得到的封闭的集水盆,为分析图像的区域特征提供了可能。
为消除分水岭算法产生的过度分割,通常可以采用两种处理方法,一是利用先验知识去除无关边缘信息。二是修改梯度函数使得集水盆只响应想要探测的目标。
为降低分水岭算法产生的过度分割,通常要对梯度函数进行修改,一个简单的方法是对梯度图像进行阈值处理,以消除灰度的微小变化产生的过度分割。即
程序可采用方法:用阈值限制梯度图像以达到消除灰度值的微小变化产生的过度分割,获得适量的区域,再对这些区域的边缘点的灰度级进行从低到高排序,然后在从低到高实现淹没的过程,梯度图像用Sobel算子计算获得。对梯度图像进行阈值处理时,选取合适的阈值对最终分割的图像有很大影响,因此阈值的选取是图像分割效果好坏的一个关键。缺点:实际图像中可能含有微弱的边缘,灰度变化的数值差别不是特别明显,选取阈值过大可能会消去这些微弱边缘。
参考文章:
图像分割的一种重要途径是通过边缘检测,即检测灰度级或者结构具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方。这种不连续性称为边缘。不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。
图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。因此常用微分算子进行边缘检测。常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh算子等。在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。
由于边缘和噪声都是灰度不连续点,在频域均为高频分量,直接采用微分运算难以克服噪声的影响。因此用微分算子检测边缘前要对图像进行平滑滤波。LoG算子和Canny算子是具有平滑功能的二阶和一阶微分算子,边缘检测效果较好,
在边缘检测算法中,前三个步骤用得十分普遍。这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向.边缘检测误差通常是指边缘误分类误差,即把假边缘判别成边缘而保留,而把真边缘判别成假边缘而去掉.边缘估计误差是用概率统计模型来描述边缘的位置和方向误差的.我们将边缘检测误差和边缘估计误差区分开,是因为它们的计算方法完全不同,其误差模型也完全不同.
Roberts算子 :边缘定位准,但是对噪声敏感。适用于边缘明显且噪声较少的图像分割。Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。
Prewitt算子 :对噪声有抑制作用,抑制噪声的原理是通过像素平均,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。
Sobel算子 :Sobel算子和Prewitt算子都是加权平均,但是Sobel算子认为,邻域的像素对当前像素产生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子结果产生的影响也不同。一般来说,距离越远,产生的影响越小。
Isotropic Sobel算子 :加权平均算子,权值反比于邻点与中心点的距离,当沿不同方向检测边缘时梯度幅度一致,就是通常所说的各向同性。
在边沿检测中,常用的一种模板是Sobel 算子。Sobel 算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的 。Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的,另一个是检测垂直平边沿的 。各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序并没有给出各向同性Sobel算子的处理方法。
1971年,R.Kirsch[34]提出了一种能检测边缘方向的Kirsch算子新方法:它使用了8个模板来确定梯度幅度值和梯度的方向。
图像中的每个点都用8个掩模进行卷积,每个掩模对某个特定边缘方向作出最大响应。所有8个方向中的最大值作为边缘幅度图像的输出。最大响应掩模的序号构成了对边缘方向的编码。
Kirsch算子的梯度幅度值用如下公式:
不同检测算子的对比:
参考文章:
文章引用于 木夜溯
编辑 Lornatang
校准 Lornatang