# Notes for vimt

## Design decisions:

#### vimt should not provide trivial wrapper functions for vil.

vimt should only provide a re-implementation of a vil image processing function, if the vimt version modifies the transform. This includes operations like crop, sub-sample. Functions like pixel-scaling operate only on the image part of vimt and so do not need to be in vimt. Decision IMS and TFC.

#### `vimt_image` should be not provide access to image size, etc.

So far we cannot find a case where the interrogation of an image's size cannot be deferred until you also know its pixel type, etc. At this point you can dereference the concrete image and ask it for the size.

#### vimt should not link against a 3d library.

This has various implications such as a need a separate and small vimt3d library. However, many people who want 2d registered images do not need 3d. (The opposite does not apply Users of 3d images will almost certainly want 2d ones as well.) Decision TFC.

#### `vimt_transform` should provide full support up to projective only.

Linear transforms up to projective have nice properties such as being able to invert them, etc. If you want support for more general transforms, then you can derive another type from `vimt_image` that uses the old `vil1_warp.` Decision IMS and TFC.