Point Spread Function translate to MTF
    9 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
I have point spread function (PSF) containing x and y data. x=[-25.132,-18.849,-12.566,-6.283,-3,0,3,6.283,12.566,18.849,25.132] y=[0.21446,0.21446,0.21446,0.21446,44,44.15754,44,0.21446,0.21446,0.21446,0.21446] This is point spread function (PSF). From this PSF I would like to calculate the Modulation Transfer Function MTF. I write the matlab code : x=[-25.132,-18.849,-12.566,-6.283,-3,0,3,6.283,12.566,18.849,25.132] y=[0.21446,0.21446,0.21446,0.21446,44,44.15754,44,0.21446,0.21446,0.21446,0.21446] PSF=[x,y] OTF = psf2otf(PSF) plot(OTF) How could I modified correct this code?Any Help is higly welcome. Thank you very much in advance.
cheers
Che-Wen
0 commentaires
Réponses (1)
  Craig Draper
 le 9 Avr 2020
        x=[-25.132,-18.849,-12.566,-6.283,-3,0,3,6.283,12.566,18.849,25.132];
y=[0.21446,0.21446,0.21446,0.21446,44,44.15754,44,0.21446,0.21446,0.21446,0.21446];
LSF = [x,y] % This is more like a line spread function
OTF = fftshift(fft(LSF)); % OTF
MTF = abs(OTF); % absolute value of OTF
MTF = MTF./max(MTF); % normalize
% correct sampling frequency for conversion on frequency bins to frequency
Size = length(MTF);
spacing = 3;% spacing between data points 
fsx = abs(1/spacing); % turn into sampling frequency
a = linspace(-Size/2,Size/2,Size); % form scale for conversion based on frequency bins
conversionx = fsx./Size; % conversion factor for frequency bin units to frequency (unit^-1)
Psi = a.*conversionx; % frequency (unit^-1)
plot(Psi,MTF)
xlim([0,Psi(end)])
xlabel('cycles/unit')
ylabel('MTF')
0 commentaires
Voir également
Catégories
				En savoir plus sur Cell Arrays dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!