matlab susan滤波
时间: 2023-11-02 08:23:22 浏览: 40
Susan滤波是一种常用的图像边缘检测和平滑滤波技术。Matlab中可以通过以下代码实现Susan滤波:
```matlab
% 读入图像
img = imread('image.jpg');
% 转换为灰度图像
img_gray = rgb2gray(img);
% Susan滤波
img_susan = 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 < 27
img_susan(i,j) = 0;
end
end
end
% 显示原图和处理后的图像
subplot(1,2,1);
imshow(img_gray);
title('原图');
subplot(1,2,2);
imshow(img_susan);
title('Susan滤波后');
```
在这段代码中,我们先读入一张彩色图像,并将其转换为灰度图像。然后进行Susan滤波,对每个像素点计算灰度值的梯度,如果梯度值小于27,则认为该点是边缘点,将其灰度值设为0。最后显示原图和处理后的图像。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)