V1.54 Release Notes (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.




V1.53 Release Notes
-------------------

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]';
  begin
     NewTextWindow('3x3 sharpen',120,120);
     writeln('-1 -1 -1');
     writeln('-1  9 -1');
     writeln('-1 -1 -1');
     Convolve('');
     Dispose;
  end;

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 
statements.

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 
windows.

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 
headers.

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 Release Notes (9 Sep 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 
Department.

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. 
Huff.

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

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 Release Notes (2 Aug 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 Release Notes (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
815-434-5622
Applelink--Abraham@AppleLink.com


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 
inverted.

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.

