如何用MATLAB绘制图像的时域和频域图
对有高斯噪声,椒盐噪声的图片画出它的时域和频域
1条回答 默认 最新
社区专家-Monster-XH 2023-05-05 21:05关注基于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');本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用