matlab对图像滤除噪声的程序
时间: 2023-11-02 22:18:46 浏览: 32
Matlab中有多种方法可以对图像进行噪声滤波,以下是其中的几种方法:
1. 中值滤波:该方法使用图像中每个像素周围的像素值的中位数来代替该像素值,从而消除图像中的噪声。
```matlab
img = imread('image.jpg');
img_median = medfilt2(img, [3 3]); % 使用3x3的中值滤波器
imshow(img_median);
```
2. 高斯滤波:该方法使用高斯函数对图像进行平滑处理,从而消除图像中的噪声。
```matlab
img = imread('image.jpg');
img_gaussian = imgaussfilt(img, 2); % 使用标准差为2的高斯滤波器
imshow(img_gaussian);
```
3. 维纳滤波:该方法使用统计模型来估计图像中的噪声,从而更准确地消除噪声。
```matlab
img = imread('image.jpg');
img_wiener = wiener2(img, [5 5]); % 使用5x5的维纳滤波器
imshow(img_wiener);
```
以上仅为几种常见的图像滤波方法,根据具体情况可选择不同的滤波方法。
相关问题
对图像去噪滤波的matlab程序
以下是一个基于MATLAB的均值滤波程序示例:
```matlab
% 读取图像
img = imread('lena.png');
% 显示原图像
subplot(1,2,1);
imshow(img);
title('Original Image');
% 添加高斯噪声
noise_img = imnoise(img,'gaussian',0,0.01);
% 显示加噪图像
subplot(1,2,2);
imshow(noise_img);
title('Noisy Image');
% 进行均值滤波
h = fspecial('average', [3 3]);
filtered_img = imfilter(noise_img, h);
% 显示滤波后图像
figure;
imshow(filtered_img);
title('Filtered Image');
```
上述程序中,我们首先读取了一张名为"lena.png"的图像,并显示原图像。接着,我们使用imnoise函数向原图像中添加高斯噪声,得到加噪图像。然后,我们使用fspecial函数创建了一个3x3的均值滤波器,将其作用于加噪图像上,得到去噪后的图像。最后,我们将去噪后的图像显示出来。
需要注意的是,此程序只是一个示例,实际使用时需要根据具体情况选择合适的滤波算法和参数。
MATLAB图像复原之逆滤波程序代码
以下是一个简单的 MATLAB 图像逆滤波程序代码示例:
```matlab
%% 读取图像并添加模糊和噪声
I = imread('lena.png');
h = fspecial('motion', 20, 45);
J = imfilter(I, h, 'circular', 'conv');
J = imnoise(J, 'gaussian', 0, 0.001);
%% 逆滤波
K = fft2(J);
H = fft2(h, size(I, 1), size(I, 2));
K_hat = K./H;
L = real(ifft2(K_hat));
%% 显示结果
figure
subplot(1,3,1), imshow(I), title('原始图像')
subplot(1,3,2), imshow(J), title('模糊和噪声')
subplot(1,3,3), imshow(L), title('逆滤波恢复')
```
在这个示例中,我们首先读取一张“lena.png”图像,并使用 fspecial 函数创建一个模糊核,然后将其应用于图像 I 上,得到模糊图像 J。接着,我们使用 imnoise 函数向图像 J 添加高斯噪声。
接下来,我们通过对 J 进行傅里叶变换和逆滤波来尝试恢复原始图像。我们首先对 J 进行傅里叶变换,并创建一个与图像 I 相同大小的模糊核的傅里叶变换。然后,我们将 J 的傅里叶变换除以模糊核的傅里叶变换,得到一个逆滤波的估计值 K_hat。最后,我们对 K_hat 进行逆傅里叶变换,得到恢复的图像 L。
最后,我们使用 subplot 函数将原始图像、模糊图像和恢复图像一起显示。