DataScan: an extensible program for image analysis in Java. K.A. Ritley, M. Schlestein, H. Dosch.

PROGRAM SUMMARY
Title of program: DataScan
Catalogue identifier: ADOB
Ref. in CPC: 137(2001)300
Distribution format: zip file
Operating system: Windows95/98/NT, Tru64 Unix (v.4.0F)
High speed store required: 2MK words
Number of bits in a word: 8
Number of lines in distributed program, including test data, etc: 65256
Keywords: Image analysis, Linescans, Convolution, Filtering, Scanning probe microscopy, Atomic force microscopy, Scanning tunneling microscopy, X-ray/neutron diffraction, Graphical user interface, Java, Graphics.
Programming language used: Java
Computer: PC 266MHz Pentium-II .

Nature of physical problem:
DataScan provides a graphical user interface for performing image analysis tasks and mathematical/logical operations on large (typically 500 x 500 or 1000 x 1000) arrays of double precision numbers. It includes basic image analysis tasks, sequential processing of hundreds images, plus suites of routines useful for data reduction in X-ray/neutron diffraction and scanning probe microscopy. New routines may be easily included by the user.

Method of solution:
The internal program section which defines the graphical user interface (GUI) is clearly separated from program section which performs image analysis tasks, to simplify adding new computational extensions to the program. The use of the Java programming language ensures portability between all operating systems and computers which offer a Java Virtual Machine (JVM).

Restrictions:
The number of images which can be loaded depends on available machine memory, typically 8 bytes per pixel.

Typical running time:
Execution times vary upon desired image processing tasks and size of the image. A linescan requires less than 1 s for computation. Convolution of a 1000 x 1000 pixel image requires about 1 s on a typical PC with 266 MHz Pentium-II processor.

Unusual features:
The program is self-contained and portable. The image analysis features are incorporated whenever possible in a library of independent, standalone subroutines, so they may be re-used in other programs and applications.