用Matlab写一个读取一张彩色图像转换为灰度图像,分别用log算子sobel算子prewitt算子和Roberts算子对图像进行边缘检测,sobel算子和perwitt算子显示水平方向和垂直方向的边缘图像,将原图和四幅边缘图显示在一个窗口中
时间: 2023-12-29 13:06:29 浏览: 80
MATLAB实现彩色图像转化为灰度图像
4星 · 用户满意度95%
代码如下:
```matlab
% 读取彩色图像
im = imread('image.jpg');
% 转换为灰度图像
gray_im = rgb2gray(im);
% 计算四个算子的边缘图像
log_im = edge(gray_im, 'log');
sobel_im = edge(gray_im, 'sobel');
prewitt_im = edge(gray_im, 'prewitt');
roberts_im = edge(gray_im, 'roberts');
% 将原图和四幅边缘图显示在一个窗口中
subplot(2,2,1); imshow(im); title('原图');
subplot(2,2,2); imshow(log_im); title('log算子');
subplot(2,2,3); imshow(sobel_im); title('sobel算子');
subplot(2,2,4); imshow(prewitt_im); title('prewitt算子');
figure;
subplot(1,2,1); imshow(im); title('原图');
subplot(1,2,2); imshow(roberts_im); title('roberts算子');
```
其中,`imread` 函数用于读取图像,`rgb2gray` 函数将彩色图像转换为灰度图像,`edge` 函数用于计算边缘图像,`subplot` 函数用于将多个图像显示在一个窗口中。
阅读全文