图像去噪MATLAB代码
时间: 2023-09-03 20:13:51 浏览: 66
当然可以!以下是一个简单的图像去噪的MATLAB代码示例,使用了中值滤波器(median filter):
```matlab
% 读取图像
image = imread('input_image.jpg');
% 添加噪声(例如高斯噪声)
noisy_image = imnoise(image, 'gaussian', 0, 0.01);
% 应用中值滤波器去除噪声
denoised_image = medfilt2(noisy_image, [3, 3]);
% 显示原始图像、带噪声图像和去噪后的图像
subplot(1, 3, 1), imshow(image), title('原始图像');
subplot(1, 3, 2), imshow(noisy_image), title('带噪声图像');
subplot(1, 3, 3), imshow(denoised_image), title('去噪后的图像');
```
请确保将代码中的 `'input_image.jpg'` 替换为你自己的图像文件路径。这段代码首先读取图像,然后向图像添加高斯噪声。接下来,使用 `medfilt2` 函数应用一个 3x3 大小的中值滤波器来去除噪声。最后,使用 `subplot` 和 `imshow` 函数来显示原始图像、带噪声的图像和去噪后的图像。
请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体情况进行调整和优化。希望对你有所帮助!
相关问题
图像去噪Matlab代码
以下是Matlab中几种常用的图像去噪方法的代码:
1. 中值滤波:
```matlab
img = imread('lena.jpg');
noise_img = imnoise(img, 'salt & pepper', 0.05); % 加入椒盐噪声
med_img = medfilt2(noise_img, [3 3]); % 中值滤波
imshow(med_img);
```
2. 高斯滤波:
```matlab
img = imread('lena.jpg');
noise_img = imnoise(img, 'gaussian', 0.02); % 加入高斯噪声
h = fspecial('gaussian', [5 5], 2); % 高斯滤波器
gauss_img = imfilter(noise_img, h, 'symmetric'); % 高斯滤波
imshow(gauss_img);
```
3. 双边滤波:
```matlab
img = imread('lena.jpg');
noise_img = imnoise(img, 'gaussian', 0.02); % 加入高斯噪声
bf_img = imbilatfilt(noise_img); % 双边滤波
imshow(bf_img);
```
4. 小波去噪:
```matlab
img = imread('lena.jpg');
noise_img = imnoise(img, 'gaussian', 0.02); % 加入高斯噪声
[thr, sorh, keepapp] = ddencmp('den', 'wv', noise_img); % 计算阈值
denoised_img = wdencmp('gbl', noise_img, 'sym4', 2, thr, sorh, keepapp); % 小波去噪
imshow(denoised_img);
```
以上是常用的几种图像去噪方法的Matlab代码,根据具体需求可以选择不同的方法或者组合使用。
fft 图像去噪 matlab 代码
当涉及到图像去噪时,快速傅里叶变换(FFT)是一种常用的方法。下面是一个使用MATLAB实现FFT图像去噪的示例代码:
```matlab
% 读取图像
image = imread('input_image.jpg');
% 将图像转换为灰度图像
gray_image = rgb2gray(image);
% 对灰度图像进行FFT变换
fft_image = fft2(double(gray_image));
% 构建滤波器
filter = zeros(size(fft_image));
filter(1:20, 1:20) = 1; % 设置一个20x20的矩形滤波器
% 对频谱图像进行滤波
filtered_image = fft_image .* filter;
% 对滤波后的频谱进行逆FFT变换
restored_image = ifft2(filtered_image);
% 显示原始图像和去噪后的图像
subplot(1, 2, 1), imshow(gray_image), title('原始图像');
subplot(1, 2, 2), imshow(uint8(abs(restored_image))), title('去噪后的图像');
```
这段代码首先读取输入图像,然后将其转换为灰度图像。接下来,对灰度图像进行FFT变换,得到频谱图像。然后,构建一个滤波器,可以根据需要设置不同的滤波器类型和大小。在这个示例中,我们使用一个简单的矩形滤波器。然后,将滤波器应用于频谱图像,得到滤波后的频谱图像。最后,对滤波后的频谱进行逆FFT变换,得到去噪后的图像。最后,通过subplot函数将原始图像和去噪后的图像显示在同一窗口中。