图像边缘检测matlab代码
时间: 2023-11-25 14:39:46 浏览: 93
以下是使用Sobel算子实现的图像边缘检测的MATLAB代码示例:
```matlab
% 读取图像
img = imread('lena.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];
% 对图像进行卷积操作
grad_x = conv2(double(gray_img), sobel_x, 'same');
grad_y = conv2(double(gray_img), sobel_y, 'same');
% 计算梯度幅值
grad_mag = sqrt(grad_x.^2 + grad_y.^2);
% 对梯度幅值进行阈值处理
threshold = 100;
edge_img = grad_mag > threshold;
% 显示结果
subplot(1, 2, 1);
imshow(gray_img);
title('Original Image');
subplot(1, 2, 2);
imshow(edge_img);
title('Edge Detection');
```
在上述代码中,我们首先读取图像并将其转换为灰度图像。然后,我们定义Sobel算子并将其应用于图像。通过在x和y方向上进行卷积,我们可以得到每个像素的梯度值。最后,我们计算梯度幅值并对其进行阈值处理,得到二值化的边缘检测结果。最后,我们将原始图像和边缘检测结果显示在同一幅图像上,以便进行比较。
阅读全文