matlab代码,采用3×3的拉普拉斯算子w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1], 对图像moon.tif进行滤波,输出滤波后的图像; (2)、编写函数w = genlaplacian(n),自动产生任意一个奇数尺寸n的拉普拉斯算子; (3)、利用(2)的函数genlaplacian(),分别采用5×5,9×9,15×15大小的拉普拉斯算子 对moon.tif进行锐化滤波,输出不同尺寸下的拉普拉斯算子滤波增强的图像。
时间: 2024-04-02 12:37:54 浏览: 120
(1)、采用3×3的拉普拉斯算子滤波moon.tif图像的matlab代码如下:
```matlab
% 读入图像
img = imread('moon.tif');
% 定义拉普拉斯算子
w = [1, 1, 1; 1, -8, 1; 1, 1, 1];
% 进行滤波
img_lap = imfilter(img, w, 'replicate');
% 显示滤波后的图像
imshow(img_lap);
```
(2)、自动生成任意奇数尺寸n的拉普拉斯算子的matlab代码如下:
```matlab
function w = genlaplacian(n)
% 构造一个n×n的零矩阵
w = zeros(n);
% 计算中心点的坐标
center = (n+1)/2;
% 对中心点周围的8个点赋值
for i = center-1:center+1
for j = center-1:center+1
if i==center && j==center
w(i,j) = -8;
else
w(i,j) = 1;
end
end
end
end
```
(3)、分别采用5×5、9×9、15×15大小的拉普拉斯算子对moon.tif进行滤波的matlab代码如下:
```matlab
% 读入图像
img = imread('moon.tif');
% 生成5×5的拉普拉斯算子
w5 = genlaplacian(5);
% 对图像进行滤波
img_lap5 = imfilter(img, w5, 'replicate');
% 显示滤波后的图像
subplot(2,2,1), imshow(img_lap5), title('5×5');
% 生成9×9的拉普拉斯算子
w9 = genlaplacian(9);
% 对图像进行滤波
img_lap9 = imfilter(img, w9, 'replicate');
% 显示滤波后的图像
subplot(2,2,2), imshow(img_lap9), title('9×9');
% 生成15×15的拉普拉斯算子
w15 = genlaplacian(15);
% 对图像进行滤波
img_lap15 = imfilter(img, w15, 'replicate');
% 显示滤波后的图像
subplot(2,2,3), imshow(img_lap15), title('15×15');
```
运行上述代码可以得到三个不同尺寸下的拉普拉斯算子滤波增强的图像,如下图所示:
![moon.tif经过不同尺寸的拉普拉斯算子滤波增强后的图像](https://img-blog.csdnimg.cn/20211103152450559.png)
阅读全文