图像阈值分割和边缘检测技术原理和比较摘要图像分割是一种重要的图像分析技术。
对图像分割的研究一直是图像技术研究中的热点和焦点。
医学图像分割是图像分割的一个重要应用领域,也是一个经典难题,至今已有上千种分割方法,既有经典的方法也有结合新兴理论的方法。
医学图像分割是医学图像处理中的一个经典难题。
图像分割能够自动或半自动描绘出医学图像中的解剖结构和其它感兴趣的区域,从而有助于医学诊断。
阈值分割是一种利用图像中要提取的目标物与其背景在灰度特性上的差异,把图像视为具有不同灰度级的两类区域(目标和背景)的组合,选取一个合适的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生对应的二值图像。
本文先介绍各种常见图像阈值分割和边缘检测方法的原理和算法,然后通过MATLAB 程序实现,最后通过比较各种分割算法的结果并得出结论。
关键词:图像分割;阈值选择;边缘检测;目录1.概述 (4)2.图像阈值分割和边缘检测原理 (4)2.1.阈值分割原理 (4)2.1.1.手动(全局)阈值分割 (5)2.1.2.迭代算法阈值分割 (6)2.1.3.大津算法阈值分割 (6)2.2.边缘检测原理 (6)2.2.1.roberts算子边缘检测 (7)2.2.2.prewitt算子边缘检测 (7)2.2.3.sobel算子边缘检测 (7)2.2.4.高斯laplacian算子边缘检测 (8)2.2.5.canny算子边缘检测 (8)3.设计方案 (9)4.实验过程 (10)4.1.阈值分割 (12)4.1.1.手动(全局)阈值分割 (12)4.1.2.迭代算法阈值分割 (12)4.1.3.大津算法阈值分割 (12)4.2.边缘检测 (13)4.2.1.roberts算子边缘检测 (13)4.2.2.prewitt算子边缘检测 (13)4.2.3.sobel算子边缘检测 (13)4.2.4.高斯laplacian算子边缘检测 (13)4.2.5.canny算子边缘检测 (14)5.试验结果及分析 (14)5.1.实验结果 (14)5.1.1.手动(全局)阈值分割 (14)5.1.2.迭代算法阈值分割 (17)5.1.3.大津算法阈值分割 (18)5.1.4.roberts算子边缘检测 (19)5.1.5.prewitt算子边缘检测 (20)5.1.6.sobel算子边缘检测 (21)5.1.7.高斯laplacian算子边缘检测 (22)5.1.8.canny算子边缘检测 (23)5.2. 实验结果分析和总结 (24)参考文献 (24)1.概述图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同[37].简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。
图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。
阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。
在工业生产中,机器视觉运用于产品质量检测等等。
在这些应用中,分割是对图像进一步分析、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。
图像分析和理解的第一步常常是边缘检测。
边缘检测方法是人们研究得比较多的一种方法,它通过检测图像中不同区域的边缘来达到分割图像的目的。
边缘检测的实质是采用某种算法来提取出图像中对象与背景问的交界线。
我们将边缘定义为图像中灰度发生急剧变化的区域边界。
图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。
经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的。
2.图像阈值分割和边缘检测原理2.1.阈值分割原理对灰度图像的取阈值分割就是先确定一个处于图像灰度取值范围之中的灰度阈值,然后将图像中各个像素的灰度值都与这个阈值相比较,并根据比较结果将对应的像素分为两类。
这两类像素一般分属图像的两类区域,从而达到分割的目的。
阈值分割算法主要有两个步骤:(1)确定需要的阈值;(2)将分割阈值与像素值比较以划分像素。
可以看出,确定一个最优阈值是分割的关键。
现有的大部分算法都是集中在阈值确定的研究上。
阈值分割方法根据图像本身的特点,可分为单阈值分割方法和多阈值分割方法:也可分为基于像素值的阈值分割方法、基于区域性质的阈值分割方法和基于坐标位置的阈值分割方法.若考虑分割算法所用的特征或准则的特点,还可以分为直方图与直方图变换法、最大类空间方差法、最小误差法与均匀化误差法、共生矩阵法、最大熵法、简单统计法与局部特性法、概率松弛法、模糊集法等。
在这里我们只介绍手动阈值分割(又称双峰阈值分割或者全局阈值分割),迭代算法阈值分割,大津法(OTSU 法)阈值分割。
2.1.1.手动(全局)阈值分割手动阈值分割算法,由于工作原理是用一个手动设定的灰度阈值对整个图像做分割,进而产生二值图像,所以又称全局分割算饭,同时这种分割算法对于图像灰度直方图呈双峰分布时比较有效,故又称双峰分割算法。
若图像中目标和背景具有不同的灰度集合:目标灰度集合与背景灰度集合,且两个灰度集合可用一个灰度级阈值T 进行分割。
这样就可以用阈值分割灰度级的方法在图像中分割出目标区域与背景区域,这种方法称为灰度阈值分割方法。
在物体与背景有较强的对比度的图像中,此种方法应用特别有效。
比如说物体内部灰度分布均匀一致,背景在另一个灰度级上也分布均匀,这时利用阈值可以将目标与背景分割得很好。
如果目标和背景的差别是某些其他特征而不是灰度特征时,那么先将这些特征差别转化为灰度差别,然后再应用阈值分割方法进行处理,这样使用阈值分割技术也可能是有效的 设图像为f(x,y),其灰度集范围是[0,L],在0和L 之间选择一个合适的灰度阈值T ,则图像分割方法可由式(2.1)描述 (2.1)这样得到的g(x,y)是一幅二值图像。
这时T 的大小将直接影响分割的效果。
由于这种分割算法适用范围有限,而且要手动设定灰度阈值,过程复杂而且有时灰度阈值不易寻找,进而出现了自动阈值分割,主要是迭代算法和大津算法(OTSU )阈值分割。
⎩⎨⎧=T < y)f(x, 0T > y)f(x, 1),(if if y x g2.1.2.迭代算法阈值分割迭代算法是对双峰法的改进,它首先选择一个近似阈值T,将图像分割成两个部分G1和G2,然后计算G1和G2像素的平均灰度值m1和m2,选择新的分割阈值T= T = (m1 + m2) / 2;重复以上步骤,知道T不变为止。
迭代法适合图像直方图有明显波谷。
迭代算法是基于逼近的思想,其主要步骤如下:1.为全局阈值选择一个初始估计值T(图像的平均灰度)。
2.用T分割图像。
产生两组像素:G1有灰度值大于T的像素组成,G2有小于等于T 像素组成。
3.计算G1和G2像素的平均灰度值m1和m2;4.计算一个新的阈值:T = (m1 + m2) / 2;5.重复步骤2和4,直到连续迭代中的T值间的差小于一个预定义参数为止。
然后再用阈值分割对图像进行分割得到二值灰度图像。
2.1.3.大津算法阈值分割大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于1979年提出。
从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差最大。
对于图像f(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。
图像的总平均灰度记为μ,类间方差记为g。
假设图像的背景较暗,并且图像的大小为M×N,图像中像素的灰度值小于阈值T的像素个数记作N0,像素灰度大于阈值T的像素个数记作N1,则有:ω0=N0/ M×N (1)ω1=N1/ M×N (2)N0+N1=M×N (3)ω0+ω1=1(4)μ=ω0*μ0+ω1*μ1 (5)g=ω0(μ0-μ)^2+ω1(μ1-μ)^2 (6)将式(5)代入式(6),得到等价公式:g=ω0ω1(μ0-μ1)^2 (7)这就是类间方差采用遍历的方法得到使类间方差g最大的阈值T,即为所求。
然后再用所得到的T进行全局阈值分割得到二值图像。
2.2.边缘检测原理图像分析和理解的第一步常常是边缘检测。
边缘检测方法是人们研究得比较多的一种方法,它通过检测图像中不同区域的边缘来达到分割图像的目的。
边缘检测的实质是采用某种算法来提取出图像中对象与背景问的交界线。
我们将边缘定义为图像中灰度发生急剧变化的区域边界。
图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。
经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的。
2.2.1.roberts算子边缘检测函数的梯度定义为通常把梯度的模叫做图象的梯度。
对于数字图象,可以用差分来近似微分roberts算子模板的形式就是2.2.2.prewitt算子边缘检测Prewitt算子由两部分组成,检测水平边缘的模板和检测垂直边缘的模板。
对数字图像f(x,y),Prewitt算子的定义如下:水平方向Gx=[f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)]-[f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)] 垂直方向Gy=[f(i-1,j+1)+f(i,j+1)+f(i+1,j+1)]-[f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)] G(i,j)=|Gx|+|Gy|。
经典Prewitt算子认为:凡灰度新值大于或等于阈值的像素点都是边缘点。
即选择适当的阈值T,若G(i,j)≥T,则G(i,j)为边缘点。
这种判定是欠合理的,会造成边缘点的误判,因为许多噪声点的灰度值也很大,而且对于幅值较小的边缘点,其边缘反而丢失了。
2.2.3.sobel算子边缘检测Sobel算子也有两个,一个是检测水平边缘的模板,另一个是检测水平边缘的模板。