matlab canny 算子边缘检测函数代码
举报|2011-06-01 20:57120289677 | 分类:其他编程语言 | 浏览 11636 次
分享到:
2012-04-24 20:42
网友采纳
clc
clear all
close all
I = imread('cameraman.tif'); % 读入图像
imshow(I);title('原图')
BW1 = edge(I,'canny'); % 调用 canny 函数
figure,imshow(BW1); % 显示分割后的图像,即梯度图像
title('Canny')
用 Lena 标准检测图像,图像与代码下面注明了是哪张图像。
一、没有噪声时的检测结果 1 原始图像
2 Sobel 算子边缘检测 3 Prewitt 算子边缘检测 4 Roberts 算子边缘检测 5 Laplace 算子边缘检
测 6 Canny 算子边缘检测
二、加入高斯噪声(μ=0,σ^2=0.01)检测结果 1 原始图像
2 Sobel 算子边缘检测 3 Prewitt 算子边缘检测 4 Roberts 算子边缘检测 5 Laplace 算子边缘检
测 6 Canny 算子边缘检测
三、加入高斯噪声(μ=0,σ^2=0.02)检测结果 1 原始图像
2 Sobel 算子边缘检测 3 Prewitt 算子边缘检测 4 Roberts 算子边缘检测 5 Laplace 算子边缘检
测 6 Canny 算子边缘检测
clear all; close all;
warning off all;
I = imread('lena.bmp'); %%如果是其他类型图像,请先转换为灰度图
%%没有噪声时的检测结果
BW_sobel = edge(I,'sobel');
BW_prewitt = edge(I,'prewitt');
BW_roberts = edge(I,'roberts');
BW_laplace = edge(I,'log');
BW_canny = edge(I,'canny'); figure(1);
subplot(2,3,1),imshow(I),xlabel('原始图像');
subplot(2,3,2),imshow(BW_sobel),xlabel('sobel 检测');