SUSAN算子实现边缘检测 matlab
时间: 2023-09-15 09:23:33 浏览: 107
SUSAN_Edge-detection.rar_SUSAN算子 matlab_matlab susan edge_susan
SUSAN算子是一种常用的边缘检测算法,其主要思想是通过计算像素点周围像素值的变化程度来判断该点是否为边缘点。在Matlab中可以通过以下代码实现SUSAN算子的边缘检测:
```matlab
% 读入图像
img = imread('image.jpg');
% 转换为灰度图像
img_gray = rgb2gray(img);
% SUSAN算子边缘检测
threshold = 27; % 阈值
img_susan = zeros(size(img_gray));
for i = 4:size(img_gray,1)-3
for j = 4:size(img_gray,2)-3
% 计算灰度值的梯度
grad = abs(double(img_gray(i,j))-double(img_gray(i-3,j-3)))+...
abs(double(img_gray(i,j))-double(img_gray(i-3,j))) +...
abs(double(img_gray(i,j))-double(img_gray(i-3,j+3)))+...
abs(double(img_gray(i,j))-double(img_gray(i,j-3)))+...
abs(double(img_gray(i,j))-double(img_gray(i,j+3)))+...
abs(double(img_gray(i,j))-double(img_gray(i+3,j-3)))+...
abs(double(img_gray(i,j))-double(img_gray(i+3,j))) +...
abs(double(img_gray(i,j))-double(img_gray(i+3,j+3)));
% 判断是否为边缘点
if grad < threshold
img_susan(i,j) = 255;
end
end
end
% 显示原图和处理后的图像
subplot(1,2,1);
imshow(img_gray);
title('原图');
subplot(1,2,2);
imshow(img_susan);
title('SUSAN算子边缘检测');
```
在这段代码中,我们先读入一张彩色图像,并将其转换为灰度图像。然后进行SUSAN算子边缘检测,对每个像素点计算灰度值的梯度,如果梯度值小于指定的阈值,则认为该点是边缘点,将其灰度值设为255。最后显示原图和处理后的图像。
阅读全文