Canny算子提取边缘Matlab源代码_第1页
Canny算子提取边缘Matlab源代码_第2页
Canny算子提取边缘Matlab源代码_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Canny算子提取边缘Matlab源代码介绍function e=canny_edge(I,sigma)%functione=edge(I,canny,thresh,sigma);%该函数实现Canny算子提取边缘点%输入图像为I,标准差sigma,输出为边缘图像em,n=size(I);Rr=2:m-1;cc=2:n-1;e=repmat(logical(uint8(0),m,n);%产生同样大小的边缘图像e,初始化为1 ,即初始化边缘GaussianDieOff=-0.001;%设定高斯函数消失门限PercentOfPixelsNotEdges=-7;%用于计算边缘门限ThresholdR

2、atio=-4;%设置两个门限的比例%首先设计高斯滤波器和它的微分pw=1:30;%设定滤波器宽度ssq=sigma*sigma;%计算方差width=max(find(exp(-(pw.*pw)/(2*sigma*sigma)GaussianDieOff);%计算滤波算子宽度t=(-width:width);len=2*width+1;t3=t-.5;t;t+.5;%对每个像素左右各半个像素位置的值进行平均gau=sum(exp(-(t3.*t3)/(2*ssq)./(6*pi*ssq);%一维高斯滤波器dgau=(-t.*exp(-(t.*t)/(2*ssq)/ssq).;%高斯滤波器的微

3、分ra=size(I,1);ca=size(I,2);ay=255*double(I);ax=255*double(I);h=conv(gau,dgau);%利用高斯函数滤除噪声和用高斯算子的一阶微分对图像滤波合并为一个算子ax=conv2(ax,h,same).;%产生x方向滤波ay=conv2(ay,h,same);%产生y方向滤波mag=sqrt(ax.*ax)+(ay.*ay);%计算滤波结果的幅度magmax=max(mag(:);if magmax0mag=mag/magmax;%对滤波幅度进行归一化end%下面根据滤波幅度的概率密度计算滤波门限counts,x=imhist(ma

4、g,64);%计算滤波结果的幅度的直方图highThresh=min(find(cumsum(counts)PercentOfPixelsNotEdges*m*n)/64;%通过设定非边缘点的比例来确定高门限lowThresh=ThresholdRatio*highThresh;%设置低门限为高门限乘以比例因子thresh=lowThresh,highThresh;%下面进行非极大抑制%大于高门限的点归于强边缘图像%小于低门限的点归于弱边缘图像idxStrong=;for dir=1:4idxLocalMax=cannyFindLocalMaxima(dir,ax,ay,mag);idxWeak=idxLocalMax(mag(idxLocalMax)lowThresh);e(idxWeak)=1;idxStrong=idxStrong;idxWeak(mag(idxWeak)highThresh);endrstrong=rem(idxStrong-1,m)+1;%rem是求余数cstrong=floor(idxS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论