资源简介
本文件包为canny边缘检测算法代码,matlab编写,用于检测图像边缘。
代码片段和文件信息
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源代码
- 阿尔法均值滤波函数
- mask与wallis影像图像匀光匀色算法的
- 完美可运行Google net
- 数字图像处理GUI界面设计
-
基于Matlab-Simuli
nk的遥感图像处理 - stucki 半色调 图像处理 二值 matlab
- stevenson 半色调 图像处理 二值 matlab
- burkers 半色调 matlab
- matlab图像处理gui49054
- MATLAB GUI图像处理
- 数字图像处理图像点运算和代数运算
- 图像处理梯度运算matlab
- 数字图像处理直方图规定化与均衡化
- 基于matlab的图像处理设计
- MATLAB处理医学图像
- MATLAB实现图像找茬程序
- 基于MATLAB的图像处理的课程设计图像
- 雷达图像处理的入门算法
- matlab图像处理小波变换m文件及部分注
- 数字图像处理DCT矩阵分块变换matlab程
- 利用加法实现图像双曝光效果
- 小波多尺度边缘检测主程序
- matlab处理数字图像贴标签
- MATLAB程序(图像去噪 滤波 锐化 边缘
- 图像滤波Matlab代码
- 基于MATLAB的一维条码识别系统
- INSAR图像处理
评论
共有 条评论