cccccc1ed 2023-05-05 21:00 采纳率: 100%
浏览 253
已结题

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

如何用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');
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月13日
  • 已采纳回答 5月5日
  • 创建了问题 5月5日