tina [about] [news] [software] [demos] [projects] [docs] [images] [faq] [people] [teaching] [tina4] [tina5] [WIKI] [KNOPPIX
faq

TINA FAQ (Frequently Asked Questions)

This FAQ is designed to help you understand, install and use TINA our vision algorithm development libraries. It is constantly being extending and expanded (well, when I have the time). If you have a question regarding TINA which you would like including in this FAQ then contact me.


Questions

Click on the question to see its answer.

General

When was TINA written?

Who wrote TINA?

What does TINA stand for?

What source code control does Tina use?

What are the different versions of TINA?

Why isn't TINA written in C++?

Why isn't TINA developed under a Microsoft OS such as NT?

How much effort went into writing TINA and why is the software open source?

What is the legal position on TINA?

Can I use TINA for teaching?

Can I get a course on using TINA for research?


Compiling and Installing

I can't download the software!

I have downloaded it but now what do I do?

Why won't my copy of TINA compile?


Problems running TINA

How do I know the software really works?

Why does the code sometimes crash?

Why don't the replays always regenerate the user interface properly?

Why doesn't my replay macro work anymore?


Questions about TINA functionality

Who is TINA intended for?

What can I use TINA for?

Why doesn't TINA perform any colour processing?

Does Tina contain character recognition, face recognition or fingerprint recognition?

Why is the interface so complicated?

Why should the TINA algorithms be any better than anyone else's?

Why aren't the 3D medical image analysis routines written with a 3D memory model?

Why are there no explicit 3D image processing functions?

How do I get my image data into TINA?

Do you have support for large images?

Why are there some duplicated functions in the libraries?

Why are some of the algorithms mentioned in the documentation missing from the libraries?


Future Development

Will you be moving to JAVA?

How long will TINA be supported?

Can I contribute something to the TINA libraries?

Questions and Answers

General


When was TINA written?

Development of the X11 based versions of Tina started in 1987 at AIVRU in the University of Sheffield. It was designed using experience gained in two previous versions with an aim to minimise the process of software maintenance and maximise reuse. Later versions of TINA were developed there and at the Electronic Systems group. It is still under development but is currently maintained at the University of Manchester. Old versions of libraries are still to be found at our previous web sites.



Who wrote TINA?

Tina was developed during various machine vision research projects as an infrastructure for research coordination, funded by a variety of different organisations. It was originally conceived by Stephen Pollard as a library to integrate the functions necessary for stereo based 3D machine vision. John Porrill sorted out most of the maths libraries and the graphics. Neil Thacker (NAT) debugged a lot of the software, recommended style changes to improve flexibility and added additional algorithms with the aim of creating a more generally useful vision research support tool. Since this team broke up, NAT has overseen the process of integrating software from the other contributors (see documentation) as it is deemed appropriate. The sotware is now maintained by Paul Bromiley and NAT.



What does TINA stand for?

Perhaps: "TINA Is No Acronym", or "There Is No Alternative". The truth is lost in the mists of time, but it definitely doesn't stand for "Thacker Is Not Acceptable" or "TINA Is Nearly Accurate".



What source code control does Tina use?

Since the inception of Tina 5, source code control is achieved using CVS. Anonymous access to the CVS repository is available for external users to download the code (see the developer's site). Write access to the repository is available only to the core group programmers, and to a very small number of trusted individuals outside the University of Manchester. Tight control of the code is essential, since our scientific research depends on the stability of the libraries. However, external users are welcome to produce a tarball of any significant contributions they wish to make, which will be vetted by the core group programmers before being added to the libraries. Tina 6 is not yet under CVS control, but it is anticipated that this will be implemented in the near future.



What are the different versions of TINA?

Before the release of TINA as Open Source we never really considered there to be versions. TINA is an evolving piece of research software and generally, software routines are only changed for good reason (eg: bug fixes or improvements) and we always strive for upgrade compatability. We started numbering versions at 4.0, which seemed to be historically reasonable, when Tina was released as open-source software. Tarballs of Tina 4 were distributed via. the Niac website. The current version of Tina is 6: Tina 4 and Tina 5 will no longer be supported, and users should migrate at their convenience. However, the website includes pages for Tina 4 and Tina 5 where old material is archived.



Why isn't TINA written in C++?

We have considered this issue for a number of years and would have re-written Tina if we thought we would gain anything useful. We were once told by a C++ fan (who has never programmed in C) that we had written the software correctly but in the wrong language. High praise indeed! Various students have used C++ compiled with Tina during their work. We have found that the skills needed for machine vision research rarely intersect with those for C++ programming. In addition the capabilities of C++ rarely intersect with the requirements of flexible code development. It is much easier to understand software which separates data structures and algorithms. Destructor/constructor capabilities can be duplicated by careful design of data structures and support functions. File I/O is more reliably handled with user accessible code (see serialise). Object oriented programming is best kept to a minimum for genuine code reuse and clarity, C++ overly proliferates this style. C fits better on hardware. The small number of publications on C/C++ comparison bear out these rather obvious comments and give a factor of three in time difference for incremental code modification.

For a more complete analysis and comparison of C and C++ take a look at Deep c critique.



Why isn't TINA developed under a Microsoft OS such as NT?

Well, several answers spring to mind...

1. This question is a joke, right?

2. We like doing research, not user interface development.

3. We can't stand the noise!

4. (Probably the real answer...) In order to debug software effectively we need an environment which separates the operating system cleanly from the user software. We also require software longevity and do not wish to have to rewrite large quantities of software when compilers, graphics libraries or operating systems change. The UNIX model provides this. The UNIX model operating system allows us much greater freedom in choosing hardware on which to run TINA. In fact it is fairly true that we can consider the hardware virtually independently of the OS - there will almost always be a UNIX that will run on it.



How much effort went into writing TINA and why is the software open source?

We estimate that TINA currently embodies in excess of 80 person-years of coordinated research effort. We feel that giving software away is the only way to provide a solid deliverable from our work. Good algorithms are never sufficiently specified in research papers for identical reimplementation. Ultimately we would like to reduce the amount of repetition in machine vision research and improve the quality of algorithmic evaluation by setting this trend.

One other reason is far more altruistic (or is it, Richard Dawkins?). Our research is funded by the people of the UK and Europe and it seems only fair that they get the chance to utilise some of the results.



What is the legal position on TINA?

TINA is open source and follows the model of copyleft. This means that you cannot sell TINA as part of a product without an explicit agreement from the authors. Otherwise you are free to use and modify the software as you wish provided you make those changes available to other people - preferably through us. The TINA main webpage has a link to the lesser GPL license which applies to TINA.



Can I use TINA for teaching?

We have provided example working programs, data sets and our own laboratory exercises on the web as a starting point for your own course.



Can I get a course on using TINA for research?

We have run them before so contact us.


Compiling and Installing


I can't download the software!

Access to the Tina 6 is via the tarballs link on the software page of the website. Documentation is available there. If you get really stuck, send us an e-mail and we will try to help.



I have downloaded it but now what do I do?

Place the tarballs in a convenient location (e.g. /usr/local/Tina6), then unzip and untar both. This will produce two sub-directories containing the source code. In each of these (tina-libs and tina-tools) type

./configure

make

make install

This will build the Tina libraries. In order to use the libraries, you must build an interface (known as a tinaTool). Examples are available in the tina-tools/toolkits directory: the exectable for the example2 toolkit (which includes most of the available algorithmic functionality) is also copied into the tina-tools/bin directory.



Why won't my copy of TINA compile?

Not an easy question to answer remotely. The wiki page in the developer's area includes solutions to some common problems.


Problems running TINA


How do I know the software really works?

There are numerous test data sets available with instructions for typical use of the tools. Run these for the algorithms you are interested in and then read the associated research papers.



Why does the code sometimes crash?

Crashes on UNIX systems are rare but can normally be attributed to /tmp being filled with junk, causing a reduction in available swap space, depending on how the operating system was installed. Get your system manager to fix this and shoot the guy that filled up /tmp. Some (a limited number of routines such as scan) generate temporary files from system calls, TINA may crash if you do not have write permission for the working directory. This may also happen if you have exceeded your disk space quota. We generally try to fix bugs as soon as we find them.



Why don't the replays always regenerate the user interface properly?

The replays contain information regarding positions and sizes of various panels. Different machines (graphics libraries) have different default fonts and button definitions. These changes result in replays where the window sizes do not always fit the displayed buttons on a different machine. It will not result in anything serious so don't panic. Regenerating the replay (or editing the stored dimensions) for your machine will fix the problem.



Why doesn't my replay macro work anymore?

Replay macro's work by re-executing specific sets of interface interactions. This can only happen correctly if the interface is in exactly the same state as when the macro was defined. For example if your macro attempts to modify a parameter in a dialog box but that dialog is currently not open it cannot modify this parameter. Algorithmic performance will be altered as a consequence. For safety always configure the tool with a replay which specifies all of the required parts of the interface in the same order. Remember, Tv's are floating resources and are only identified by the order in which they were generated and installed.


Questions about TINA functionality


Who is TINA intended for?

Originally intended for machine vision algorithm developers, the software now has a sufficient reliability for use by anyone who wishes to perform image analysis. The image calculator in particular is quite useful and probably contains enough on its own to demonstrate the basics of image processing for anyone interested to learn.



What can I use TINA for?

In brief... 3D machine vision for robots and medical image analysis. Rapid testing of image processing algorithms and algorithmic software development. The replay facilities support temporal algorithm development and data communication routines support flexible partitioning of algorithms across multiple processors.



Why doesn't TINA perform any colour processing?

The kinds of research we have been interested in do not require colour. Colour processing is not well defined mathematically even for things like addition and subtraction, but certainly not multiplication. We are not in the process of designing an image editing package. Colour cameras do not provide high quality data suitable for feature extraction due to aliasing caused by the small active area of the colour CCD's.

Having said that, we do have a colour segmentation tool available. However, colour images will be read in as individual colour fields, and no colour display is available (yet...).



Does Tina contain character recognition, face recognition or fingerprint recognition?

No.



Why is the interface so complicated?

We use this software for interactive research and need the flexibility to investigate alternative algorithms and debug software. We try to simplify software once alternative approaches can be eliminated and when control parameters are no longer necessary, but do not consider ourselves to be in the process of interface design and do not wish to be.



Why should the TINA algorithms be any better than anyone else's?

Tina has been designed specifically with the aim of providing a toolkit, not only for solving individual problems in machine vision and medical image analysis, but also for building larger, integrated vision systems. This process requires careful attention to the statistical properties of the data output by any individual module, which may be ignored by groups intent on solving only one specific problem (i.e. you won't find any Bayes priors being used to fudge the output data in Tina). We strongly believe that this approach is essential for scientific process in our research area.



Why aren't the 3D medical image analysis routines written with a 3D memory model?

Sophisticated memory models are designed to accelerate data access, nothing more, and can only work with simplistic volume data structures. The best techniques really require hardware specific features. We often need to analyse 4D data and extract sparse but complicated data structures, neither of which could benefit form 3D memory models. We use purpose written packages for 3D visualisation.



Why are there no explicit 3D image processing functions?

Our software development is driven by practical need and we have not yet encountered an analysis problem which really justifies this extension. All of our medical data processing is generally pixel based rather than region based, we avoid algorithms such as morphological operators due to statistical instability (see user documentation). On the few occasions where region based processing is required it is sufficiently well implemented in pseudo 3D (2D slices).



How do I get my image data into TINA?

TINA supports many image data formats, most of them in the Mono Tool. Alternative simple (non-compressed) formats may be read directly into the image calculator, after specification of various size and data type parameters, via the Stack Tool.



Do you have support for large images?

We do not allocate memory in image sized chunks and copy individual rasters as needed to avoid paging, but we wouldn't like to analyse a full satellite image (ie: linear dimensions > several thousand pixels) without an extra memory buffer.



Why are there some duplicated functions in the libraries?

Sometimes algorithms have been developed in parallel and this resulted in the definition of some equivalent functions. Some of these will ultimately be eliminated but in general they should all work. Meanwhile they often offer speed advantages to some approaches under different circumstances.



Why are some of the algorithms mentioned in the documentation missing from the libraries?

The algorithms which we are not happy with being generally released (for various reasons) have been withheld but are often available on specific request. We just like to know who wants them and why so that we can provide additional information.


Future Development


Will you be moving to JAVA?

Interesting question. Basically no. The core processing algorithms will not but we have an interest in a client/server based system for medical imaging. The interface to this could be written in Java (using SWING). A little work has been done on this but not much.



How long will TINA be supported?

There are no identifiable restrictions on the lifetime of this package, though the software will continue to mutate in line with our requirements and along with the rest of the open source community.



Can I contribute something to the TINA libraries?

Send us an email and tell us about it.



The information which appears in these pages is provided with no warranty. No responsibility is taken for any equipment damaged or data lost as a result of implemented any of the techniques described above. You have been WARNED!

Valid HTML 4.01!