The image calculator Imcalc Tool is designed to be used as a rapid general purpose image processing algorithm development tool. The interface duplicates the functionality of a common calculator but with data manipulations applied to images rather than single values. It is based around the data processing concept called a stack. In this case this is the central data storage and retieval mechanism for exchanging data between the various tools within TINA, which is a last-in, first-out list of data. Most tools within TINA have the facility to push and pop data on and off the stack, and therefore also pass data in and out of the image calculator. Image calculator processes always operate on the top of the stack (TOS) and sometimes also the next on stack (NOS) data. The images involved are always deleted and results are placed back on the TOS. This mechanism prevents the uncontrolled growth of the stack but requires explicit duplication of any data which is needed again for later stages of processing. Any computational algorithm can be constructed this way but it is sometimes found quite awkward as it requires good foresight. For this reason an extra data register is provided for storage of intermediate results.
The tool's main use is for algorithm evaluation but it also has uses for general purpose data manipulation, pre-processing and display. This functionality is extended when used in conjunction with the macro facility available within TINA which makes it possible to interactively develop and reuse complex image processing algorithms. Though image processing texts contain a multitude of algorithms, algorithms are only included here which have demonstrated useful capabilities during the course of our research. In particular functions have been selected on the basis of providing components in computationally stable algorithms. Such stability can be assessed either by using the technique of error propagation or by Monte-Carlo. Algorithm stability can generally be ensured by demanding that intermediate images have the property of uniform random errors. This tool supports the generation of noise and simple test images in order to perform Monte-Carlo testing. It can also perform noise estimation and the use of scatter plots allows the investigation of data correlation.
The tool has 4 Tv tools associated with it imcalc, imcalc2, register, and graph for stack and memory displays and graphical output such as profiles and histograms. The required subset of these should be installed before image processing.
The calculator supports several image types; unsigned char, integer, floating point, double precision and complex. The functions decribed below will cast image types according to the minimum requirment for numerical stability but users must bear in mind their required data storage format and its limitations on file output (eg: quantization and truncation). Explicit casting between image types can also be achieved by use of the image type selection menu. This menu displays the resulting image type after all data manipulations and image creation processes. Selecting the appropriate image type will force the image to that storage representation. False binary (actually stored as unsigned char) and pointer types are also indicated. Casting to a type ptr (pointer) will define feature data structures for all pixels with data values greater than IP(thresh) and less than no more than IP(connect) of its neighbours. These structures can then be passed to other tools for continued processing. This is useful for testing out new feature detection algorithms. Casting to "int" will force a 16 bit representation, though internal calculations resulting in "int" will be 32 bit.
At any time the variables defining the current image can be displayed via the Image Info button.
The most recent stack manipulation can be reversed by use of the Undo facility.
A range of simulated images can be generated in the Create Tool sub tool for purposes of algorithmic evaluation (see below).