版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图像阈值分割和边缘检测技术原理和比较本中翻找大学图像分割是一种重要的图像分析技术。对图像分割的研究一直是图像技术研究中的热点和焦点。医学图像分割是图像分割的一个重要应用领域,也是一个经典难题,至今已有上千种分割方法,既有经典的方法也有结合新兴理论的方法。医学图像分割是医学图像处理中的一个经典难题。图像分割能够自动或半自动描绘出医学图像中的解剖结构和其它感兴趣的区域,从而有助于医学诊断。阈值分割是一种利用图像中要提取的目标物与其背景在灰度特性上的差异,把图像视为具有不同灰度级的两类区域(目标和背景)的组合,选取一个合适的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生对应的二值
2、图像。本文先介绍各种常见图像阈值分割和边缘检测方法的原理和算法,然后通过 MATLAB程序实现,最后通过比较各种分割算法的结果并得出结论。关键词:图像分割;阈值选择;边缘检测;目录1 .概述 42 .图像阈值分割和边缘检测原理 42.1. 阈值分割原理 42.1.1.手动(全局)阈值分割 52.1.2.迭代算法阈值分割 62.1.3.大津算法阈值分割 62.2. 边缘检测原理 62.2.1.roberts 算子边缘检测 72.2.2.prewitt 算子边缘检测 72.2.3.sobel 算子边缘检测 72.2.4.高斯 laplacian 算子边缘检测 82.2.5.canny 算子边缘检测
3、 83 .设计方案 94 .实验过程 104.1. 阈值分害 U124.1.1.手动(全局)阈值分割 124.1.2.迭代算法阈值分割 124.1.3.大津算法阈值分割 124.2. 边缘检测 134.2.1.roberts 算子边缘检测 134.2.2.prewitt 算子边缘检测 134.2.3.sobel 算子边缘检测 134.2.4.高斯 laplacian 算子边缘检测 134.2.5.canny 算子边缘检测 145 .试验结果及分析 145.1. 实验结果 145.1.1.手动(全局)阈值分割 145.1.2.迭代算法阈值分割 175.1.3.大津算法阈值分割 185.1.4.r
4、oberts 算子边缘检测 195.1.5.prewitt 算子边缘检测 205.1.6.sobel 算子边缘检测 215.1.7.高斯 laplacian 算子边缘检测 225.1.8.canny 算子边缘检测 235.2. 实验结果分析和总结 24参考文献 241.概述图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同37.简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行
5、视觉分析和模式识别的基本前提.同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、
6、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。图像分析和理解的第一步常常是边缘检测。边缘检测方法是人们研究得比较多的一种方法,它通过检测图像中不同区域的边缘来达到分割图像的目的。边缘检测的实质是采用某种算法来提取出图像中对象与背景问的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的。2.图像阈值分割和边缘检测原理2.1. 阈值分割原理对灰度图像的
7、取阈值分割就是先确定一个处于图像灰度取值范围之中的灰度阈值,然后将图像中各个像素的灰度值都与这个阈值相比较,并根据比较结果将对应的像素分为两类。这两类像素一般分属图像的两类区域,从而达到分割的目的。阈值分割算法主要有两个步骤:2.1.1.要的阈值;2.1.2.阈值与像素值比较以划分像素。可以看出,确定一个最优阈值是分割的关键。现有的大部分算法都是集中在阈值确定的研究上。阈值分割方法根据图像本身的特点,可分为单阈值分割方法和多阈值分割方法:也可分为基于像素值的阈值分割方法、基于区域性质的阈值分割方法和基于坐标位置的阈值分割方法.若考虑分割算法所用的特征或准则的特点,还可以分为直方图与直方图变换法
8、、最大类空间方差法、最小误差法与均匀化误差法、共生矩阵法、最大嫡法、简单统计法与局部特性法、概率松弛法、模糊集法等。在这里我们只介绍手动阈值分割(又称双峰阈值分割或者全局阈值分割),迭代算法阈值分割,大津法(OTSUt)阈值分割。2.1.3. 手动(全局)阈值分割手动阈值分割算法,由于工作原理是用一个手动设定的灰度阈值对整个图像做分割,进而产生二值图像,所以又称全局分割算饭,同时这种分割算法对于图像灰度直方图呈双峰分布时比较有效,故又称双峰分割算法。若图像中目标和背景具有不同的灰度集合:目标灰度集合与背景灰度集合,且两个灰度集合可用一个灰度级阈值 T 进行分割。这样就可以用阈值分割灰度级的方法
9、在图像中分割出目标区域与背景区域,这种方法称为灰度阈值分割方法。在物体与背景有较强的对比度的图像中,此种方法应用特别有效。比如说物体内部灰度分布均匀一致,背景在另一个灰度级上也分布均匀,这时利用阈值可以将目标与背景分割得很好。如果目标和背景的差别是某些其他特征而不是灰度特征时,那么先将这些特征差别转化为灰度差别,然后再应用阈值分割方法进行处理,这样使用阈值分割技术也可能是有效的设图像为 f(x,y),其灰度集范围是0,L,在 0 和 L 之间选择一个合适的灰度阈值 T,则图像分割方法可由式(2.1)描述;1iff(x.y)Tg(x,y)=、,丁Qiff(x,y)T(2.1)这样得到的 g(x,
10、y)是一幅二值图像。这时 T 的大小将直接影响分割的效果。由于这种分割算法适用范围有限,而且要手动设定灰度阈值,过程复杂而且有时灰度阈值不易寻找,进而出现了自动阈值分割,主要是迭代算法和大津算法(OTSU)阈值分割。2.1.4. 迭代算法阈值分割迭代算法是对双峰法的改进,它首先选择一个近似阈值 T,将图像分割成两个部分 G1和 G2,然后计算 G1 和 G2 像素的平均灰度值 ml 和 m2,选择新的分割阈值 T=T=(ml+m2)/2;重复以上步骤,知道 T 不变为止。迭代法适合图像直方图有明显波谷。迭代算法是基于逼近的思想,其主要步骤如下:1 .为全局阈值选择一个初始估计值 T(图像的平均
11、灰度)。2 .用 T 分割图像。 产生两组像素: G1 有灰度值大于 T 的像素组成, G2 有小于等于 T 像素组成。3 .计算 G1 和 G2 像素的平均灰度值 m1 和 m2;4 .计算一个新的阈值:T=(m1+m2)/2;5 .重复步骤 2 和 4,直到连续迭代中的 T 值间的差小于一个预定义参数为止。然后再用阈值分割对图像进行分割得到二值灰度图像。2.1.5. 大津算法阈值分割大津法(OTSU)是一种确定图像二值化分割阈值的算法,由日本学者大津于 1979 年提出。从大津法的原理上来讲,该方法又称作最大类间方差法,因为按照大津法求得的阈值进行图像二值化分割后,前景与背景图像的类间方差
12、最大。对于图像 f(x,y),前景(即目标)和背景的分割阈值记作 T,属于前景的像素点数占整幅图像的比例记为 3。,其平均灰度背景像素点数占整幅图像的比例为 31,其平均灰度为图像的总平均灰度记为(1,类间方差记为 go假设图像的背景较暗,并且图像的大小为 MKN,图像中像素的灰度值小于阈值 T 的像素个数记作 N0,像素灰度大于阈值 T 的像素个数记作 N1,则有:co0=N0/MXN(1)co1=N1/MXN(2)N0+N1=MN(3)30+31=1(4)(1=30*|10+co1*(11(5)g=co0(底 W)A2+co1(-口)A2(6)将式(5)代入式(6),得到等价公式:g=w0
13、co1(PQL1)A2(7)这就是类间方差采用遍历的方法得到使类间方差 g 最大的阈值 T,即为所求。然后再用所得到的 T 进行全局阈值分割得到二值图像。2.2. 边缘检测原理图像分析和理解的第一步常常是边缘检测。边缘检测方法是人们研究得比较多的一种方法,它通过检测图像中不同区域的边缘来达到分割图像的目的。边缘检测的实质是采用某种算法来提取出图像中对象与背景问的交界线。我们将边缘定义为图像中灰度发生急剧变化的区域边界。图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测
14、边缘这一目的。2.2.1.roberts 算子边缘检测通常把梯度的模叫做图象的梯度。对于数字图象,可以用差分来近似微分模板的形式就是Rqg 门交叉尊子模板Gx10010-1-10汕模板运苒貂巢工5=1*1/+0*/(x+1)+01)+(-1)+1+1)=八芯力-于 5+】,尸+D5=Q徐河+1+Dy+i)+o*/(x+1j+1)=了 5+1,沙)一杰小事+1)05a=|冉|+产)=,(工力一/(工+Lp+1)+1/5+L#一丁下十1)如果G5力大于第一颐值,EU我们认为七用点为边缘点.2.2.2.prewitt 算子边缘检测Prewitt 算子由两部分组成,检测水平边缘的模板和-7 口检测垂直
15、边缘的模板。对数字图像 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)牙狈 UG(i,j)为边缘点。这种判定是欠合理的,会造成边缘点的误判,因为许多噪声点的灰度值也很大,而且对
16、于幅值较小的边缘点,其边缘反而丢失了。函数的梯度定义为VZ(x)=-勺roberts 算子2.2.3.sobel 算子边缘检测Sobel 算子也有两个,一个是检测水平边缘的模板,另一个是检测水平边缘的。sobel 算子的另一种形式是各向同性 Sobel 算子,也有两个模板组成,Sobel 算子和普通Sobel 算子相比,位置加权系数更为准确,在检测不同方向的边缘时梯度的幅度一致。本文中我们使用原始的 sobel 算子。/冏 A+1)/(看尸一 1)/2 冏(/(#1+1)工一 1/-1)/2 到(/(#+1.y十】卜/(#+11)/2|吐疥局雨喉卜片日;4|+4Wj=(2(/(工+1,尸)_/
17、(工_1,)+(/(工_1i+1)_/(1_1 沙_1)+(/(工+1,尸+1)_/(工+1,尸1)/I,44 图+4T=:卜 2(/(工,+1)-/(37)-(或+%-)-/(星-12-1)-(/(犬+”+1)-/0-1+1)2.2.4.高斯 laplacian 算子边缘检测Laplacian 算子定义为wo型写a变公建Jlx22/它的差分形式为V/(xPy)-f(x+l,y)-/(jr,y)-/(xPy)-/(x-hy)J+11A兀.+1)/X-同e/X阳y)=/(r+I.+1)+4/(r+l,j?)口一10141laplacian 表示成模板的形式就是 1。-1。Laplace 算子是一
18、种各向同性算子,在只关心边缘的位置而不考虑其周围的象素灰度差值时比较合适。Laplace 算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用 Laplacian 算子检测边缘之前需要先进行低通滤波。在本文中我们先进性高斯平滑处理再使用 laplacian 算子进行边缘检测。2.2.5.canny 算子边缘检测Canny 边缘检测基本原理(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是 Canny 边缘检测算子。(3)类似与 Marr(LoG)边缘检测
19、方法,也属于先平滑后求导数的方法。一个是检测水平边缘的-1-仃-I0001五1,另一个是检测垂直边缘的-101o-1Q1。各向同性模板 L-1。Canny 边缘检测算法:stepl:用高斯滤波器平滑图象;step2:用一阶偏导的有限差分来计算梯度的幅值和方向;step3:对梯度幅值进行非极大值抑制;step4:用双阈值算法检测和连接边缘。3.设计方案这里通过 MATLAB 工具编写程序实现上述分割算法并给出处理后的结果,为了方便操作,形象的表示各分割算法的效果,通过一个 MATLAB 图形界面 GUI 窗口来进行操作,在图形窗口中有打开图像按钮,一输入和显示阈值的文本输入框,一个选择分割算法的
20、下拉菜单,以及一个显示原图像和一个显示处理后图像的坐标轴。先点击打开图像并选择电脑中的一幅图像,然后通过下拉菜单选择图像分割算法,在这里有两种情况,如果是选择手动阈值分割,那么需要手动在文本编辑框中输入设定的阈值,而如果是选择其他的分割算法,由于这些算法都不需要手动输入阈值,而是通过程序自动选择阈值,所以这里文本编辑框中会显示程序自动选择的阈值。点击下拉菜单中的条目选择不同的分割算法进行分割,分割后的图像会显示在右侧的坐标轴中。示例如下:打升组生原图像分割后阑值4.实验过程程序共有四个 m 文件构成,分别是主函数文件 Imgprocess.m 和四个函数文件fuzhi.m,td.m,dd.m
21、和 dajin.m。在介绍各种图像分割算法之前,先介绍程序中的几个函数,如下:1 .利用阈值 t0 对图像 cell 进行二值化的函数 fuzhi(cell,t0),代码如下:functionncell=fuzhi(cell,t0);a,b=size(cell);%获取文件的尺寸fori=1:a%通过循环分别对图彳灰度与阈值 t0 进行比较判,如果大于 t0 则灰度置为255,否则置为 0;forj=1:bifcell(i,j)t0ncell(i,j)=255;elsencell(i,j)=0;endendend2 .利用已经求得的水平方向梯度 xa 和垂直方向梯度 ya 来求它们的均方值的
22、td(xa,ya),代码如下:functionna=td(xa,ya)a,b=size(xa);fori=1:aforj=1:bna(i,j)=sqrt(xa(i,j)*xa(i,j)+(ya(i,j)*ya(i,j);%求 xa 和 ya 的均方值并返回给 naendend3 .对图像 cell 通过迭代法求阈值的函数 dd(cell),代码如下:%求图像的最大灰度值%求图像的最小灰度值%将 t0 的初始值置为(zmax+zmin)/2%flag 是循环标志,初始值为 1,只有当找到要得到的 10 才置为 0,从而结束循环nbf=0;nbk=0;nibf=0;nibk=0;fori=1:a背
23、景灰度总和。%前景数%背景数%前景和背景灰度总和forj=1:bfunctiont0=dd(cell)a,b=size(cell);zmax=max(max(cell);zmin=min(min(cell)t0=(zmax+zmin)/2;flag=1;while(flag)%通过循环遍历来计算前景数,背景数,前景灰度总和和%ifcell(i,j)t0nbf=nbf+1;nibf=nibf+double(cell(i,j);elsenbk=nbk+1;nibk=nibk+double(cell(i,j);endendendzo=nibf/nbf;%得到前景背景的平均灰度值zb=nibk/nbk
24、;t0tmp=(zo+zb)/2;%判断 t0 是否变化,如果不变化则这时的 t0 就是所求阈值if10tmp=t0flag=0;elset0=t0tmp;endend4.对图像cell通过大津法求阈值的函数dajin(cell),代码如下:functiont0=dajin(cell)a,b=size(cell);ni=zeros(1,256);fori=0:255%通过循环统计从 0 到 255 各个灰度的像素个数forj=1:afork=1:bifcell(j,k)=ini(i+1)=ni(i+1)+1;endendendendN=0;forn=0:255N=N+ni(n+1);%计算总的
25、像素个数endpi=zeros(1,255);pi=ni/N;%计算各灰度值出现的概率u=0;fori=0:255u=u+i*pi(i+1);%计算 u;endsgmat=zeros(1,256);%计算类间方差 sgma(T)forT=0:255wt=0;ut=0;fori=0:Twt=wt+pi(i+1);ut=ut+i*pi(i+1);endsgmat(T+1)=(u*wt-ut)A2/(wt*(1-wt);endsgmamax=max(sgmat);%求出最大的类间误差fori=0:255%求出这时的阈值 t0ifsgmamax=sgmat(i+1)t0=i;break;endend4
26、.1. 阈值分割4.1.1. 手动(全局)阈值分割t0=b;%b 是从文本编辑框中读取的阈值pic2=fuzhi(pic,b);%进行二值化运算4.1.2. 迭代算法阈值分割t0=dd(pic);%通过迭代算法求得阈值pic2=fuzhi(pic,t0);4.1.3. 大津算法阈值分割t0=dajin(pic)pic2=fuzhi(pic,t0);%通过大津算法求得阈值4.2. 边缘检测4.2.1.roberts 算子边缘检测t0=dajin(pic);%先通过大津算法求出阈值xr=10;0-1;%水平方向算子yr=xr;%垂直方向算子xpic=3*filter2(xr,pic,same);%
27、对图像求水平方向梯度ypic=3*filter2(yr,pic,same);%对图像求垂直方向梯度pic2=td(xpic,ypic);%求梯度pic2=fuzhi(pic2,t0);4.2.2.prewitt 算子边缘检测pic=double(pic);t0=dd(pic);xp=-1-1-1;000;111;%yp=xp;xa=filter2(xp,pic,same);ya=filter2(yp,pic,same);na=td(xa,ya);pic2=fuzhi(na,t0);4.2.3.sobel 算子边缘检测t0=dajin(pic);xsobel=-1-2-1;000;121;%ys
28、obel=xsobel;xpic=filter2(xsobel,pic,same);ypic=filter2(ysobel,pic,same);npic=td(xpic,ypic);pic2=fuzhi(npic,t0);4.2.4.高斯 laplacian 算子边缘检测gauss=14741;41626164;72641267;41626164;14741/273;%高斯算子t0=dd(pic);npic=filter2(gauss,pic,same);%先对图像用高斯算子进行平滑lap=010;1-41;010;%laplacian 算子npic=filter2(lap,npic,same
29、);水平方向算子水平方向算子npic=abs(15*npic);pic2=fuzhi(npic,t0);4.2.5.canny 算子边缘检测pic2,th=edge(pic,canny);%canny 实现起来太过复杂,我们直接调用“人丁 1 人 3 自带的 canny 算子进行边缘检测 t0=th(1);5.试验结果及分析5.1 .实验结果这里列出了分别对两幅图像进行上述分割方法处理的结果。5.1.1.手动(全局)阈值分割阈值选择过小的情况打开乐金阈值选择合适的情况n=i*分割后手动间值分券阙值打开茹,手动度值分割阈值117分割后阈值原图像手动阑值分割阈值选择过大的情况原图像分割后阈值200手动阑值分割原图像分割后成值200手动阑值分割5.1.2. 迭代算法阈值分割打而明靠原图像分割后阈I慎K2335迭代阈值分割原图像分割后阈值 F,青选代阈值分割5.1.3. 大津算法阈值分割阈值117打尸刘受
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 区域旅游资源整合与推广计划
- 2024年简化版支付委托合同版B版
- 考虑充放电响应度的电动汽车聚合商与机组协同参与调频市场运营策略
- 2024年空调设备安装安全标准合作合同书版B版
- 市证和村证的区别Thedifferencebetweencitycardand
- 压力表的原理和种类
- 律师事务所(合伙)(律师人数24人)-无锡市律师协会
- 长沙2024年湖南长沙市发展和改革委员会招聘中级雇员笔试历年典型考点(频考版试卷)附带答案详解
- 船舶监控与闭路电视系统考核试卷
- 非织造布在卫生用品行业的应用考核试卷
- ICD-10疾病编码完整版
- 高频焊接操作技术规范
- 环氧树脂固化
- GB_T4897-2015刨花板(高清版)
- 公路工程竣工验收办法
- 毕业设计(论文)安徽汽车产业的现状分析及发展战略研究
- 帆软BIFineBI技术白皮书
- 绞车斜巷提升能力计算及绞车选型核算方法
- 6_背景调查表
- 毕业设计(论文)矿泉水瓶吹塑模设计
- 在离退休老干部迎新春座谈会上的讲话(通用)
评论
0/150
提交评论