There is a 'Through-focus MTF feature'. Is there a way to extract MTF50 through focus instead of modulation at a certain frequency through focus?
Hi Anton,
The Through-Focus MTF plots do not provide a way to search for the spatial frequency which provides MTF50. Although, you could write a ZPL to do that search for you. For example, you could ask a ZPL to perform the following actions:
- Set the field and wavelength of interest
- Create a loop to cycle through multiple spatial frequencies
- Store the tangential and sagittal response to an array
- Use an IF statement to check for MTF50. If found, store the spatial frequency and focus shift data to a different array
I have set up a ZPL macro that will perform actions 1-3 for you. This macro will cycle through spatial frequency 0 to 70 and output the tangential and sagittal response for fiel = 1, wavelength = 1. You can add an IF statement before line 47 to run a check for MTF50. Here is what I have so far:
lensFile$ = $FILEPATH()
fileNameLength = SLEN(lensFile$)
fileName$ = $LEFTSTRING(lensFile$, fileNameLength - 3)
cfgfile$ = fileName$ + 'CFG'
! Set up the Through Focus Analysis
field = 1 # Declare the field of interest
wave = 1 # Declare the wavelength of interest
MODIFYSETTINGS cfgfile$, TFM_FIELD, field # Change the settings to use the field of interest
MODIFYSETTINGS cfgfile$, TFM_WAVE, wave # Change the settings to use the wavelength of interest
numDataPoints = 201 # Each field will have 201 data points in the output
DECLARE tangent, double, 1, numDataPoints # Setup array to hold Tangential data
DECLARE sagit, double, 1, numDataPoints # Setup array to hold Sagittal data
! Extract data and write it to the arrays
! Cycle through multiple spatial frequency values
FOR freq, 0, 70, 5
PRINT 'Spatial Frequency: ', freq
MODIFYSETTINGS cfgfile$, TFM_FREQ, freq # Set new spatial frequency
A$ = $TEMPFILENAME()
GETTEXTFILE A$, Tfm # Extract Through Focus data
OPEN A$ # Open Through Focus data file and skip to numeric data
FOR i, 1, 14, 1
READSTRING B$
NEXT
FOR i, 1, numDataPoints, 1 # Write the data to the arrays
READNEXT shift, tanVal, sagVal
tangent(i) = tanVal
sagit(i) = sagVal
FORMAT 1.6
PRINT tangent(i), ' ', sagit(i) # Print the data for comparison
NEXT
DELETEFILE A$
CLOSE
NEXT
Each of the keywords I used are described in the Help System file 'The Programming Tab > About the ZPL > KEYWORDS (about the zpl).' Will this work for you? Let me know if you have any questions!
Best,
Allie
Hi Anton,
This usually crops up when the wrong configuration file is provided. In the code I attached, the configuration file I used was
data$ = $DATAPATH()
cfgfile$ = data$ + '\Configs\TFM.CFG'
I have provided some guidance on identifying and using configuration files here:
Let me know if you have any other questions!
Best,
Allie
Hi Allie,
I am trying to run your code without modifications ans I am getting this error:
'ERROR in MODIFYSETTINGS: Cannot open settings file.
MODIFYSETTINGS CFGFILE$ , HFT_FIELD , FIELD'
Any chance you know how to fix this?
Thank you
Anton
Hi Allie,
Thank you for the prompt response!
I think this is all I need. I will give it a try and post here if I have more questions.
Thank you
Anton
Reply
Enter your username or e-mail address. We'll send you an e-mail with instructions to reset your password.