请写出将原图进行中值滤波后再分别用sobel、prewitt、roberts、log、canny边缘检测算子处理的MATLAB实现代码
时间: 2023-12-29 12:04:34 浏览: 92
根据输入的参数不同,选用不同的算子对输入的图像进行边缘检测,包括sobel,log,canny等5哥算子-.zip
好的,以下是MATLAB实现代码:
```matlab
% 读入原图
I = imread('lena.png');
% 中值滤波
I_median = medfilt2(I);
% 使用Sobel算子检测边缘
I_sobel = edge(I_median, 'sobel');
% 使用Prewitt算子检测边缘
I_prewitt = edge(I_median, 'prewitt');
% 使用Roberts算子检测边缘
I_roberts = edge(I_median, 'roberts');
% 使用LoG算子检测边缘
I_log = edge(I_median, 'log');
% 使用Canny算子检测边缘
I_canny = edge(I_median, 'canny');
% 显示结果
subplot(2,3,1);imshow(I);title('原图');
subplot(2,3,2);imshow(I_median);title('中值滤波');
subplot(2,3,3);imshow(I_sobel);title('Sobel算子');
subplot(2,3,4);imshow(I_prewitt);title('Prewitt算子');
subplot(2,3,5);imshow(I_roberts);title('Roberts算子');
subplot(2,3,6);imshow(I_log);title('LoG算子');
subplot(2,3,6);imshow(I_canny);title('Canny算子');
```
以上代码中,假设原图为`lena.png`。使用`medfilt2`函数进行中值滤波,然后使用`edge`函数分别用Sobel、Prewitt、Roberts、LoG、Canny算子检测边缘。最后使用`subplot`函数将结果显示在一起。
阅读全文