以下代码在 matlab R2012b中经过测试可以运行
clc
clear
close all
ima=imread('lena.bmp');%读入图像
if (ndims(ima)==3)
ima=rgb2gray(ima);%如果是彩色图像,则转为灰度图像
end
ima=double(ima);
bw1 = edge(ima,'sobel'); %sobel算子
figure;subplot(121);imshow(uint8(ima));title('原始图像');%图像显示
subplot(122);imshow(bw1);title('sobel算子');
bw2 = edge(ima,'prewitt');%prewitt算子
figure;subplot(121);imshow(uint8(ima));title('原始图像');
subplot(122);imshow(bw2);title('prewitt算子');
bw3 = edge(ima,'roberts');%roberts算子
figure;subplot(121);imshow(uint8(ima));title('原始图像');
subplot(122);imshow(bw3);title('roberts算子');
bw4 = edge(ima,'log');%log算子
figure;subplot(121);imshow(uint8(ima));title('原始图像');
subplot(122);imshow(bw4);title('log算子');
bw5 = edge(ima,&