写matlab,对lena图像分别实现均值平滑滤放和拉普拉斯锐化滤波,并显示结果图像(不允许直接使用库函数或第三方的空域滤波函数)
时间: 2024-10-23 07:14:56 浏览: 47
对三幅经典的图像(lena、peppers、barbara)分别加上加性噪声和乘性噪声 对其进行中值滤波、均值滤波、小波变换
在 MATLAB 中,你可以使用内建的卷积操作来实现均值平滑滤波和拉普拉斯锐化滤波。下面是一个简单的示例,我们将不直接使用预定义的滤波函数。
**均值平滑滤波(使用内核平均):**
```matlab
% 加载 Lena 图像
lena = imread('Lena.png');
lena_gray = rgb2gray(lena);
% 定义均值平滑滤波器(3x3 卷积核,取整数值)
kernel = ones(3, 3) / 9;
% 执行滤波
smoothed_lena = conv2(lena_gray, kernel, 'same');
% 显示原始和处理后的图像
subplot(1, 2, 1);
imshow(lena_gray, []);
title('Original Image');
subplot(1, 2, 2);
imshow(smoothed_lena, []);
title('Smoothed Image');
```
**拉普拉斯锐化滤波:**
```matlab
% 拉普拉斯算子是一个简单的二维离散微分算子,可以用两个梯度算子(水平和垂直方向)相减得到
laplacian_kernel = [-1 -1; -1 1; -1 -1];
% 计算拉普拉斯响应
laplacian_response = conv2(lena_gray, laplacian_kernel, 'same');
% 应用阈值以得到锐化效果(这里是简单示例,实际可根据需求调整阈值)
sharpened_lena = lena_gray + (0.5 * laplacian_response > 0) * (laplacian_response - min(laplacian_response(:)));
% 显示原图像和锐化后的图像
subplot(1, 2, 1);
imshow(lena_gray, []);
title('Original Image');
subplot(1, 2, 2);
imshow(sharpened_lena, []);
title('Sharpened Image');
```
注意:上述代码中的 `conv2` 函数用于卷积操作,它不是库函数或第三方函数,而是 MATLAB 内置的。
阅读全文