资源简介
matlab的canny边缘检测,可以运行
代码片段和文件信息
function CVHomework1
I = imread(‘1.bmp‘);
I=rgb2gray(I)
BW = canny_edge(I2.5);
figure(1)
imshow(I)
figure(2)
imshow(BW)
% Canny边缘检测的函数
% Input:
% a: input image
% sigma: Gaussian的均方差
function e=canny_edge(asigma)
a = double(a); % 将图像像素数据转换为double类型
[mn] = size(a);
e = repmat(logical(uint8(0))mn); % 生成初始矩阵
OffGate = 0.0001;
Perc = 0.7;
Th = 0.4;
pw = 1:30; % hardcoding. But it‘s large enough if sigma isn‘t too large
sig2 = sigma * sigma; % 方差
width = max(find(exp(-(pw.*pw)/(2*sig2)) > OffGate)); % 寻找截断点
t = (-width:width);
len = 2*width+1;
t3=[t-0.5;t;t+0.5];
dgau = (-t.*exp(-(t.*t)/(2*sig2))/sig2).‘; % 一阶高斯函数的导数
ra = size(a1); % 图像行数
ca = size(a2); % 图像列数
ay = 255*a;
ax = 255*a‘;
ax = conv2(axdgau‘same‘).‘; % 高斯平滑滤波后的图像的x方向梯度
ay = conv2(aydgau‘same‘); % 高斯平滑滤波后的图像的y方向梯度
mag = sqrt((ax.*ax)+(ay.*ay)); % 每个像素点的梯度强度
magmax = max(mag(:));
if magmax>0
mag = mag/magmax; % 归一化
end
[countsx] = imhist(mag64); % 直方图统计
high = min(find(cumsum(counts)>Perc*m*n))/64;
low = Th*high;
thresh = [low high]; % 根据直方图统计确定上下限
% Nonmax-suppression
idxStrong = [];
for dir = 1:4
Localmax = Findlocalmax(diraxaymag);
idxWeak = Localmax(mag(Localmax)>low);
e(idxWeak) = 1;
idxStrong = [idxStrong; idxWeak(mag(idxWeak)>high)];
end
rstrong = rem(idxStrong-1m)+1;
- 上一篇:分段线性插值matlab程序
- 下一篇:十折交叉验证SVM分类器Matlab代码
相关资源
- 多种图像边缘检测与分割处理matlab实
- 基于小波变换多尺度边缘检测
- snake边缘检测算法算法
- 东南大学 matlab 图像边缘检测算法 代
- 基于蚁群算法的图像边缘检测算法M
- 小波模极大值边缘检测+膨胀+边缘跟踪
- 数字图像处理作业
- matlab图像边缘检测sobel算子梯度图像
- canny边缘检测算法_代码
- matlab边缘监测程序
- matlab实现边缘检测算法hough
- 基于尺度形态学的边缘检测matlab程序
- 基于小波变换的边缘检测matlab程序
- canny边缘检测的matlab程序
- 语音边缘检测算法VAD检测.zip
- matlab 边缘检测并求出面积,周长,质
- zw_MATLAB实现图像去噪滤波锐化边缘检
- 基于蚁群算法的图像边缘检测
- SUSAN边缘检测的实现代码MATLAB
- 基于小波变换的多尺度图像边缘检测
- 小波多尺度边缘检测主程序
- MATLAB程序(图像去噪 滤波 锐化 边缘
- 边缘检测中的canny算法及其matlab实现
- 拉普拉斯边缘检测算子matlab源程序
- matlab实现的区域增长和分水岭算法
- 图像边缘检测
- fuzzy edge 图象模糊边缘检测
- 各种边缘检测程序
- matlab实现图像边缘检测、图像分割、
- DIP 包含二值化、canny算子边缘检测、
评论
共有 条评论