用MATLAB绘制图像的时域频域
如何对有泊松噪声的图像绘制它的时域,频域,频谱
下面是完整的MATLAB代码,其中假设图像文件名为“image.jpg”:
% 读取图像文件
img = imread('image.jpg');
% 添加泊松噪声
noisy_img = imnoise(img, 'poisson');
% 绘制时域图像
subplot(2,2,1);
imshow(img);
title('Original Image');
subplot(2,2,2);
imshow(noisy_img);
title('Noisy Image');
% 进行二维傅里叶变换并绘制频域图像
freq_img = fft2(noisy_img);
freq_img = abs(freq_img);
freq_img = log(freq_img+1);
subplot(2,2,3);
imshow(freq_img,[]);
title('Frequency Domain');
% 绘制频谱图像
spectrum = sum(freq_img,2);
subplot(2,2,4);
plot(spectrum);
title('Frequency Spectrum');
我可以回答该问题。
要绘制带有泊松噪声的图像的时域和频域,并绘制频谱,请按照以下步骤:
img = imread('example.png');
noisy_img = imnoise(img,'poisson');
figure;
subplot(2,1,1);
imshow(img);
title('Original Image');
subplot(2,1,2);
imshow(noisy_img);
title('Noisy Image');
f = fft2(noisy_img);
af = abs(f);
pf = angle(f);
af_shifted = fftshift(af);
pf_shifted = fftshift(pf);
figure;
subplot(2,2,1);
imshow(log(1+af_shifted),[]);
title('Amplitude Spectrum');
subplot(2,2,2);
imshow(pf_shifted,[]);
title('Phase Spectrum');
subplot(2,2,[3 4]);
surf(log(1+af_shifted),'EdgeColor','none');
title('3D Amplitude Spectrum');
fs = 1000; % 采样率
sig = randn(1,1000); % 生成信号
sig_noisy = imnoise(sig,'poisson'); % 添加泊松噪声
f = fft(sig_noisy);
af = abs(f);
N = length(af);
faxis = (-N/2:N/2-1)/N*fs;
figure;
plot(faxis,af);
xlim([-fs/2,fs/2]);
ylim([0,max(af)*1.1]);
xlabel('Frequency (Hz)');
ylabel('Magnitude');
以上是绘制带有泊松噪声的图像的时域和频域,并绘制频谱的基本步骤和示例代码。可以根据实际需求进行修改和优化。