ANIMAL (image processing)

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. The new implementation is free and is used in a recent book to illustrate the use of template matching techniques in computer vision (see the preface of the book code companion).