在LSF求MTF的过程中,有必要去均值吗,并且,我的LSF 已经是一个高斯函数型的样子,数据从x为1开始,峰值在x为16的位置,这种情况下还需要进行 ifftshift吗, ifftshift将峰值位置移动到了x为1处,也即数据的起始位置,在LSF求MTF的过程中,这样做会破坏原本LSF的高斯型,这样做有意义吗,最后需要补零吗
以上的这些操作我都是按照一般的求傅里叶变换的思路来的,但是总感觉在LSF求MTF的过程中也这样使用是不对的
我的matlab代码如下:
% 1. LSF对称化
LSF = L - mean(L); % 去均值
LSF_smoothed = smoothdata(LSF, 'gaussian', 3); % 高斯平滑
LSF_centered = ifftshift(LSF_smoothed); % 中心对称
% 2. 加窗 + 补零
window = hann(length(LSF_centered))';
LSF_windowed = LSF_centered .* window;
n_fft = 2^16;
LSF_padded = [LSF_windowed, zeros(1, n_fft - length(LSF_windowed))];
% 3. FFT计算
MTF_fft = fft(LSF_padded);
MTF_amplitude = abs(MTF_fft);
MTF_normalized = MTF_amplitude / MTF_amplitude(1); % 确保归一化基准正确
% 4. 频率轴修正
pixel_size = 2.2; % 根据实际修改,单位mm
nyquist_freq = 1/(2*pixel_size); % 计算奈奎斯特频率
freq_axis = (0:n_fft-1) * (1/(n_fft*pixel_size));
valid_idx = 1:floor(n_fft/2);
freq_plot = freq_axis(valid_idx);
MTF_plot = MTF_normalized(valid_idx);