V1.63 Release Notes (19 November 2002)

1) Thanks to Norbert Vischer, worked around a bug that prevented NIH Image from running 
correctly on Mac OS 9.2.2 and in the Classic environment of OS X 10.2.

V1.62 Release Notes (13 April 1999)

1) A bug was fixed that caused the title bar to switch to color when
saving a stack in PICS format and the monitor was not set to 256 colors.

2) A bug was fixed that could cause some plug-ins to fail on Power Macs.

3) The maximum number of slices per stack was increased to 5000 (PPC only).

4) The AverageSlices macro routine now accepts two optional arguments that
specify the starting slice and number of slices to be averaged. Two new 
macros in the "Movie Making" macro file ('Average of Stack' and 'Running 
Average of Stack') use this new capability.

5) The AutoOutline macro routine no longer beeps when it is unable
to create an ROI.

6) The maximum number of image windows was increased from 250 to 1000.

7) The maximum number of text windows was increased from 10 to 20.

8) Scion frame grabbers should now work correctly on G3 Macs.

9) Capturing works with more QuickTime digitizers. It is no longer
necessary to turn of virtual memory on the 7500/7600 to capture using
the built-in digitizer. The built-in G3 digitizer works for single
frame capture if the monitor is set to 256 colors.

10) A bug was fixed that sometimes caused the calculated centers of
lines and rectangles to be offset by a half pixel.

11) Fixed a missing "System" LUT problem on blue and white G3 Macs by adding
the a clut id=8 resource to the NIH Image application.

V1.61 Release Notes (20-Dec-96)

1) 24-bit color TIFF files in planar format can now be opened.

2) Bugs were fixed that caused Saving/Exporting of LUTs, 8-bit to RGB
conversions, display of RGB values in Info, and macro LUT updating to fail
if the monitor was not set to 256 colors.

3) New images less than 16 pixels in height can now be created.

4) Balloon help in the Preferences dialog box was fixed.

5) The PutPixel macro routine is now about five times faster.

6) Bugs were fixed that could cause NIH Image to crash when opening PICS

7) NIH image now opens and saves QuickTime movies thanks to source code
contributed by Eric Shelden (shelden@umich.edu). The Open command will
place images from a QuickTime movie into a new stack. Note, however, that
the current LUT is always used. Therefore, before opening the movie, you
must switch to the Grayscale LUT when opening a grayscale movie and to the
System LUT when opening a color movie. Stacks can be saved in QuickTime
format using the Save As command and selecting the radio button labeled
"QuickTime". A dialog box allows you to select the compression scheme and
image quality level. 

8) The Get('parameter') macro function was extended to return the
following parameters:

    Get('Offset') - returns the current frame grabber offset
    Get('Gain') - returns the current frame grabber gain
    Get('ScreenWidth') - returns the screen width in pixels
    Get('ScreenHeight') - returns the screen height in pixels

9) The 'exit' macro command now accepts an optional string argument and
passes it automatically to 'PutMessage'. The frequent sequence

   if error then begin
       PutMessage('reason ...');

can now be shortened to

   if error then
      exit('reason ...');

10) The DICOM file import routine was improved.

11) Commands were added to the Binary submenu for generating Euclidian
distance maps, ultimate eroded points, and for doing watershed

The "Distance Map" command replaces each foreground (black) pixel in a
binary image with a gray value equal to that pixel's distance from the
nearest background (white) pixel. To reduce rounding errors, intermediate
EDM values are stored as 16-bit values. Macros can generate EDMs using the
"binary('edm')" macro command. 

The "Ultimate Points" command generates the ultimate eroded points (UEPs)
of the EDM. It requires a binary image as input. The UEPs represent the
centers of particles that would be separated by segmentation. The UEP's
gray value is equal to the radius of the inscribed circle of the
corresponding particle. Note that the EDM is automatically smoothed when
doing watershed segmentation but not when generating UEPs. You can force
EDM smoothing, however, by holding down the option key while selecting the
"Ultimate Points" command, or be putting "SetOption;" in front of the
binary('ultimate points') macro command. Smoothing the EDM results in
fewer noise induced errors but causes the gray values of the UEPs to be
slightly lower, i.e. it slightly reduces the estimated particle sizes.
This command requires free ram equal to 2-5 times the image size. Use the
"binary('ultimate points')" command to generate UEPs in a macro.

The "Watershed" command separates touching convex particles. It requires
free ram equal to 2-5 times the image size. Hold down the option key to
disable EDM smoothing. Watershed segmentation is available from macros
using the "binary('watershed')" macro command. 

12) Support was added for the PCI version of the Scion AG-5.

V1.60 Release Notes (20-Mar-96)

1) The QuickTime video digitizer settings can now be saved using Record 

2) DICOM and ACR/NEMA files with headers larger than 4096 bytes can 
now be imported.

3) A bug was fixed that sometimes caused 'Analyze Particles' to fail if the 
monitor was not in 256 color mode.

4) A bug was fixed that caused the wand tool to fail when clicking inside 
an object touching the right edge of the image.

5) If the mouse is over an active frequency domain (FFT) window, its 
location is now displayed in polar coordinates.  The angle is expressed in 
degrees (°), while the radius is expressed in either pixels per cycle (p/c) 
or, if a spatial scale calibration has been made using Set Scale, in [units] 
per cycle (e.g. mm/c).

6) Capturing of images from QuickTime compatible digitizers now works 
correctly when the grayscale map has been modified or when the number 
of reserved LUT entries is non-zero.

7) A bug was fixed that caused the 'Time Stamp' option of the 'Make Movie' 
command' to fail when the monitor was not set to 256 colors.

8) Support was added for the PCI versions of the Scion LG-3 and VG-5 
frame grabber cards. Both cards can capture 30 full size frames per 
second to system RAM.

9) A checkbox for selecting "S-Video" input was added to the QuickTime 
video digitizer version of the Video Control dialog box.

10) Support for user-defined functions was added to the macro language.

11) A function ('GetPath') was added to the macro language for fetching 
various file paths. It has three variations:

    1) GetPath('window') - returns the folder path (e.g. 'HD500:Images:')
    of the current current image or text window. Returns an empty string if
    no window is open or the current window has no file associated it.

    2) GetPath('startup') - returns the path of the folder from which
    NIH Image was started.

    3) GetPath('pref') - returns the path of the Preferences folder in
    the System Folder.

The 'File Paths Demo' macro in 'Input/Output Macros' demonstrates how to 
these functions.

12) A command was added to the macro language for getting information 
about files. It has the form:

    GetFileInfo(FullPath, FileType, FileSize)

where 'FullPath' is a string containing a path name (e.g. 
'HD500:Images:image01'). GetFileInfo returns the file type ('TIFF', 'PICT', 
'TEXT' etc) in the string variable 'FileType' and the file size in bytes in the 
integer variable 'FileSize'. If the file isn't found, 'FileType' is set to an 
empty string and 'FileSize' is set to -1. See the 'File Paths Demo' macro in 
'Input/Output Macros' for an example of how to use GetFileInfo.

13) A macro command was added for selecting tools from the tool palette 
It has the form "SelecTool(tool)", where tool is one of: 'magnifier', 
'grabber', 'pencil', 'eraser', 'brush', 'drawline', 'paintbucket', 'profile', 
'wand', 'angletool', 'rectangle', 'oval', 'polygon', 'freehand', 'straightline', 
'freeline', 'segmentline', 'lut', 'text', 'spraycan', 'picker' or 'crosshair'.

14) A "Desktop Friendly" option was added to Preferences that eliminates 
annoying desktop color changes when the monitor is set to 256 colors but 
reduces the number of colors available for displaying images.

15) The PPC version of NIH Image now runs up to 12% faster due to better 
code optimization in the Metrowerks Codewarrior 8 PPC compiler.

16) A bug was fixed that caused the Make Montage command to draw a 
border around the entire composite image when the "Borders" option was 
not checked. This was a problem when creating movie strips for use with 
the Rotator (http://rsb.info.nih.gov/nih-image/Java/Rotator/) Java applet.

V1.59 Release Notes

1) The MouseDown macro routine, which broke in V1.58, is working again.

2) A bug was fixed in the PowerPC native version of NIH Image that caused 
the four character creator code for exported text files (set in 
Preferences) to be saved incorrectly.

3) The "Scale Image Arithmetic" checkbox was removed from the 
Preferences dialog box since it duplicates the "Scale Math" checkbox in the 
Paste Control dialog box.

4) A bug was fixed in the Binary/Skeletonize command that caused some 
particles to reduce to nothing.

5) A bug was fixed that would sometimes cause surface plots to be drawn 
incorrectly when the Grayscale/Color option was selected.

6) The "Calibrate" option, used to recalculate the approximate original 16 
bit values of an imported 16-bit images, is now disabled when a 16-bit 
stack is imported and "Fixed Scale" is not checked. In previous versions of 
NIH Image, the recalculated intensity measurements were only correct for 
the first slice.

7) The trigger on first frame only feature of the Make Movie command now 
works correctly with the Data Translation QuickCapture card.

8) The MoveWindow macro command now works without an image window 
being open.

9) A bug was fixed that could cause NIH Image to crash if, in a macro,  the 
ShowHistogram command followed a StartDigitizing command.

10) A new FFT submenu was added to the Process menu to support 
frequency domain display, editing and processing. The FFT command in the 
FFT submenu computes the Fourier transform and displays the power 
spectrum. It requires a square, power of two size image or selection. It 
uses a real, 2D Fast Hartley Transform (FHT) routine contributed by Arlo 
Reeves, the author of ImageFFT. For more information about ImageFFT and 
the FHT, see the ImageFFT documentation, example images, and Arlo's 
thesis, available from the nih-image_spinoffs directory on 
zippy.nimh.nih.gov. Note that these routines run very slowly on 68000 

You can filter or mask spots on the transformed (frequency domain) image 
and do an inverse FFT to produce an image which only contains the 
frequencies selected or which suppresses the frequencies selected. Use 
NIH Image's editing and selections tools to draw black or white areas that 
mask portions of the transformed image. Black areas (pixel value=255) 
will pass the corresponding frequencies and white areas (pixel value=0) 
will filter out the corresponding frequencies. It is not, however, possible 
to both pass and filter during the same inverse transform. The 
"fft_example.bin" test image in the images directory on zippy provides an 
example of FFT editing and filtering.

The transformed frequency domain image is stored in a 32-bit real buffer 
attached to the window displaying the power spectrum. The name in the 
window's title bar is enclosed in angle brackets (e.g., "<>") to 
indicate that the window includes a real image. Note that frequency 
domain images require 5 times as much memory as normal 8-bit images - 
4 bytes/pixel for the real image and 1 byte/pixel for the power spectrum 
image. The only commands in NIH Image that currently recognize real 
images are "FFT", "Inverse FFT", "Redisplay Power Spectrum" and "Image 
Math" All other commands "see" only the 8-bit power spectrum.

The "Redisplay Power Spectrum" command recomputes the power spectrum 
from the real frequency domain image. It allows you to start over if you 
mess up while editing the power spectrum display.

The "Swap Quadrants" command swaps quadrants 1 and 3 and quadrants 2 
and 4 of the active image. It requires an 8-bit image whose height and 
width are equal and a power of two. Quadrant swapping is performed 
automatically every time a power spectrum is computed. In the normal, 
un-swapped, state, the power spectrum’s central peak is distributed 
among the four corners of the image.  While this is the format used in all 
computations, it doesn’t correspond to nature’s FFT analog, the diffraction 
pattern.  This command is useful because cross and auto-correlation 
operations  (the "cMul" operator in Image Math) result in inherently un-
swapped space domain images, yet like power spectra, correlation 
functions are often displayed in quadrant swapped format.  The Swap 
Quadrants command lets you choose the format you desire.

The Image Math command was expanded to support arithmetic operations 
on real images. It supports multiplication (convolution), division 
(deconvolution) and conjugate multiplication (crosscorrelation and 
autocorrelation) of frequency domain images.  See the ImageFFT 
documentation and "The Image Processing Handbook" by John Russ for 
examples of how these operations are used to analyze images. There are 
macros in the "FFT Macros" file that do autocorrelation.

The ImageMath macro command now outputs a real image when it sees the 
keyword "real". For example, the command ImageMath('mul (real)', in1, in2, 
1, 0, 'result') generates a real image that is the product of the two input 
images. It also recognizes  the new  operator keyword 'cmul'  for doing 
conjugate multiplication of frequency domain images.

A macro command was added to support various FFT operations. It 
currently has seven variations:

    1) FFT('foreward') - Generates a Fourier transform of a square, power of
    two size image. The image can be either 8-bit integer or real. For real
    images, the transformation is done in-place.

    2) FFT('inverse') - Does an in-place inverse transform with black or 
    white reqions in the 8-bit power spectrum used as a mask to generate
    a filter. This macro command duplicates the behavior of the
    "Inverse FFT" menu command.

    3) FFT('inverse with mask') - Same as FFT('inverse').

    4) FFT('inverse with filter') - Uses the 8-bit grayscale component of the
    FFT window as a filter which the frequency domain image is multiplied by
    prior to retransformation. In this case, the power spectrum must be
    replaced by a grayscale filter before retransformation. The "High Pass"
    and "Low Pass" macros in "FFT Macros" use this form of the FFT command.

    5) FFT('inverse without filter') - No masking or filtering is done
    before retransformation.

    6) FFT('Display Power Spectrum') - Recomputes the power spectrum.

    7) FFT('Swap Quadrants') - Swaps quadrants 1 and 3 and quadrants
    2 and 4 of the current 8-bit image.

11) Support was added for QuickTime compatible video digitizers such as 
those built into "AV" Macs and the PowerMac7500/8500. Third party 
digitizers like the QuickCam from Connectix are also supported. Most NIH 
Image video capture functions, such as averaging/integration, movie 
capture, background subtraction, and "live" paste are supported. Use the 
Video control dialog box to specify the capture mode (grayscale, 8-bit 
color or 24-bit color) and video format (NTSC, PAL or SECAM). These 
options are currently not saved by "Record Preferences". Use the Capture 
Color command to grab 8-bit color images. If 24-bit color capture is 
enabled in Video Control, Capture Color will generate a 3-slice RGB stack 
which can be saved as a 24-bit TIFF file. The video digitizer support in NIH 
Image was developed with the help of Cyrus Daboo, the author of Plug-in 

12) You can now startup NIH Image with customized settings by double-
clicking on a copy of Image's preferences file ("Image Prefs"). In this case, 
Image will use the settings in the copy of the preferences file rather than 
ones stored in "Image Prefs" in the Preferences folder. Note that Record 
Preferences always record settings in the file "Image Prefs" in the 
Preferences folder.

V1.58 Release Notes

1) A bug was fixed that sometimes caused Scale and Rotate to produce 
incorrect results when doing bilinear interpolation and the output image 
was wider than 2000 pixels.

2) Selections can now be copied from images larger than the Clipboard 
buffer as long as the selection is not larger than the Clipboard buffer.

3) It is no longer necessary to have an image window open to export 

4) An optional third argument was added to the GetNumber() macro routine 
for specifying the the number of digits to the right of the decimal point in 
the default value. Use zero to display an integer default.

5) The "IndexedToRGB" macro command was added for converting 8-bit 
color images to RGB.

6) A bug was fixed in the macro interpreter that prevented array elements 
from being used as procedure parameters.

7) The Image Math command now accepts non-integer offsets when 
'Calibrate' is selected.

8) The Binary/Outline command in the Process menu now assumes a pixel 
is a border pixel if any of its eight neighbors is white. Previous versions 
assumed a pixel was a border pixel if any of four neighboring pixels were 

9) The DoOr, DoAnd, etc. macro commands now work correctly when the 
foreground color is not black (255).

10) The "Make Movie" command was enhanced. It now uses the Time 
Manager to provide better timing resolution. It supports video rate capture 
using the Scion LG-3's buffer memory. It uses a single dialog box to 
specify the number of frames and either the interval between frames or 
the sampling rate in frames per seconds. There is a time stamping option 
to display the elapsed time in the upper left hand corner of each frame. 
Triggering can be enabled for only the first frame or for every frame. 
There is an option to store captured frames in an existing stack instead of 
creating a new stack.

11) A "MakeMovie" macro command was added. It accepts three arguments.  
The first is a string containing some combination of "blind", "buffer", 
"time stamp", "existing",  "trigger first", "trigger each", and "dialog".  The 
second argument is the number of frames to capture, and the third is the 
interval between frames in seconds. The "Movie Making" macro file 
contains a sample macro that captures a movie and plots the frame to 
frame time intervals. It also contains a macro that uses the MakeMovie 
macro command to calculate the fastest average frame interval for each 
of 50 different frame sizes.

12) Two optional integer arguments were added to the "SetVideo" macro 
command. The first specifies the gain and the second the offset.

13) Image capture support was added for the Scion VG-5 frame grabber.

14) RGB stacks (and selections) are now saved as 24-bit TIFF files that 
can be opened by Photoshop. RGB stacks display "(Red)", "(Green)" and 
"(Blue)" in the title bar instead of "(1/3)", "(2/3)" and "(3/3)". RGB stacks 
are created by the "Capture Color", "Acquire", and "8-bit Color to RGB" 
commands. Use the "Stack Info" command to convert ordinary 3 slice 
stacks to RGB stacks.

14) RGB (24-bit) TIFF files now open faster.

15) The Options command in the Stacks menu was expanded and renamed 
"Stack Info". It can be used to set the stack type ("Volume", "Movie", "RGB 
Image" or "HSV Image"), slice spacing and frame interval.

16) The SetSaveAs macro command now accepts the argument 'RGB TIFF' 
for saving 3-slice stacks in RGB (24-bit) TIFF format.

17) The macro interpreter is now up to twice as fast. The "Slow Invert" 
macro in the "More Macros" macro file can be used to compare the speed of 
the interpreter on different Macs and different versions of NIH Image.

18) A new command, "Deselect", was added to the Edit menu for deleting 
the current selection.

19) The major and minor axis length and angle are now correctly 
calculated when the pixel aspect ration is not 1.0.

20) A bug was fixed in the Analyze Particles routine that caused particles 
to be incorrectly labeled if the the measurement counter was not reset.

21) The AnalyzeParticles macro command now accepts an optional string 
argument containing some combination of 'label', 'outline', 'ignore', 
'include' and 'reset'. Any option not listed is disabled. Use 
"AnalyzeParticles('dialog')" to display the Analyze Particles dialog box 
using the existing settings.

22) The Add, Subtract, Multiply and Divide commands in the Arithmetic 
sub-menu now have a "Calibrate" option. If this option is selected, 
calibrated pixel values are used and the output image is calibrated using a 
linear calibration function.

23) AND, OR and XOR commands were added to the Arithmetic sub-menu.

24) A bug was fixed that could sometimes cause NIH Image to crash when 
switching between a text window and an image window.

25) A macro command, 'SetProjection', was added to initialize values used 
by the Project command:

   SetProjection('string', n)
      where n is integer and 'string' is one of the following:
      'Initial Angle', 'Total Rotation', 'Rotation Angle Increment',
      'Surface Opacity', 'Surface Depth-Cueing',
      'Interior Depth-Cueing' {use SetDensitySlice to set
      the transparency bounds}

   SetProjection('string', b)
      where b is boolean (true or false) and 'string' is one of
      the following: 'Save Projections', 'Minimize Window Size'

      where 'string' is one of the following: 'X-Axis', 'Y-Axis',
      'Z-Axis', 'Nearest Point', 'Brightest Point', 'Mean Value'

The "Movie Making" macro file contains a sample macro demonstrating the 
use of SetProjection. The code and documentation for SetProjection were 
contributed by Norbert Vischer.

26) Analyze particles and the wand tool can now handle objects with 
perimeters up to twice as long.

27) Perimeters are now calculated using the algorithm used by versions of 
NIH Image prior to 1.53. This algorithm adds one to the perimeter for each 
edge pixel and the sqrt(2) for each corner pixel. It produces perimeters 2-
3% longer than the 3-point moving average algorithm used in V1.53-V1.57.

28) The SetPalette macro command now accepts an optional second 
integer argument that specifies the number (0-6) of reserved LUT entries.

29) A macro command, "GetHistogram", was added that updates the built-
in histogram array based on a specified rectangular ROI. It has the form  
"GetHistogram(left, top, width, height)", where left, top, width, and height 
specify the ROI used to generate the histogram. GetHistogram is much 
faster than using MakeROI and Measure, particularly for small ROI's.

30) A macro function, "Get('parameter')", was added that returns the value 
of various NIH Image parameters.

    Get('FreeMem') returns the total amount of free memory, in bytes.

    Get('MaxBlock') returns the size (in bytes) of the largest
    free memory block.

    Get('MaxMeasurements') returns the value of "Max Measurements".

    Get('RoiType') returns a code that specifies the current
    ROI type, where:
        0 = no ROI or no image, 1 = rectangle, 2 = ellipse,
        3 = polygon, 4 = freehand, 5=traced, 6 = straight line,
        7 = freehand line, and 8 = segmented line

    Get('UndoBufSize') returns the size (in bytes) of the
    Undo and Clipboard buffers.

V1.57 Release Notes (23 Jan 1995)

1) A bug was fixed that caused the Project command in V1.56 to fail when 
attempting to do mean value projection.

2)  A bug was fixed that caused the brush and eraser tools in V1.56 to be 
offset one pixel down and to the right.

3) A bug was fixed  that caused the Register command in the V1.56 (PPC 
version only) to fail.

4) A bug was fixed in the SetThreshold() macro command that prevented 
macros that continually adjusted the threshold under keyboard or mouse 
control from working correctly.

5) The Undo macro command now works with Paste.

6) Max Particles in the Analyze Particles dialog box can now be set to a 
value greater than 999,999.

7) A bug was fixed that sometimes caused color TIFF files to be written 
with a corrupted color table if the monitor was not in 256 color mode.

8) NIH Image now opens most uncompressed 24-bit (RGB) TIFF files. Like 
the Acquire and Capture Color commands, the images are loaded into a 3-
slice stack.

9) The DICOM import routine (new in V1.56) was improved. In addition to 
DICOM-3 images, it now reads many ACR/NEMA images. It now requires a 
DICOM dictionary to decode the DICOM or ACR/NEMA header. The dictionary 
is available from zippy.nimh.nih.gov, in the /pub/nih-image/documents 
directory. It must be located in the same folder as NIH Image or in the 
System folder. Hold the option key down to get a full dump of the DICOM 
header. Hold the shift key down to fix the 16-bit to 8-bit scaling when 
using the "Open All" option.

10) A bug was fixed that could sometimes cause NIH Image to crash on 
startup if sound was turned off in the Sound Control Panel.

V1.56 Release Notes (20 Dec 1994)

1) A bug was fixed that caused the SurfacePlot macro command to fail 
when generating grayscale/color surface plots.

2) A bug was fixed that sometimes caused diagonal lines to appear when 
using the Revert to Saved command with odd-width TIFF files created by 
programs other than NIH Image.

3) A bug was fixed that caused images imported with "Invert" checked to 
be inverted by the Revert to Saved command.

4) A bug in the "Gel Plotting Macros" was fixed that could cause incorrect 
results if the foreground color was not black (255).

5) The Capture Frames shutter click sound that was missing in V1.55 is 
back again.

6) A new macro package ("Markup Macros") was developed that enables 
objects in an image to be outlined and labeled and the resulting graphics 
and text saved as a separate file.

7) The "Halftone Options" command was removed from the File menu and 
the "Custom Grayscale Halftoning" check box was removed from the 
Preferences dialog box. The custom halftoning dialog box is now accessed 
by holding down the option key while selecting the Page Setup command.

8) A bug was fixed that sometimes caused a crash when using the 
"Uncalibrated OD" option in the Calibrate command.

9) NIH was ported to the PowerPC using the Metrowerks PPC Pascal 

10) A bug was fixed that caused the 'max' value returned by the 
GetPlotData macro routine to always be zero when all of the Y values 
where less than zero.

11) The spray can tool now works at slower speeds on faster macs.

12) Interactive editing of the Map (by holding the option key down) now 
works when the monitor is not in 256 color mode.

13) Images captured with with "Highlight Saturated Pixels" selected are 
now displayed correctly on monitors that are not in the 256 color mode.

14) Enhance Contrast now works correctly when the monitor is not in 256 
color mode.

15) The SaveState and RestoreState macro routines now save and restore 
text attributes such as type face, size and style.

16) Extra header data are no longer appended to the end of stacks exported 
as raw data.

17) A bug was fixed in the OpenSerial macro routine that caused even 
parity to always be used if seven data bits was specified.

18) The angle in the file names of projections saved to disk now have 
leading spaces so the file names sort correctly by name.

19) "Trace Edges", renamed "Find Edges", now implements a 3x3 Sobel edge 
detection operation.

20) The Shadow command now allows the user to specify the direction of 
the simulated light source. The Shadow macro command was modified to 
accept an optional string argument in the form Shadow(direction), where 
direction is equal to 'N', 'NE', 'E', 'SE', 'S', 'SW', 'W' or 'NW'.

21) A measurement bug was fixed that caused the standard deviation to be 
set to zero whenever the mean was less than zero.

22) A bug was fixed that caused the AutoOutline macro command to fail to 
save the XY coordinates if the wand tool was not selected.

23) The SetScale macro command now accepts an optional third argument 
that sets the pixel aspect ratio. Similarly, GetScale returns the pixel 
aspect ratio in an optional third argument.

24) The New and Duplicate commands no longer force the width of newly 
created images to be even.

25) The result argument in the ImageMath macro command can now be 
either a string or a pid number. If it's a string, a window with that name 
is created to store the result, otherwise the result is stored in the image 
specified by the pid number. Note that the result pid number can be the 
same as either of the source pid numbers.

26) Support was added for the Scion AG-5 frame grabber. All capabilities 
of the Scion LG-3 are available with the AG-5 except for digital and 
analog I/O. The Average Frames command supports the AG-5's ability to do 
video rate averaging and integration.

27) A check box ("Integrate On-chip") was added to the Average Frames 
dialog box.  This option allows the Scion LG-3 to control on-chip 
integration using the Cohu 4910 series cameras and modified versions of 
the Dage-MTI CCD72.  When this box is checked,  the camera will integrate 
on-chip for the specified number of frames; the LG-3 will then capture the 
integrated frame.  On-chip integration requires a special cable available 
from Scion for connecting the integration input of the camera to the LG-3.  
The string "on-chip" was added to the AverageFrames macro command.

28) Macros (in the "Video" macro file) were developed to continuously 
integrate and display frames either off-chip, using the Scion AG-5, or on-
clip, using the Scion LG-3 and a Coho 4910 series camera. Instructions for 
using these macro are in the macro file.

29) Density and spatial calibration defined by the Calibrate and Set Scale 
commands is now "stickier". Before, if you calibated an image and then 
closed that image, any new images created using the New command would 
be uncalibrated. Now, in the same situation, the new images will be 

30) A bug was fixed that caused inverted profile plots to be displayed 

31) A macro command was added for specifying what gets saved by the 
SaveAs command. It has the form SetSaveAs('mode'), where 'mode' is one 
of: 'TIFF', 'PICT', 'MacPaint', 'PICS', 'LUT' or 'Outline'.

32) The Image Math command now ignores selections. The arithmetic 
operation is performed in the upper left corner of each image using the 
largest common rectangle.

33) The settings file ("Image Prefs") is now saved in the Preferences 

34) Folder paths such as 'hd400:textfiles:text' can now be used with the 
SaveAs command when saving the contents of text windows.

35) The name of the macro routine for calling filter plug-ins was changed 
from 'Filter' to 'CallFilter'.

36) A new macro routine was added for using built-in filters. It has the 
form "Filter(name)", where name is one of the following: 'smooth', 'smooth 
more', 'sharpen', 'sharpen more', 'find edges' (or 'sobel'), 'median', 'max', 
'min' or 'dither'.

37) A new macro was added for doing density calibration. It has the form 
"Calibrate('fit', 'unit', m1, k1, m2, k2, ...)", where 'fit' is one of 'straight', 
'poly2', 'poly3', 'poly4', 'exp', 'power', 'log', 'rodbard', 'uncalibrated' or 
'uncalibrated od', 'unit' is the unit of measurement, m1, m2, etc. are the 
measured values and k1, k2, etc. are the known values. For example, 
"Calibrate('Straight', 'Invert', 0, 255, 255, 0)" sets up a simple inverting 
function. Use "Calibrate('Uncalibrated OD')" to enable uncalibrated OD and 
"Calibrate('Uncalibrated')" to disable calibration.

38) The Make Montage command now optionally draws borders. The width 
of the borders can be varied by clicking on the lines at the bottom of the 
Tools window.

39) The Import command now as an option to import files in the DICOM 
(Digital Imaging and Communications in Medicine) format used in 

40) The Image Math command can now perform arithmetic operations on 
density calibrated images and produce a density calibrated result. For 
example, adding two imported 16-bit MRI images with calibrated pixels 
values in the range 0-1000 now results in an image with calibrated pixel 
values in the range 0-2000. Previous versions of Image Math ignored 
density calibration and always operated on the raw 8-bit pixels.

41) The "Copy Function to LUT" checkbox was removed from the Calibrate 
dialog box and a macro that performs this function was added to the "LUT 
Macros" macro file.

42) The wand tool,  when used to outline rectangular objects,  now creates 
selections that the Save As command recognizes as rectangular.

43) The "Invert Pixel Values" checkbox in Preferences now applies to all 
open images not just the currently active image.

44) A macro routine, CallExport('name'), was added for calling export 

45) A bug was fixed that sometimes caused NIH Image to hang when using 
Analyze Particles on an image with one or more very large particles.

46) The Measure command now sets the major and minor axes lengths to 
zero for spatially calibrated images with a pixel aspect ration not equal 
to one. In previous versions, the major and minor axes lengths were 
incorrect if the pixel aspect ratio was not one.

47) The "MCID" option was removed from the Import dialog box and a macro 
for importing MCID files was added to the "Input/Output" macro file.

48) The Select All and Show Clipboard commands now work with text 

49) A boolean function was added to the macro language for checking the 
state of keyboard modifier keys. It has the form "KeyDown(key)", where 
key is one of the following: 'option', 'shift', or 'control'. It returns TRUE if 
the specified key is down.

V1.55 Release Notes (3 May 1994)

1) The PasteLive macro command now works with Paste Control.

2) The Find command will now move the cursor to a specified line in a text 
window if you enter a search string in the form ‘#n’, where n in a line 
number. As an example, to go to line 100, enter ‘#100’.

3) Load Macros error messages now display the line in the macro file that 
caused the error.

4) Routines were added to the macro language for getting the length of a 
string and for deleting a substring of specified length. The length function 
(“i:=Length(str)”) returns the length of str. The delete procedure ( 
“Delete(str,index,count)”) removes count characters from str, beginning 
at index.

5) A bug (introduced in v1.54) was fixed that could sometimes cause 
images uncalibrated in the Set Scale dialog box and saved to revert to 
being calibrated (to pixels) when reopened.

6) A bug was fixed that caused the macro interpreter to fail to skip over 
string assignments used in IF or IF THEN ELSE statements.

7) The LUT tool now moves one level wide density slices if you click 
directly on them in the LUT window.

8) A bug was fixed that sometimes caused Plot Profile and Reslice to not 
work correctly for line selections extending past the image boundary.

9) A new macro command was added that returns the current spatial scale. 
It has the form “GetScale(scale,unit)”, where scale (real) is the number of 
pixels per unit and unit (a string variable) is the measurement unit. For 
uncalibrated images, scale is set to 1 and unit to ‘pixel’.

10) There is now a macro command (“AutoOutline(x,y)”) that is equivalent 
to clicking with the wand tool at location (x,y). The outline was 
successfully created if GetRoi returns a width greater than zero.

11) The Dither command no longer ignores pixels along the edge of the 

12) The SaveAs and Export macro commands now accept full path names. 
For example, to save the current image in the folder “Images” on the disk 
named “hd400” use SaveAs(‘hd400:images:myimage’).	

13) A bug was fixed that caused all the slices except the first to be 
inverted when importing multi-slice 16-bit images.

14) The Open command now recognizes and opens imported TIFF files of 
type ‘TEXT’. Hold down the option key to display the first 32K of the file 
as ASCII text.

15) The Cancel button in the Rotate Left and Rotate Right dialog box now 

16) A bug was fixed that caused the “24-bit to 8-bit Color” command to 
fail with images wider than 2047 pixels.

17) NIH Image now works on grayscale Powerbooks. In fact, it runs with 
the monitor set to anything from “Black & White” to “Millions”. For best 
performance, however, 256 colors (or grays) should be used whenever 

18) The Save Screen command was removed from the File Menu. Use 
System 7’s built-in screen dump FKEY (command-shift-3) instead.

19) A bug was fixed that sometimes caused calibrated density values to 
be incorrect for images opened and processed using a macro.

20) A bug was fixed that sometimes caused “Plug-in Digitizer”, and 
possibly other acquisition plug-ins, to generate blank images when 
memory was low.

21) A bug was fixed that sometimes caused enlarged and misplaced text to 
be displayed in the Image Math dialog box.

22) A new command (Register) was added to the Stacks menu that will 
translate and rotate the slices in a stack into alignment based on fiducial 
points. It was written by Michael Castle (mike.castle@med.umich.edu) of 
the University of Michigan Mental Health Research Institute (MHRI). An 
example stack and set of fiducial points ("RegistrationExample.bin") are 
available by anonymous FTP from zippy.nimh.nih.gov in the /pub/nih-
image/stacks directory.

23) The Scale and Rotate command now rotates images up to ten times 

24) The "Values" window was renamed "Info".

25) The maximum stack size was increased from 256 to 1000 slices.

26) A new option was added to the Surface Plot command to create 
grayscale or color 3D surface plots similar to the default "wireframe" 
plots except that the active color LUT is applied to the z-axis of the plot.  
The code for doing this was contributed by Norbert Vischer 

27) A bug was fixed that could a crash when attempting to open a window 
and not enough memory was available. Crashes were most likely to occur 
when using the "Modern Memory Manager" available on PowerPC Macs.

28) A bug was fixed that sometimes caused stacks to be partially opened 
without an error message being displayed.

V1.54 (1 Feb 1994)

1) A bug was fixed that could cause the Import macro command to fail 
when using the “Import All” mode if Import had been previously called in 
the macro.

2) The Set Scale command now allows the user to enter an arbitrary unit 
of measurement.

3) A plug-in (“Plug-in Digitizer”), written by Cyrus Daboo of Cambridge 
University, now allows NIH Image to grab images using the frame grabber 
built into the AV Macs or from any other Quicktime compatible digitiser 
with a 'vdig' component. It is available as a binhexed. self-extracting 
archive by anonymous FTP from zippy.nimh.nih.gov, in the /pub/nih-
image/plug-ins directory. The archive also includes a report on the AV 
digitizer that points out some its flaws, such as automatic gain control 
that can't be disabled. It also includes Apple's “AV Digitizer Options” 
extension that allows the user to switch the AV digitizer into grayscale 
mode, which greatly improves the quality of images captured using 
grayscale cameras. 

4) A bug (new in V1.53) was fixed that caused perimeter and freehand 
length measurements to be incorrect for spatially calibrated images.


1) A command (Project) was added to the macro language for doing 
projections. The Project dialog box is displayed only one time (the first 
time Project is called) within a macro.

2) A string function (WindowTitle) that returns the title of the active 
window was added to the macro language.

3) A bug was fixed that caused Image to display an invalid error message 
when attempting to open 16-bit TIFF files with contiguous strips.

4) A bug was fixed that could sometimes cause Image to crash when 
printing, particularly when using a macro.

5) A bug was fixed that caused Image to fail to open some TIFF files 
created by “little-endian” systems such as the IBM PC.

6) A bug was fixed that caused the Reslice command to fail when the slice 
spacing was less than one.

7) The NewTextWindow macro command now accepts optional arguments 
for specifying the text window size and the Dispose macro command now 
works with text windows. These changes make it easy to write macros 
that do inline convolutions,  for example,

  macro 'Sharpen [F]';
     NewTextWindow('3x3 sharpen',120,120);
     writeln('-1 -1 -1');
     writeln('-1  9 -1');
     writeln('-1 -1 -1');

8) A bug was fixed that caused the Plot Profile command to work 
incorrectly when using a line selection transferred to another image using 
the Restore Selection command.

9) A bug was fixed that sometimes caused Image to hang when using the 
wand tool with black backgrounds.

10) The Preferences command can now be used to specify the four 
character creator code Image uses for exported text files. This code 
determines which application is launched when you double-click on an 
exported text file (e.g., measurements, profile plot data, XY coordinates). 
Use ‘Imag’ for Image, ‘XCEL’ for Excel and ‘QKPT’ for KaleidaGraph.

11) A new command named “Image Math” was added to the Enhance menu 
for performing arithmetic and logical operations between two images. The 
corresponding macro command has the form “ImageMath(‘op’, pic1, pic2, 
scale, offset, ’ Result’)”. The ‘op’ string should be set to ‘add’, ‘sub’, ‘mul’, 
‘div’, ‘and’, ‘or’, ‘xor’, ‘min’, ‘max’ or ‘copy’. Pic1 and pic2 are pic numbers 
or pid numbers. For each pixel in the selection, the specified operation is 
performed, the result is multiplied by ‘scale’ and then ‘offset’ is added.   
‘Result’ is the name used for the window created to store the results. For 
example, to average two images you could use the command: 
ImageMath(‘add’, 1, 2, 0.5, 0, ‘Average’).

12) When using acquisition plug-ins, Image now uses the window name 
specified by the plug-in instead of always using ‘Untitled’.

13) A bug was fixed that caused the Results window to sometimes not be 
correctly updated when using overlapping windows.

14) The MoveWindow macro command now works with text windows.

15) The SetThresold and AutoThresold macro commands no longer cause 
the LUT tool to be selected.

16) Image now displays the PrintDialog box when images are selected and 
printed using the Finder’s Print command.

17) The macro interpreter is now more likely to correctly handle nested 
IF, FOR, WHILE and REPEAT statements without the need to use BEGIN-END 
brackets. The interpreter also now requires semicolons between 

18) A bug was fixed that caused plug-ins with ‘(‘, ‘/’ or ‘;’ in their names 
to not be listed correctly in the appropriate plug-in submenu.

19) A new command (PasteLive) was added to the macro language that 
does a “Live” paste into a selection in a window other than the Camera 
window. This new command is useful for making montages of different 
focal planes of fluorescent specimens. Use the “Paste Averaged” macro 
command in “Video” to do frame averaging of the selection.

20) Image now does a 3-point running average of the XY coordinates to 
more accurately estimate perimeters of freehand selections and lengths 
of freehand line selections. Measured freehand perimeters and lengths are 
now about 10% lower than before. Perimeters reported by Analyze 
Particles and the wand tool are now slightly lower (2-3%) than those 
reported by previous versions of Image since they are calculated using 
this new smoothing routine.

21) A bug was fixed that caused text in text windows to be displayed 
larger than expected.

22) The Average Frames command now allows you to specify the min and 
max values that control how integrated images are linearly scaled from 
16-bits to 8-bits. The actual 16-bit min and max are always displayed in 
the Values menu. There is also a new option that creates a calibration 
function for displaying approximations of the integrated 16-bit values.

23) A Boolean function (PidExists) was added to the macro language for 
testing the validity of PidNumbers.

24) The “Invert LUT”, “Set Number of Colors” and “Set  Extra Colors” 
commands in the Options menu were combined into a single command 
called “Lut Options...”.

25) The Analyze Particles command now displays a dialog box with 
particle analysis options that were previously in the Options dialog box. 
You can bypass this dialog box by holding down the option key or by using 
the AnalyzeParticles macro command.

26) A bug was fixed that could cause profile plots of rectangular 
selections in density calibrated images to be incorrect.

27) A command was added to the macro language for making profile plot 
data available to macro routines. It has the form 
“GetPlotData(count,ppv,min,max)”, where count is the number of values, 
ppv is the number of pixels averaged for each value, and min and max are 
the minimum and maximum values. The plot data values are returned in a 
built-in real array named PlotData, which uses indexes in the range 0-
4095. The macro “Plot Profile” in “Plotting Macros” illustrates how to 
use GetPlotData and PlotData.

28) The Gel Plotting macros now work with vertical lanes, no longer 
require all other windows be closed, do a better job of scaling the lane 
plots, and report results in calibrated units such as integrated OD.

29) The SaveAs macro command will now save the contents of text 

30) The Save, SaveAs, Close and Dispose macro commands no longer 
require an image be open to work with text windows.

31) The Close macro command now works with the Plot, Histogram, 
Results, and Video Control windows.

32) The “Import FITS” macro in “Input/Output Macros” now imports both 8 
and 16-bit FITS images. It also correctly handles FITS files with headers 
longer than 36 lines. There is also a new macro for displaying FITS 

33) A new string search function was added to the macro language. It has 
the form “index:=pos(substr,str)”. It searches for ‘substr’ within ‘str’ and 
returns an integer that is the index of the first character of substr within 
str, or zero if ‘substr’ is not found.

34) Area and line selection can now be created  more precisely on 
magnified images.

V1.52 (9 September 1993)

1) A bug was fixed that could cause Image to crash when opening text 
files with names containing a semicolon.

2) A bug was fixed that caused plug-in filters to not work correctly with 
rectangular selections.

3) Images are now marked as changed when you use a plug-in filter.

4) A bug was fixed that would sometimes cause the Windows menu to 
become messed up when one or more text windows were open.

5) The window title bar is now correctly updated after a TIFF file has 
been saved using a new name.

6) The Reduce Noise filter is now four times faster due to some in-line 
68000 code contributed by Edward J. Huff at the NYU Chemistry 

7) A bug was fixed that prevented filter plug-ins from remembering their 
settings between calls. You can now also pass the string ‘Reset’ to the 
Filter macro routine (e.g., Filter(‘Reset’)) to force the next filter called to 
use its default settings and to display its dialog box, if any.

8) A macro (“Make Expression Movie” in the file “Animation”) was written 
for generating movies using the Expression plug-in filter. Expression is a 
freeware program written by Jim Bumgardner (jbum@aol.com) that 
creates images that change over time according to a mathematical 
formula. Expression 3.0b, available in the plug-ins directory on 
zippy.nimh.nih.gov, is required for use with NIH Image.

9) A bug was fixed that prevented selection of the right column or  bottom 
row when using the rectangle selection tool.

10) Thanks to Edward J. Huff, text files created by NIH Image (e.g., macros 
and convolution kernels) now have a custom icon.

11 A command (SortPalette) that sorts the current look-up table by hue 
was added to the macro language.

12) PidNumber, a new macro function, was added to the macro language. It 
returns a negative permanent ID number for the current image.  SelectPic 
and ChoosePic were modified to accept these negative values and find the 
current picNumber automatically if presented with a pid value rather than 
a picNumber value. A macro package (“PidNumbers Demo”) demonstrates 
the various ways that images can be selected in the macro language. The 
PidNumber modifications and demo macros were contributed by Edward J. 

13) The line spacing in text windows is now changed when the font size is 

14) Text windows now handle update events correctly.

15) Plug-ins in the system folder in a folder named Plug-ins are now 
found if image is on a different volume than the the system folder.

16) The standard versions of NIH Image no longer requires a floating-point 
coprocessor (FPU). This change was made because there is no noticible 
performance difference between the FPU and non-FPU version of Image and 
becuase the LCIII and Centris 610, the most popular new Macs, do not have 
FPUs. This change also anticipates PowerPC based Macs which will not 
support emulation of 68000 programs that directly use the FPU.

V1.51 (2 August 1993)

1) A bug (introduced in 1.50) was fixed that prevented histogram and plot 
values from being pasted into spreadsheet programs and other programs 
that work with text on the Clipboard.

V1.50 (29 July 1993)

1) A new submenu (Acquire) was added to the File menu for using 
Photoshop compatible acquisition plug-ins. The plug-ins must be stored in 
a folder named “Plug-ins” located either in the same folder as Image or in 
the System Folder.  Using plug-ins, Image can acquire 8-bit grayscale, 8-
bit indexed color, and 24-bit color images. 24-bit color images are stored 
in three slice stacks and displayed using 8-bit indexed color, similar to 
the way the Capture
Color command works.

The following plug-ins have been reported to work:

Agfa Arcus Scanner
Agfa PhotoScan 
Computer Eyes /RT Pro
Datacopy 730GS scanner
	Ektron 1400 series camera (Eikonix 4096x4096 CCD)
Gaphics Unlimited Kingfisher frame grabber (grayscale only)
Howtek II slide scanner
LaCie SilverScanner (8-bit grayscale, 8-bit color, 24-bit color)
Kodak DCS-200 digital camera (grayscale and 24-bit color)
Kodak Photo CD Image Browser
Kodak RFS2035 scanner
Microtek Scanmaker
MirrorScan 600 Plus
Neotech Image Grabber
Perceptics PixelBuffer frame grabber
Perceptics MegaGrabber frame grabber
Perceptics PixelHR-24 frame grabber
Plug-in Digitizer (supports AV Macs and other QuickTime digitizers)
QuickImage 24 plug-in
Radius VideoVision video grabber
RasterOps Video Capture V1.3 with 24XLTV card
Scantastic plug-in with Apple Color One scanner
Scion LG-3 frame grabber
Truvel scanner
Voyager decompression plug-in

The LaCie Silver scanner plug-in seems to be the fastest, smoothest and 
most reliable of the scanner plug-ins tested. 

A command was also added to the macro language for supporting 
acquisition plug-ins. It has the form Acquire('plug-in name'). Plug-ins are 
assumed to reside in a folder named “Plug-ins” located in the same folder 
as Image or in the System Folder. Full path names such as 'HD400:Plug-
ins:Kodak DCS-200' are also supported.

The plug-in support in NIH Image is based on code written by Greg Brown, 
Steven Gonzalo and Richard Ohlendorf of Ohlendorf Research, Inc. 
Ohlendorf Research has customized both Image and the Kodak DCS-100 
digital camera plug-in to automate uploading of images from the camera.

Ohlendorf Research, Inc.
818 LaSalle Street
Ottawa, IL 61350

2) Several problems with commands in the Binary submenu were fixed. 
These problems occurred when processing objects along the edge of the 
image. A related problem was fixed that sometimes caused the 
Skeletonize routine to never complete.

3) A function (UndoBufferSize) was added to the macro language that 
returns the current size of the Undo and Clipboard buffers. The Gel 
Plotting Macros use this function to display an error message when the 
Plots window needs to be larger than the current buffer size.

4) The Import command can now import 3D data sets such as multi-slice 
files from medical scanners. An optional fourth argument was also added 
to the SetCustom macro command to allow the number of slices to be 
specified. For example, when importing a data set with 128 256x256 
slices and no header, use “SetCustom(256,256,0,128)”.

5) If opened by the OpenSerial macro command, the serial I/O port is now 
closed when you quit image.

6) A four element built-in array (Scion) was added to the macro language 
to allow access to the Scion LG-3's I/O registers. The four elements of the 
array are defined as follows:

Scion[1]      8-bit DAC(A)              read/write
Scion[2]      8-bit DAC(B)              read/write
Scion[3]      8-bit Control Reg 1    read only
Scion[4]      4 digital out bits       read/write

Macros for setting and reading the LG-3 I/O registers are available in the 
file “Video”.

7) Support was added for the external trigger feature of the Scion LG-3.

8) A new submenu (Filter) was added to the Enhance menu for using 
Photoshop compatible filter plug-ins. The plug-ins must be stored in a 
folder named “Plug-ins” located either in the same folder as Image or in 
the System Folder. A command was also added to the macro language for 
using filter plug-ins. It has the form Filter('plug-in name'). Plug-ins are 
assumed to reside in the aforementioned Plug-ins folder.

9) A command was added to the macro language for enabling and disabling 
“Photo Mode”. The command “PhotoMode(true)” erases the screen and 
draws the contents of the currently active window. “PhotoMode(false)” 
restores the screen.

10) A bug (introduced in V1.49) in the macro interpreter was fixed that 
caused it to fail if the first argument in a procedure call started with a 
minus sign or a left parenthesis (e.g., “(a+b)/c”). This bug also affected 
macro commands, such as PutMessage, PutSerial and Write, that accept a 
variable number of arguments.

11)  When using the “Highlight Saturated Pixels” option, the color used to 
display under saturated pixels is now yellow instead of blue.

12) Image can now open and edit text files up to 32K in size. The following 
commands know how to deal with text windows: New, Open, Close, Save, 
Save As, Print, Cut, Copy, Paste, Clear, Font, Size, Load Macros (loads the 
macros contained in the current text window).

13) Images larger than printer page (normally 552 x 730 pixels) are now 
scaled to fit the page. This feature is only available when “Custom 
Grayscale Halftoning” is disabled.

14) A command (SurfacePlot) was added to the macro language for 
generating surface plots. A macro for generating a surface plot movie 
from a stack is in the macro file “Stacks2”.

15) A macro command was added for doing 24-bit to 8-bit color 
conversion. It has the form “RGBToIndexed(str)”, where str contains some 
combination of 'System LUT', 'Existing LUT, 'Custom LUT' and 'Dither'. 
Custom LUT and Dither are the defaults. The macro file “Color” contains a 
macro for doing a color merge of two stacks.

16) 16-bit TIFF files can now be imported. After the file has been 
imported, use the Rescale (aka Revert to Saved) command to find the 
optimum 16-bit to 8-bit mapping. Files that represent white as zero open 

17) The AverageFrames macro command now optionally accepts two 
arguments. The first is a string containing some combination of 'Average', 
'Integrate' and 'Video Rate Capture', and the second is the number of 
frames to average or integrate. For example, to integrate 128 frames, you 
would use the command AverageFrames('Integrate',128).

18) A bug was fixed that caused the X and Y coordinates of the center of 
the best fitting ellipse (X-Y Center) to always be integers.

19) A bug was fixed that caused the creation of freehand or segmented 
line selections to fail if density slicing was enabled.

20) A bug was fixed that caused a pasted image in a second window to 
disappear when using the Start Capturing command.

21) A bug was fixed that could sometimes cause the tools in the Tool 
window to be displayed incorrectly.

22) A command (“SelectWindow('Title')”) was added to the macro language 
for selecting windows my name.

23) A command (“NewTextWindow('Title')”) was added to the macro 
language for opening a new text window. In addition, the Writeln macro 
routine was updated so that it now displays text in the currently active 
text window.

24) A command (CaptureColor) was added to t