Image Matlab-基于fft的图像对称PSD
我想用matlab计算图像的一维PSD(分别沿行和列) 我使用下面的代码段来实现同样的目的Image Matlab-基于fft的图像对称PSD,image,matlab,fft,psd,Image,Matlab,Fft,Psd,我想用matlab计算图像的一维PSD(分别沿行和列) 我使用下面的代码段来实现同样的目的 F=fft(img,[],2);%FFT along dim2 F=fftshift(F,2); mtf=(abs(F)).^2; mtf_mean = mean(mtf,2);% Mean of all contents of a row mtf_mean_norm = mtf_mean/max(max(mtf_mean)); %Normalization to 1 plot(mtf_mean_norm
F=fft(img,[],2);%FFT along dim2
F=fftshift(F,2);
mtf=(abs(F)).^2;
mtf_mean = mean(mtf,2);% Mean of all contents of a row
mtf_mean_norm = mtf_mean/max(max(mtf_mean)); %Normalization to 1
plot(mtf_mean_norm);
当我绘制它时,我期望一个关于中心的对称图(这就是我想要的)。但是,我碰巧看到两个部分看起来像附图中的非商业性部分
看起来我有一个代码错误,有什么线索我遗漏了吗
图像url:我不是一个图像处理人员,但我想说的是,从我自己的统计知识来看。 您应该使用
mtf=abs(F)'*abs(F)
而不是mtf=(abs(F))。^2
。我得到了下面的数字
下面是生成图形的代码
> img=randn(50,50);
> F=fft(img,[],2);%FFT along dim2
> F=fftshift(F,2);
> mtf=abs(F)'*abs(F);
> mtf_mean = mean(mtf,2);% Mean of all contents of a row
> mtf_mean_norm = mtf_mean/max(max(mtf_mean)); %Normalization to 1
> plot(mtf_mean_norm);
> plot(mtf_mean_norm);