资源简介
本文件包为canny边缘检测算法代码,matlab编写,用于检测图像边缘。
![](http://www.nz998.com/pic/57148.jpg)
代码片段和文件信息
clear all;
close all;
clc;
img=imread(‘lena.jpg‘);
imshow(img);
[m n]=size(img);
img=double(img);
%%canny边缘检测的前两步相对不复杂,所以我就直接调用系统函数了
%%高斯滤波
w=fspecial(‘gaussian‘[5 5]);
img=imfilter(imgw‘replicate‘);
figure ;%1
imshow(uint8(img))
%%sobel边缘检测
w=fspecial(‘sobel‘);
img_w=imfilter(imgw‘replicate‘); %求横边缘
w=w‘;
img_h=imfilter(imgw‘replicate‘); %求竖边缘
img=sqrt(img_w.^2+img_h.^2); %注意这里不是简单的求平均,而是平方和在开方。我曾经好长一段时间都搞错了
figure ;
imshow(uint8(img))
%%下面是非极大抑制以求解局部最大值
new_edge=zeros(mn);
for i=2:m-1
for j=2:n-1
Mx=img_w(ij);
My=img_h(ij);
if My~=0
o=atan(Mx/My); %边缘的法线弧度
elseif My==0 && Mx>0
o=pi/2;
else
o=-pi/2;
end
%Mx处用My和img进行插值
adds=get_coords(o); %边缘像素法线一侧求得的两点坐标,插值需要
M1=My*img(i+adds(2)j+adds(1))+(Mx-My)*img(i+adds(4)j+adds(3)); %插值后得到的像素,用此像素和当前像素比较
adds=get_coords(o+pi);%边缘法线另一侧求得的两点坐标,插值需要
M2=My*img(i+adds(2)j+adds(1))+(Mx-My)*img(i+adds(4)j+adds(3)); %另一侧插值得到的像素,同样和当前像素比较
isbigger=(Mx*img(ij)>M1)*(Mx*img(ij)>=M2)+(Mx*img(ij)
if isbigger
new_edge(ij)=img(ij);
end
end
end
figure 3;
imshow(uint8(new_edge))
%%下面是滞后阈值处理
up=120; %上阈值
low=100; %下阈值
set(0‘RecursionLimit‘10000); %设置最大递归深度
for i=1:m
for j=1:n
if new_edge(ij)>up &&new_edge(ij)~=255 %判断上阈值
new_edge(ij)=255;
new_edge=connect(new_edgeijlow);
end
end
end
figure 4;
imshow(new_edge==255)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1906 2018-09-12 23:13 canny边缘检测算法_代码\canny.m
文件 486 2018-09-12 22:05 canny边缘检测算法_代码\connect.m
文件 326 2018-09-12 22:05 canny边缘检测算法_代码\get_coords.m
目录 0 2018-09-16 11:19 canny边缘检测算法_代码
----------- --------- ---------- ----- ----
2718 4
- 上一篇:局部加权的线性回归的matlab实现
- 下一篇:图像畸变校正
相关资源
- 基于matlab的图像处理源程序
- 冈萨雷斯数字图像处理matlab版(第三
- 基于matlab 的图像处理100实例
- 8领域边界跟踪 图像处理 matlab
- matlab-图像处理算法
- p文件,MATLAB的
- 数字图像处理radon matlab变换算法代码
- 图像降噪Matlab代码
- 传统关联成像、计算鬼成像matlab
- MATLAB7.x图像处理
- 基于matlab的车牌识别系统论文
- matlab2019运动目标检测--数字图像处理
- 计算图像Spatial Frequence的Matlab程序SF
- 尾灯识别matlab代码
- MATLAB大脑腔体图像分割
- 基于MATLAB人民币识别系统.zip
- 数字图像处理作业canny边缘检测坎尼边
- 数字图像处理 MATLAB 大作业 代码及其
- 遥感影像融合_数字图像处理的matlab程
- MATLAB图像与视频处理实用案例详解代
- MATLAB 图像处理识别程序
- 数字图像处理使用matlab进行采样量化
- 傅里叶变化频谱图及频域滤波
- MATLAB实现k-svd和mod信号处理
- 图像处理---matlab
- Matlab在图像处理与目标识别方面的应
- matlab数字图像处理之几何变换将图像
- matlab数字图像处理之图像几何变换
- 图像超分辨重建MATLAB源代码迭代步长
- mri去偏场代码
评论
共有 条评论