程序-图像边缘提取算法研究.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序-图像边缘提取算法研究

图像边缘提取算法研究报告 概述 图像的边缘包含了图像最重要的信息。什么是边缘?一般是指图像灰度变化率最大的位置。从成因上看,一般图像边缘主要由四个方面的因素形成:(1)图像灰度在表面法向变化的不连续造成的边缘;(2)图像对像素在空间上不一致形成的边缘;(3)在光滑的表面上由于颜色的不一致形成的边缘:(4)物体的光影造成的边缘。图像边缘提取的作用有:(1)改良图像质量;(2)分离对象;(3)理解和重构视觉场景;(4)识别特征;(5)其他。 图像边缘检测是图像处理与计算机视觉共同的基本课题,1960年以来,相继发展了一系列采用梯度算子和拉普拉斯算子的边缘检测技术;为了降低图像噪声对边缘检测算法的干扰,1980年以来,又建立了高斯低通滤波与拉普拉斯算子复合的过零点检测Marr-Hildreth理论;在另一个方向上,1980年代初期,Canny从信号处理的角度出发,使边缘检测算法更具有实用性。本报告主要介绍以上以上几个方面的内容,通过matlab程序实现以上几种算法,对比各种算法的性能。 算法介绍及相应程序 基于微分算子的边缘检测 检测图像边缘信息,可以把图像看做曲面,边缘就是图像的变化最剧烈的位置。这里所讲的边缘信息包含两个方面:一是边缘的具体位置,即像素的坐标;而是边缘的方向。微分算子有两个重要性质:定域性(或局部性)、敏感性(或无界性)。敏感性就是说,它对局部的函数值变化很敏感,但是因其对变化过于敏感又有了天然的缺陷——不能抵抗噪声。局部性意思是指,每一点的导数只与函数在该点邻近的信息有关。 主要有两大类基于微分算子的边缘检测技术:一阶微分算子边缘检测与二阶微分算子边缘检测。这些检测技术采用以下的基本步骤: 将相应的微分算子简化为离散的差分格式,进而简化为模板(记为T)。 利用模板对图像f(m,n)进行运算,获得模板作用后的结果Tf(m,n)。 提出阈值h,在采用一阶微分算子情形记录下高于某个阈值h的位置坐标 (而采用二阶微分算子情形,一般是对某个阈值确立 ) 对集合进行整理,同时调整阈值h。 Roberts算子 Roberts算子是一种利用局部差分算子寻找边缘的算子,两个模板分别为 则,= = 算法的步骤为: 首先用两个模板分别对图像作用得到和; 对,进行阈值判决,若大于阈值则相应的点 位于便于边缘处。 对于阈值选取的说明:由于微分算子的检测性能受阈值的影响较大,为此,针对具体图像我们采用以下阈值的选取方法,对处理后的图像统计大于某一阈值的点,对这些数据求平均值,以下每个程序均采用此方法,不再做说明。 具体程序如下: %-----filename:Roberts.m------------------------- %-----Useage:edge detecting by the Roberts operator----- %-----Writer: Subailong------------------------- function edgeRb=Roberts(oimage); [xlen ylen] = size(oimage); %read the size edgeX = zeros(xlen,ylen); %horizontal direction edgeY = zeros(xlen,ylen); %vertical direction edgeXY = zeros(xlen,ylen); %synthesize the two directions %--------------process the oringin image with the operator---------------- for i = 1:xlen-1 for j = 1:ylen-1 edgeX(i,j) = oimage(i,j) - oimage(i+1,j+1); edgeY(i,j) = oimage(i+1,j) - oimage(i,j+1); end end edgeX = abs(edgeX); edgeY = abs(edgeY); edgeXY = sqrt(edgeX.*edgeX + edgeY.*edgeY); %---------Thresh estimate-------------------- rsum=0; counter=0; for i = 2:xlen-1 for j = 2:ylen-1 if(edgeXY(i,j)15) rsum=rsum+edgeXY(i,j); counter=counter+1;

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档