Tina provides a hierarchy of image processing, display and interactive manipulation modules specifically designed for the recovery and representation of the 2D and 3D geometrical primitives required for the development and evaluation of computer vision systems. Beneath this is an extensive mathematics library for the manipulation of image and geometric data structures.
Clearly, graphical interaction is an important component in the rapid development of vision software and reuse of previously developed algorithms is crucial in the evaluation and development of new techniques. For this reason, care has been taken to separate functions into two libraries (tina-tools and tina-libs) of 3 basic types.
The hierarchy is actually in a different order, as follows:
such that high level tools can be written in a way that the specific (window system specific) widgets and graphics libraries can be interchanged. The intention here is to minimise reliance on any one windowing system. Isolating window system specific code allows rapid reimplementation with different user interface. This should also simplify the development of versions of Tina for various different window systems, and allow rapid migration to new windowing environments as existing ones inevitably become outdated. This is particularly important for low level graphical display where the cost of conversion is very high. The Tvtool (Tina View Tool) device allows the concentration of all window system specific graphics into a few hundred lines of code ("screen" functions). Similarly the Tw (TinaWindows) tool prototyping libraries provide a generic subset of standard interactive tools with appropriate callback functions. Equally important, ensuring that all the low level software libraries (where all the real work is done) call no graphics routines at all, allows applications to be written that have no requirement for interactive graphical displays.
The consequence of these decisions is that we can provide only a subset of the functionality available within any one window system such that it can be implimented (and maintained) in all others. This combined with the need to be able to geneate largely equivalent interfaces across platforms results in a relatively simplistic interface design which does not necessarily exploit all of the available ergonomic features and does not have the slickness of commercial packages.
The Tina Application Program refers to the top level tinaTool program usually called tinaTool.c. This is a user refinable version of a standard tinaTool interface. It is responsible for handling command line arguments (for example in X based systems it passes on the standard X arguments), generating new Tvtool display tools, displaying diagnostics, instantiating other Tina Interface Tools (see the tinaTool user guide for more details of the functionality of the tinaTool program and other modules in the Tina interface). The user may, if so desired, create a completely different top level program and still utilise other aspects of the Tina system. The TinaWindows tool prototyping libraries have been designed to make such a process rapid. The resulting tools don't always look elegant 3.1. but they provide the required level of functionality for a minimum of programming effort, and of course anyone who really wants a pretty interface can always call the relavant system graphics routines directly if he wishes (if they really want to spend time reading graphics display manuals and shuffling buttons around).
The Tina Interface Tools are responsible for managing resources in the Tina Infrastructure and controlling the application of various Tina processing modules. The interface tools are responsible for handling input from the keyboard and the mouse as well as directing graphics to Tvtool display devices and handling input from them. Separating the interface tools from the infrastructure has the effect of making simple and obvious the available resources and mimising dependence upon the graphical user interface. It is possible, for instance, to develop a command line driven version of tinaTool that utilised the infrastructure modules in the absence of the interface modules (see the Tcl libraries).
The infrastructure makes available a number of cliche resources and some high level routines for acting upon them (see the chapter on Programmer Graphics Support, below). For example the module "left" makes available routines for handling images, edges, poly strings, camera geometry and Tv virtual graphic output devices. The module "left" (in conjunction with the module right) is intended for use by applications performing various forms of stereo matching. This is not to say that other applications could not use different images/edges/etc for stereo matching and display them on different Tv's. In short infrastructure modules like "left" are provided for convenience.
The application program and graphics are but the tip of the iceberg, over 70% of the Tina exists at or below the image/geometry processing library level. This code is generic, independent of the user interface, and to a large extent reusable by the application programmer. The contents of the Tina libraries for image processing, model matching, maths and underlying list and image manipulations, etc, can be found in the Tina system documentation chapters. A fuller description of how to program with the Tv and Tvtool can be found in the chapter on Tina View programming .