edgemtf(1) General Commands Manual edgemtf(1) NAME edgemtf - Computes MTF curves from images of an edge SYNOPSIS edgemtf [options] image_file output_rootname DESCRIPTION Edgemtf analyzes an image of a vertically oriented edge and computes the modulation transfer function (MTF). The MTF is the Fourier trans- form of the derivative of the edge. The edge need not be perfectly vertical because the program will align the derivatives of individual lines across the edge. (In fact, the edge should not be perfectly ver- tical, in order to sample the full range of alignments between the edge and the pixels). Because derivatives could be noisy, the program usu- ally sums a few adjacent lines together before taking the derivative. The program proceeds as follows: 1) It sums the lines together as indicated by the -sum option. 2) It averages together the number of summed lines indicated by the -average option to form an initial reference. 3) It takes the derivative of each summed line and of the reference (the simple difference between successive values). 4) It aligns each derivative to that of the reference 5) It computes shifted lines and adds them together to make a second reference. 6) It repeats step 3, 4, and 5, ending up with a final sum of all aligned lines. 7) It takes the derivative of that final sum. 8) It takes the Fourier transform of that derivative and then takes the magnitudes of the Fourier components. 9) It averages successive sets of these magnitudes to obtain the MTF curve at the number of points indicated by the -points option. It averages the first few components and scales the curve so that the average of those components would be 1. This is not ideal. The program will put out a complete output file and an MTF file for each section suitable for use with Mtffilter. The complete file has three columns of data, where the first column is a type number. There are five kinds of output for each section: section_number frequency averaged MTF value 100+section_number frequency unaveraged scaled Fourier magnitudes 200+section_number X coordinate average of aligned lines 300+section_number X coordinate derivative from average of lines 400+section_number Y coord/sum alignment shift for each summed line OPTIONS Edgemtf uses the PIP package for input exclusively (see the manual page for pip). The following options can be specified either as command line arguments (with the -) or one per line in a command file or param- eter file (without the -). Options can be abbreviated to unique let- ters; the currently valid abbreviations for short names are shown in parentheses. -input (-i) OR -InputFile File name Input file with images of edges. If this option is not entered, the first nonoption argument will be used for this entry. -rootname (-r) OR -RootNameOfOutput File name Root of names for the output files. If this option is not entered, the second nonoption argument will be used for this entry. The complete output file will be named with this root plus ".out"; MTF files for individual images will be named with this root plus "-n.mtf", where n is the section number. -sections (-se) OR -SectionsStartAndEnd Two integers Starting and ending sections to analyze (numbered from 0). The default is to do all sections in the input file. -points (-po) OR -NumberOfPoints Integer Number of points to produce in the averaged MTF curve. If the curve appears irregular, reduce this value. The default is 20. -sum (-su) OR -SummingOfLines Integer Number of lines to sum into each line for alignment and analy- sis. The default depends on the indicated binning: 3, 2, 1 and 1 for binnings 1, 2, 3, and 4. If data are particularly noisy, this number may need to be increased. However, if the angle of the edge is more than a few degrees, it may be necessary to reduce this number to 1 to avoid blurring the edge by summing without aligning lines. -average (-a) OR -AveragingForReference Integer Number of summed lines to average together to make the initial reference for aligning other summed lines. The default depends on the indicated binning: 2, 2, 2 and 1 for binnings 1, 2, 3, and 4. -components (-co) OR -NormalizationComponents Integer Number of Fourier components near zero frequency to average together to normalize the curve to start at 1.0 for zero fre- quency. The default depends on the indicated binning: 4, 2, 2 and 1 for binnings 1, 2, 3, and 4. This number may need to be decreased if images are not very wide. If too many components are included, then the whole curve will be scaled too high, and the first averaged MTF value might even exceed 1. -binning (-b) OR -BinningOfImages Integer Binning of the images, used to select the defaults for summing and normalization, as described above for the -sum, -average, and -components options. -lines (-l) OR -LinesForReference Multiple integers Y coordinate of the middle line to use for making an initial reference. When the edge is very sharp, this entry allows you to specify a place where the edge falls most strongly between two pixels. The default is to take the middle coordinate in Y. If you use this option, you must enter a value for each section that is being analyzed. -cross (-cr) OR -CrossingValue Floating point The program will report the frequency at which the MTF crosses below a particular value. This single number can be useful for comparing different curves that have similar shapes. The default is 0.5. -zero (-z) OR -ZeroDerivative Integer X coordinate beyond which to zero out the derivative. This option was apparently helpful for images that had a gradient on the right side. -param (-pa) OR -ParameterFile Parameter file Read parameter entries as keyword-value pairs from a parameter file. -help (-h) OR -usage Print help output -StandardInput Read parameter entries from standard input. HOW TO GET A CCD CAMERA MTF CURVE Take an unbinned image of the beam stop in the microscope, gain normal- ized, with a high number of counts. You are only interested in the straight segment of the beam stop, so you can acquire a subarea that excludes unneeded areas. However, include at least as much white area above and below the beam stop as the width of this straight segment. Open the image in 3dmod and activate the Zap window rubberband. Draw the rubberband to encompass the good area of one edge of the beam stop in the straight region. Omit bumps if possible, but otherwise make the band as long as possible. Make it about 1 1/2 times as high as the width of the beam stop, and position it so that it is centered on the edge. Select File-Extract in the Info window to save this to a file (e.g., edge.1). Shift the rubberband with the second mouse button to center it on the other edge. Run File-Extract again to save to a second file (e.g., edge.2). Run header on each file to make sure they are the same size. header edge.1 header edge.2 If they are not the same size, put the smaller one first in the follow- ing newstack command, or specify a rotated output size with the -size option. Stack and rotate the two images: newstack -ro 90 edge.1 edge.2 edges.st Open the stack file in 3dmod and click on the middle of the edge. Open a graph window and zoom and/or stretch it until you can see the pixel steps easily (use the left and right arrows to step by pixels in X). Use up and down arrows to look at various points along the edge and see if it rasters between places where the edge falls sharply over one pixel, and places where it falls a lot over two pixels instead. A very sharp edge will show a variation like this, whereas unbinned images typically will not. If you see this kind of behavior, pick a Y value where the big falloff is over one pixel instead of two. You want a place where there is a step from one pixel at some distance below half- way up to the next pixel being the same distance above halfway up. You do not want a place where there is a pixel at a value halfway up. Watch where the red line cuts the curve as you go up and down in Y (shift with left and right arrows to keep the line near the center of the edge). Repeat this procedure to pick a Y value for the other sec- tion. If you don't see a variation in the falloff, just take the default of starting at the center in Y. If do see the variation but find all this too confusing, you can skip this step, since it makes very little dif- ference in the final curve even for a sharp edge. Run Edgemtf after picking an informative root name for the output (e.g. 200KV) edgemtf edges.st 200KV Examine the MTF curves to make sure they are sufficiently smooth and properly normalized, and to pick one side of the edge over the other. You could do this with any plotting program. To use Onegenplot enter onegenplot -ty 0,1 rootname.out The first curve will be graphed with circles, the second with crosses. If they are noisy you need to average more components (decrease the number of output points). To analyze at different binnings, just run, for example, newstack -bin 2 edges.st edgesbin2.st edgemtf -bin 2 edgesbin2.st 200KVbin2 The amount of summing and averaging is set based on the -bin entry, but if you had to change the defaults for the unbinned case, you will prob- ably have to do so for binned cases too. HISTORY Written by David Mastronarde, late 1990's Added to IMOD, 6/3/11 BUGS Email bug reports to mast at colorado dot edu. IMOD 5.2.0 edgemtf(1)