图像处理滤波matlab去噪
时间: 2023-12-12 22:04:32 浏览: 148
以下是基于维纳滤波实现图像去噪的Matlab代码:
```matlab
I = imread('image.jpg'); % 读取图像
J = imnoise(I,'gaussian',0,0.01); % 添加高斯噪声
K = wiener2(J,[5 5]); % 维纳滤波去噪
imshowpair(J,K,'montage'); % 显示去噪前后的图像
```
代码解释:
1. 首先使用`imread`函数读取图像。
2. 使用`imnoise`函数添加高斯噪声,其中第三个参数为噪声均值,第四个参数为噪声方差。
3. 使用`wiener2`函数进行维纳滤波去噪,其中第二个参数为滤波器大小。
4. 使用`imshowpair`函数显示去噪前后的图像,其中第三个参数为显示方式。
相关问题
双边滤波图像去噪matlab
双边滤波是一种有效的图像去噪技术,可以保留图像的边缘信息。在Matlab中,可以使用以下代码进行双边滤波图像去噪:
```matlab
img = imread('image.jpg'); % 读取原始图像
img = im2double(img); % 转化为双精度浮点型
noise_img = imnoise(img, 'gaussian', 0.01); % 添加高斯噪声
filtered_img = bilateralFilter(noise_img, [5, 5], 10, 0.1); % 双边滤波
imshow(filtered_img); % 显示处理后的图像
```
上述代码中,使用imread函数读取原始图像,并使用im2double函数将其转化为双精度浮点型。然后使用imnoise函数添加高斯噪声,其中'gaussian'表示添加高斯噪声,0.01表示噪声的方差。最后,使用bilateralFilter函数进行双边滤波处理,其中[5, 5]表示滤波器大小,10表示空间参数,0.1表示灰度值参数。最后使用imshow函数显示处理后的图像。
维纳滤波图像去噪matlab
使用维纳滤波算法进行图像去噪的MATLAB代码可以如下:
```matlab
% 读入需要处理的图像
img = imread('noisy_image.jpg');
% 加载预定义的噪声方差值
variance = var(im2double(img(:)));
% 指定滤波器大小
filter_size = 3;
% 计算维纳滤波器
h = fspecial('gaussian', filter_size, variance);
estimated_noise = 0.1 * variance;
img_denoised = deconvwnr(img, h, estimated_noise);
% 显示原始图像和去噪后的图像
subplot(1,2,1);imshow(img);title('Original Image');
subplot(1,2,2);imshow(img_denoised);title('Denoised Image');
```
在这段代码中,我们首先读入需要处理的图像,然后计算其噪声方差。接着,我们指定滤波器大小,根据噪声方差计算维纳滤波器。最后使用MATLAB中的`deconvwnr`函数对图像进行去噪处理,得到去噪后的图像。最后,我们使用`imshow`函数显示原始图像和去噪后的图像。
阅读全文