ANIMAL (first implementation: 1988 - revised: 2004) is an interactive environment for image processing that is oriented toward the rapid prototyping, testing, and modification of algorithms. To create ANIMAL (AN IMage ALgebra), XLISP of David Betz was extended with some new types: sockets, arrays, images, masks, and drawables.
The theoretical framework and the implementation of the working environment is described in the paper "ANIMAL: AN IMage ALgebra".
In the theoretical framework of ANIMAL a digital image is a boundless matrix with its history. However, in the implementation it is bounded by a rectangular region in the discrete plane and the elements outside the region have a constant value. The size and position of the region in the plane (focus) is defined by the coordinates of the rectangle. In this way all the pixels, including those on the border, have the same number of neighbors (useful in local operators, such as digital filters). Furthermore, pixelwise commutative operations remain commutative on image level, independently on focus (size and position of the rectangular regions). The history is a list which tracks the operations and parameters applied to the matrix. This mechanism is useful to document algorithms and generate new functions.
ANIMAL has been ported to R, a freely available language and environment for statistical computing and graphics.
Properties
ANIMAL offers the following key properties for image processing:
- Interactive environment facilitating rapid prototyping, testing, and modification of algorithms.
- Extends XLISP with new types including sockets, arrays, images, masks, and drawables.
- Defines images as bounded matrices with a history, facilitating algorithm documentation and function generation.
- Implements image processing operations within rectangular regions, ensuring consistent pixel neighborhoods and commutative operations.
- Ported to R, enabling its use in statistical computing and graphics.
References
- R. Brunelli and C. M. Modena, "ANIMAL: AN IMage ALgebra", High Frequency, 1989, LVIII:3:255-259