图像均值滤波降噪的matlab代码实现
时间: 2023-10-16 07:15:43 浏览: 100
以下是利用 Matlab 实现图像均值滤波降噪的代码:
```matlab
% 读取图像
img = imread('lena.jpg');
% 显示原图像
subplot(1,2,1);
imshow(img);
title('Original Image');
% 定义滤波器大小
filter_size = 3;
% 定义均值滤波器
mean_filter = ones(filter_size) / filter_size^2;
% 对图像进行均值滤波
filtered_img = imfilter(img, mean_filter);
% 显示降噪后的图像
subplot(1,2,2);
imshow(filtered_img);
title('Denoised Image');
```
其中,`imread` 函数用于读取图像,`imshow` 函数用于显示图像,`imfilter` 函数用于进行滤波操作。`filter_size` 变量用于定义滤波器的大小,`mean_filter` 变量定义均值滤波器,`filtered_img` 变量存储降噪后的图像。运行代码后,会显示原图像和降噪后的图像。
相关问题
均值滤波与高斯滤波结合降噪matlab代码
### 结合均值滤波和高斯滤波进行图像降噪的Matlab代码
为了实现结合均值滤波和高斯滤波的图像降噪方法,可以先应用高斯滤波来平滑图像中的高频噪声,然后再使用均值滤波进一步减少残留噪声。这种方法能够有效去除不同类型的噪声并保留更多的细节。
下面是一个具体的Matlab代码示例:
```matlab
% 加载测试图片
img = imread('test_image.jpg');
gray_img = rgb2gray(img);
% 添加椒盐噪声
noisy_img = imnoise(gray_img, 'salt & pepper', 0.05);
% 应用高斯滤波器
gaussian_filtered = imgaussfilt(noisy_img, 2); % 高斯标准差设为2
% 定义均值滤波窗口大小
mean_filter_size = [3, 3];
% 应用均值滤波器
final_result = imfilter(gaussian_filtered, fspecial('average', mean_filter_size));
% 显示原始图、加噪后的图以及处理后的结果对比
figure;
subplot(1, 3, 1), imshow(gray_img), title('Original Image');
subplot(1, 3, 2), imshow(noisy_img), title('Noisy Image');
subplot(1, 3, 3), imshow(final_result), title('Filtered Result');
imwrite(final_result, 'filtered_result.png'); % 保存最终的结果到文件
```
此段程序首先加载了一张灰度化的输入图片,并向其加入了一些随机分布的椒盐噪声作为干扰源[^1]。接着通过`imgaussfilt()`函数执行了基于二维正态分布权重系数的空间域卷积操作完成初步去燥过程;之后再利用平均模板(`fspecial`)配合`imfilter()`实现了二次过滤以增强效果。最后将原图、含噪音版本及经过两次净化后的成品依次展示出来供观察比较[^2]。
均值滤波与高斯滤波结合降噪matlab代码,先均值后高斯
### MATLAB代码实现
对于图像处理中的噪声减少,可以采用先应用均值滤波器再应用高斯滤波器的方法来改善图像质量。下面展示了如何利用MATLAB编写一段程序完成此操作。
```matlab
% 加载测试图片并添加椒盐噪声作为输入样本
I = imread('cameraman.tif'); % 读取灰度图
J = imnoise(I,'salt & pepper',0.02); % 添加一定比例的椒盐噪声
figure;
subplot(1,3,1);
imshow(J);
title('原始含噪图像');
% 应用均值滤波
meanFilteredImg = imgaussfilt(J, 0, 'FilterSize', 3);
subplot(1,3,2);
imshow(meanFilteredImg);
title('经过均值滤波后的图像');
% 随后施加高斯平滑处理
gaussianFilteredImg = imgaussfilt(meanFilteredImg, 2);
subplot(1,3,3);
imshow(gaussianFilteredImg);
title('最终经由高斯滤波处理过的图像');
```
需要注意的是,在上述脚本中`imgaussfilt`函数被用来执行两种不同类型的过滤过程——当标准差设置为零时模拟了平均化效果;而通过调整第二个参数可控制实际的高斯模糊程度[^1]。
阅读全文
相关推荐














