下载

0下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 图象边缘检测中边界闭合性的分析与探讨

图象边缘检测中边界闭合性的分析与探讨.doc

图象边缘检测中边界闭合性的分析与探讨

15岁懵懂花季
2019-05-19 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《图象边缘检测中边界闭合性的分析与探讨doc》,可适用于IT/计算机领域

图象边缘检测中边界闭合性的分析与探讨摘  要在图象边缘检测中往往要求所检测到的边缘具有封闭特性本文详细地分析了目前常用的两种算法:哈夫变换和Canny边缘检测算法最后探讨边缘算子应满足的准则。关键词边缘检测闭合性哈夫变换Canny算子引言图象的边缘是指图象局部区域亮度变化显著的部分该区域的灰度剖面一般可以看作是一个阶跃既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的同时也是图象分割所依赖的重要特征边缘检测主要是图象的灰度变化的度量、检测和定位自从提出边缘检测以来经过五十多年的发展已有许多中不同的边缘检测方法。在我们常用的几种用于边缘检测的算子中Laplace算子常常会产生双边界而其他一些算子如Sobel算子又往往会形成不闭合区域。本文主要讨论了在边缘检测中获取封闭边界区域的算法。图象边缘检测的基本步骤()滤波。边缘检测主要基于导数计算但受噪声影响。但滤波器在降低噪声的同时也导致边缘强度的损失。()增强。增强算法将邻域中灰度有显著变化的点突出显示。一般通过计算梯度幅值完成。()检测。但在有些图象中梯度幅值较大的并不是边缘点。最简单的边缘检测是梯度幅值阈值判定。()定位。精确确定边缘的位置。图边缘检测酸法的基本步骤边界闭合的算法哈夫变换由于噪声的存在用各种算子得到的边缘象素不连续但是由于边缘象素之间有一定的连续性我们就可以根据边缘象素在梯度幅度或梯度方向上的连续性把他们连接起来。具体说来如果象素(s,t)在象素(xy)的领域且它们的梯度幅度与梯度方向在给定的阈值下满足:T是幅度阈值A是角度阈值那么如对所有的边缘象素都进行上述的判断和连接就可以得到一个闭合的边界。哈夫变换方法是利用图像得全局特性而对目标轮廓进行直接检测的方法在已知区域形状的条件下哈夫变换可以准确地捕获到目标的边界(连续的获不连续的)并最终以连续曲线的形式输出变换结果该变换可以从强噪声环境中将已知形状的目标准确得分割提取出来。哈夫变换的核心思想是:点线的对偶性(duality)。通过变换将图象从图像控件转换到参数空间,在图像空间中一条过点(x,y)的直线方程为y=pxq,通过代数变换可以转换为另一种形式p=pxy,即参数空间中过点(p,q)的一条直线,如果在图像空间中保持直线的斜率和截距的不变,其在参数空间必定过点(p,q),这也就说明,在图像空间中共线的点对应参数空间共点的线哈夫变换就是根据上述点线的对偶性把在图象空间中存在的直线检测问题转换为参数空间中存在的点检测问题,后者的处理要比前者简单易行得多,只需简单地累加统计即可实现对边缘的检测哈夫变换不仅能检测直线等一阶曲线的目标,对于园、椭圆等高阶的曲线都可以检测出来。如圆的方程为:其参数空间是一个D空间A(abr)原理与检测直线上的点相同只是复杂性增加了。如果圆的半径r己知则问题又回到了D空间A(ab)哈夫变换对已知目标的检测过程受随机噪声和曲线中断等不利因素的影响很小而且分割出的目标是直接放到另一个“干净”的缓存中的因此可以做到零噪声是相当有优势的。常规的哈夫变换在理论上能对所有可以写出具体解析表达式的曲线进行目标检测但是在实际处理时经常待检测的目标不规则或是很难获取甚至根本没有解析式此时就要采取广义上的哈夫变换来检测目标.最优的阶梯型边缘检测算法(canny边缘检测)Canny边缘检测基本原理()图象边缘检测必须满足两个条件:一能有效地抑制噪声二必须尽量精确确定边缘的位置。()根据对信噪比与定位乘积进行测度得到最优化逼近算子。这就是Canny边缘检测算子。()类似与Marr(LoG)边缘检测方法也属于先平滑后求导数的方法。Canny边缘检测算法:step:用高斯滤波器平滑图象step:用一阶偏导的有限差分来计算梯度的幅值和方向step:对梯度幅值进行非极大值抑制step:用双阈值算法检测和连接边缘。step:高斯平滑函数step:非极大值抑制仅仅得到全局的梯度并不足以确定边缘因此为确定边缘必须保留局部梯度最大的点而抑制非极大值。(nonmaximasuppression,NMS)解决方法:利用梯度的方向。图非极大值抑制四个扇区的标号为到对应*邻域的四种可能组合。在每一点上邻域的中心象素M与沿着梯度线的两个象素相比。如果M的梯度值不比沿梯度线的两个相邻象素梯度值大则令M=。即:step:阈值化减少假边缘段数量的典型方法是对Nij使用一个阈值。将低于阈值的所有值赋零值。但问题是如何选取阈值?解决方法:双阈值算法。双阈值算法对非极大值抑制图象作用两个阈值τ和τ且τ≈τ从而可以得到两个阈值边缘图象N[i,j]和N[ij]。由于N[ij]使用高阈值得到因而含有很少的假边缘但有间断(不闭合)。双阈值法要在N[ij]中把边缘连接成轮廓当到达轮廓的端点时该算法就在N[i,j]的邻点位置寻找可以连接到轮廓上的边缘这样算法不断地在N[i,j]中收集边缘直到将N[i,j]连接起来为止。边缘算子应满足的准则若满足此准则就能保证单边缘只有一个响应。对一个算法的性能评价可分为两个阶段进行:计算假边缘与丢失边缘的数目测量用于估计位置和方向的误差(或误差分布)。边缘检测算法的优劣也可用品质因数(FigureofMerit)来描述。Pratt品质因数是其中一种它着重考虑了丢失了有效的边缘、边缘定位误差和将噪声判断为边缘等三种误差。结束语边缘检测在图象分割、模式识别、机器视觉等中都有重要作用人们已研究出很多种边缘检测算法而哈夫变换和canny边缘算子等是最经典的算法人们已在这些经典算法基础上提出一些新的改进算法。参考文献贾云德.机器视觉[M].北京:科学出版社章毓晋.图象处理和分析[M].北京:清华大学出版社郎锐.数字图象处理学.北京:希望电子出版社王娜李霞.一种新的改进Canny边缘检测算法.深圳大学学报()边缘提取以及边缘增强是不少图像处理软件都具有的基本功能它的增强效果很明显在用于识别的应用中图像边缘也是非常重要的特征之一。图像边缘保留了原始图像中相当重要的部分信息而又使得总的数据量减小了很多这正符合特征提取的要求。在以后要谈到的霍夫变换(检测图像中的几何形状)中边缘提取就是前提步骤。这里我们只考虑灰度图像用于图像识别的边缘提取比起仅仅用于视觉效果增强的边缘提取要复杂一些。要给图像的边缘下一个定义还挺困难的从人的直观感受来说边缘对应于物体的边界。图像上灰度变化剧烈的区域比较符合这个要求我们一般会以这个特征来提取图像的边缘。但在遇到包含纹理的图像上这有点问题比如说图像中的人穿了黑白格子的衣服我们往往不希望提取出来的边缘包括衣服上的方格。但这个比较困难涉及到纹理图像的处理等方法。好了既然边缘提取是要保留图像的灰度变化剧烈的区域从数学上最直观的方法就是微分(对于数字图像来说就是差分)在信号处理的角度来看也可以说是用高通滤波器即保留高频信号。这是最关键的一步在此之前有时需要对输入图像进行消除噪声的处理。用于图像识别的边缘提取往往需要输出的边缘是二值图像即只有黑白两个灰度的图像其中一个灰度代表边缘另一个代表背景。此外还需要把边缘细化成只有一个像素的宽度。总的说来边缘提取的步骤如下:去噪声微分运算值化处理细化第二步是关键有不少书把第二步就直接称为边缘提取。实现它的算法也有很多一般的图像处理教科书上都会介绍好几种如拉普拉兹算子索贝尔算子罗伯特算子等等。这些都是模板运算首先定义一个模板模板的大小以*的较常见也有**或更大尺寸的。运算时把模板中心对应到图像的每一个像素位置然后按照模板对应的公式对中心像素和它周围的像素进行数学运算算出的结果作为输出图像对应像素点的值。需要说明的是模板运算是图像的一种处理手段邻域处理有许多图像增强效果都可以采用模板运算实现如平滑效果中值滤波(一种消除噪声的方法)油画效果图像的凹凸效果等等。这些算法都比较简单为人们常用。关于前面提到的几种边缘提取算子(拉普拉兹算子索贝尔算子罗伯特算子)教科书上都有较为详细的介绍我这里不多说了(手头上没有教科书也懒得翻译英文资料)如果你们有时间可以把这些方法的具体情况仔细介绍一下。这里对拉普拉兹算子和索贝尔算子补充两句。拉普拉兹算子是阶微分算子也就是说相当于求取次微分它的精度还算比较高但对噪声过于敏感(有噪声的情况下效果很差)是它的重大缺点所以这种算子并不是特别常用。索贝尔算子是最常用的算子之一(它是一种一阶算子)方法简单效果也不错但提取出的边缘比较粗要进行细化处理。另外索贝尔算子也可提取出图像边缘的方向信息来有文章论证过在不考虑噪声的情况下它取得的边缘信息误差不超过度。顺便说一句往往我们在进行边缘提取时只注意到位置信息而忽略了边缘的方向。事实上图像的边缘总有一定的走向我们可以用边缘曲线的法线方向(和切线垂直的直线)来代表边缘点的方向。在图像识别的应用中这个方向是非常重要的信息。上面的几种算子是属于比较简单的方法边缘提取的精度都不算特别高下面介绍几种高级算法。首先是马尔(Marr)算子马尔是计算机视觉这门学问的奠基人很了不起但这些理论很难懂。他提出的边缘提取方法可以看成两个步骤一个是平滑作用来消除噪声另一个是微分提取边缘也可以说是由两个滤波器组成低通滤波去除噪声高通滤波提取边缘。人们也称这种方法为LOG滤波器这也是根据它数学表达式和滤波器形状起的名字。也可以采用模板运算来实现这种算法但模板的大小一般要在*以上所以运算复杂程度比索贝尔算子等要大不少运算时间当然也长许多。另外一种非常重要的算法是坎尼(Canny)算子,这是坎尼在年写的一篇论文里仔细论述的。他给出了判断边缘提取方法性能的指标。而坎尼算子也是图像处理领域里的标准方法也可以说是默认的方法。比较奇怪的是国内的图像处理教科书中介绍坎尼算子的很少。本人见过的书中郑南宁的‘计算机视觉与模式识别’(年)算是介绍的比较详细的。坎尼算子在使用时要提供给一些参数用于控制算法的性能实际上对于不同的图像或不同的边缘提取目的应该提供不同的参数以达到最佳效果。它也有模板运算方法模板的大小也比较大,和提供的参数有关标准的大小差不多是*可以根据算子的可分离性用快速算法(否则就会慢的一塌糊涂)坎尼算子的值化也很有特色具有一定的智能性。还有一种算法:ShenCastan算子大概可称为沈峻算子总之是中国人的成果效果和坎尼算子不相上下这种算法在对边缘提取好坏的判别标准上有些不同。(这种方法我没用过好象编起程序来要比坎尼算子还复杂)在实际的图像处理与识别应用中有时需要根据被处理图像的种类以及实际目的量身定做算法边缘提取也是一样但是基本原理都是一样的。canny算子代码voidCreatGauss(doublesigma,double**pdKernel,int*pnWidowSize)voidGaussianSmooth(SIZEsz,LPBYTEpGray,LPBYTEpResult,doublesigma)voidGrad(SIZEsz,LPBYTEpGray,int*pGradX,int*pGradY,int*pMag)voidNonmaxSuppress(int*pMag,int*pGradX,int*pGradY,SIZEsz,LPBYTEpNSRst)voidEstimateThreshold(int*pMag,SIZEsz,int*pThrHigh,int*pThrLow,LPBYTEpGray,doubledRatHigh,doubledRatLow)voidHysteresis(int*pMag,SIZEsz,doubledRatLow,doubledRatHigh,LPBYTEpResult)voidTraceEdge(inty,intx,intnThrLow,LPBYTEpResult,int*pMag,SIZEsz)voidCanny(LPBYTEpGray,SIZEsz,doublesigma,doubledRatLow,doubledRatHigh,LPBYTEpResult)#include"afxh"#include"mathh"#include"cannyh" 一维高斯分布函数用于平滑函数中生成的高斯滤波系数voidCreatGauss(doublesigma,double**pdKernel,int*pnWidowSize){

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/12

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利