用MATLAB实现sobel算子
时间: 2023-10-23 15:09:21 浏览: 156
基于Sobel算子图像边缘检测的MATLAB实现.zip
5星 · 资源好评率100%
Sobel算子是一种图像边缘检测算子,可以用于检测图像中的边缘。以下是MATLAB实现Sobel算子的代码:
```matlab
% 读取图像
img = imread('test.jpg');
% 转为灰度图
gray_img = rgb2gray(img);
% Sobel算子
sobel_x = [-1 0 1; -2 0 2; -1 0 1];
sobel_y = [-1 -2 -1; 0 0 0; 1 2 1];
% 计算x方向和y方向的梯度
Gx = conv2(double(gray_img), sobel_x, 'same');
Gy = conv2(double(gray_img), sobel_y, 'same');
% 计算梯度幅值和方向
G = sqrt(Gx.^2 + Gy.^2);
theta = atan2(Gy, Gx);
% 显示结果
figure;
subplot(1, 3, 1); imshow(img); title('原图');
subplot(1, 3, 2); imshow(G, []); title('梯度幅值');
subplot(1, 3, 3); imshow(theta, []); title('梯度方向');
```
其中,`sobel_x`和`sobel_y`分别表示Sobel算子的x方向和y方向的卷积核。`conv2`函数用于计算图像的卷积。最终的结果包括梯度幅值和梯度方向。
阅读全文