用MATLAB绘制图像的时域和频域图

如何用MATLAB绘制图像的时域和频域图
对有高斯噪声,椒盐噪声的图片画出它的时域和频域

基于Monster 组和GPT的调写:

  • 加载图像:使用imread函数加载图像,并将其转换为灰度图像,以便进行频域分析。
  • 时域图像:使用imshow函数显示灰度图像。
  • 频域图像:将灰度图像转换为频域图像,使用fft2函数对图像进行二维傅里叶变换(FFT),并使用abs函数计算幅度谱,使用angle函数计算相位谱。使用fftshift函数将频谱移到中心,以便更好地显示。最后使用imshow函数显示幅度谱和相位谱。
  • 下面是一个示例代码,可以用于显示有高斯噪声,椒盐噪声的图片的时域和频域图像:

% 加载图像
img = imread('example.png');
gray_img = rgb2gray(img);

% 添加高斯噪声和椒盐噪声
gaussian_noise_img = imnoise(gray_img,'gaussian',0,0.01);
salt_pepper_noise_img = imnoise(gray_img,'salt & pepper',0.05);

% 显示时域图像
subplot(2,3,1), imshow(gray_img), title('Original Image');
subplot(2,3,2), imshow(gaussian_noise_img), title('Gaussian Noise');
subplot(2,3,3), imshow(salt_pepper_noise_img), title('Salt & Pepper Noise');

% 显示频域图像(幅度谱和相位谱)
gray_fft = fft2(gray_img);
gray_fft_shift = fftshift(gray_fft);
gray_amp = abs(gray_fft_shift);
gray_phase = angle(gray_fft_shift);

gaussian_fft = fft2(gaussian_noise_img);
gaussian_fft_shift = fftshift(gaussian_fft);
gaussian_amp = abs(gaussian_fft_shift);
gaussian_phase = angle(gaussian_fft_shift);

salt_pepper_fft = fft2(salt_pepper_noise_img);
salt_pepper_fft_shift = fftshift(salt_pepper_fft);
salt_pepper_amp = abs(salt_pepper_fft_shift);
salt_pepper_phase = angle(salt_pepper_fft_shift);

subplot(2,3,4), imshow(log(1+gray_amp), []), title('Original Image FFT');
subplot(2,3,5), imshow(log(1+gaussian_amp), []), title('Gaussian Noise FFT');
subplot(2,3,6), imshow(log(1+salt_pepper_amp), []), title('Salt & Pepper Noise FFT');