用matlab编写梯度算子、拉普拉斯算子、方向算子、坎尼算子的边缘检测代码
时间: 2023-12-30 20:02:09 浏览: 92
log_edge.rar_LOG算子 MATLAB_LoG edge detection_log matlab_log算子_lo
以下是使用MATLAB编写的边缘检测代码:
1. 梯度算子
```matlab
% 输入图像
img = imread('input.jpg');
% 灰度化
gray_img = rgb2gray(img);
% 梯度算子
gx = [-1 0 1; -2 0 2; -1 0 1];
gy = [1 2 1; 0 0 0; -1 -2 -1];
% 计算梯度
grad_x = imfilter(gray_img, gx);
grad_y = imfilter(gray_img, gy);
grad = sqrt(grad_x.^2 + grad_y.^2);
% 显示结果
imshow(grad);
```
2. 拉普拉斯算子
```matlab
% 输入图像
img = imread('input.jpg');
% 灰度化
gray_img = rgb2gray(img);
% 拉普拉斯算子
lap = [0 -1 0; -1 4 -1; 0 -1 0];
% 计算拉普拉斯
lap_img = imfilter(gray_img, lap);
% 显示结果
imshow(lap_img);
```
3. 方向算子
```matlab
% 输入图像
img = imread('input.jpg');
% 灰度化
gray_img = rgb2gray(img);
% 方向算子
gx = [-1 0 1; -2 0 2; -1 0 1];
gy = [1 2 1; 0 0 0; -1 -2 -1];
% 计算梯度
grad_x = imfilter(gray_img, gx);
grad_y = imfilter(gray_img, gy);
% 计算方向
dir = atan2(grad_y, grad_x);
% 显示结果
imshow(dir);
```
4. 坎尼算子
```matlab
% 输入图像
img = imread('input.jpg');
% 灰度化
gray_img = rgb2gray(img);
% 坎尼算子
edges = edge(gray_img, 'canny');
% 显示结果
imshow(edges);
```
阅读全文