Sobel算子的边缘检测matlab代码
时间: 2023-11-29 18:31:41 浏览: 138
Sobel算子边缘检测
以下是使用Sobel算子进行边缘检测的MATLAB代码示例:
```matlab
% 读取图像
img = imread('lena.png');
% 将图像转化为灰度图像
gray_img = rgb2gray(img);
% 使用Sobel算子进行边缘检测
% 水平方向的Sobel算子
h_sobel = [-1,-2,-1;0,0,0;1,2,1];
% 垂直方向的Sobel算子
v_sobel = [-1,0,1;-2,0,2;-1,0,1];
% 计算水平方向和垂直方向的梯度
grad_h = imfilter(double(gray_img), h_sobel);
grad_v = imfilter(double(gray_img), v_sobel);
% 计算梯度幅值
grad = sqrt(grad_h.^2 + grad_v.^2);
% 显示原图和边缘检测结果
subplot(1,2,1);
imshow(gray_img);
title('原图');
subplot(1,2,2);
imshow(grad, []);
title('边缘检测结果');
```
在此代码中,我们首先读取一张彩色图像,并将其转换为灰度图像。然后,我们定义了水平方向和垂直方向的Sobel算子,并使用MATLAB内置函数`imfilter`计算了图像在这两个方向上的梯度。最后,我们计算了梯度幅值,并使用`imshow`函数显示了原始图像和边缘检测结果。
阅读全文