Matlab 图像噪声添加及时域频域分析 - 高斯噪声、椒盐噪声、泊松噪声
Matlab 图像噪声添加及时域频域分析 - 高斯噪声、椒盐噪声、泊松噪声
本教程将使用 Matlab 代码演示如何向图像添加高斯噪声、椒盐噪声和泊松噪声,并展示这些噪声对图像的时域和频域影响。
加入高斯噪声
时域图:
img = imread('lena.png');
img_gray = rgb2gray(img);
% 添加高斯噪声
noise = randn(size(img_gray)) * 20;
img_noisy = double(img_gray) + noise;
% 显示时域图像
subplot(1,2,1), imshow(uint8(img_gray));
title('Original Image');
subplot(1,2,2), imshow(uint8(img_noisy));
title('Image with Gaussian Noise');
频域图:
% 计算傅里叶变换
f = fft2(img_noisy);
fshift = fftshift(f);
% 取绝对值
S = abs(fshift);
% 取对数
S_log = log(S + 1);
% 显示频域图像
subplot(1,2,1), imshow(S_log, []);
title('Magnitude Spectrum');
subplot(1,2,2), imshow(angle(fshift), []);
title('Phase Spectrum');
加入椒盐噪声
时域图:
img = imread('lena.png');
img_gray = rgb2gray(img);
% 添加椒盐噪声
noise = rand(size(img_gray));
img_noisy = img_gray;
img_noisy(noise < 0.05) = 0;
img_noisy(noise > 0.95) = 255;
% 显示时域图像
subplot(1,2,1), imshow(uint8(img_gray));
title('Original Image');
subplot(1,2,2), imshow(uint8(img_noisy));
title('Image with Salt and Pepper Noise');
频域图:
% 计算傅里叶变换
f = fft2(img_noisy);
fshift = fftshift(f);
% 取绝对值
S = abs(fshift);
% 取对数
S_log = log(S + 1);
% 显示频域图像
subplot(1,2,1), imshow(S_log, []);
title('Magnitude Spectrum');
subplot(1,2,2), imshow(angle(fshift), []);
title('Phase Spectrum');
加入泊松噪声
时域图:
img = imread('lena.png');
img_gray = rgb2gray(img);
% 添加泊松噪声
img_noisy = imnoise(img_gray, 'poisson');
% 显示时域图像
subplot(1,2,1), imshow(uint8(img_gray));
title('Original Image');
subplot(1,2,2), imshow(uint8(img_noisy));
title('Image with Poisson Noise');
频域图:
% 计算傅里叶变换
f = fft2(img_noisy);
fshift = fftshift(f);
% 取绝对值
S = abs(fshift);
% 取对数
S_log = log(S + 1);
% 显示频域图像
subplot(1,2,1), imshow(S_log, []);
title('Magnitude Spectrum');
subplot(1,2,2), imshow(angle(fshift), []);
title('Phase Spectrum');
通过观察图像的时域和频域变化,我们可以更好地理解不同类型噪声对图像的影响,并为后续的图像处理提供参考。
原文地址: https://www.cveoy.top/t/topic/n3oE 著作权归作者所有。请勿转载和采集!