~ [ source navigation ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Tina6/tina-libs/

Version: ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Name Size Last modified (GMT) Description
Back Parent directory 2017-05-22 01:00:01
Folder demo/ 2015-03-06 12:05:28
Folder docs/ 2015-02-20 11:03:36
Folder scripts/ 2015-02-20 11:03:41
Folder tina/ 2015-03-06 12:05:13
File AUTHORS 165 bytes 2015-02-20 11:06:09
File COPYING 1599 bytes 2015-02-20 11:06:09
File ChangeLog 10115 bytes 2015-03-05 16:10:13
File INSTALL 9725 bytes 2015-02-20 11:06:09
File Makefile.am 148 bytes 2015-03-06 10:50:22
File Makefile.in 24783 bytes 2015-03-06 10:57:24
File NEWS 202 bytes 2015-02-20 11:06:09
File README 17004 bytes 2015-02-20 11:06:10
File aclocal.m4 348250 bytes 2015-02-20 11:16:14
File config.guess 45297 bytes 2014-06-10 08:03:11
File config.h.in 5823 bytes 2015-02-20 11:06:11
File config.sub 35533 bytes 2014-06-10 08:03:11
File configure 457903 bytes 2015-02-20 11:17:55
File configure.ac 2647 bytes 2015-02-20 11:06:08
File depcomp 23566 bytes 2014-06-10 08:03:11
File install-sh 13997 bytes 2014-06-10 08:03:11
File ltmain.sh 283474 bytes 2014-06-09 23:56:31
File missing 6873 bytes 2014-06-10 08:03:11
File test-driver 3977 bytes 2014-06-10 08:03:11

  1 TINA 6 README
  2 =============
  3 
  4 paul.bromiley@manchester.ac.uk 02/07/2010
  5 
  6 
  7 Contents
  8 --------
  9 
 10 1) What is TINA?
 11         1a) History
 12         1b) Authors
 13         1c) What does TINA stand for?
 14         1d) How do I know it works?
 15 2) Where do I get TINA?
 16 3) How do I compile the libraries?
 17         3a) Compatibility issues
 18         3b) Compiler warning messages
 19         3c) For Developers Only
 20 4) How do I compile the toolkits?
 21 5) How do I write my own TINA code?
 22         5b) Porting old TINA 5 code to TINA 6
 23 
 24 
 25 1) What is TINA?
 26 ----------------
 27 
 28 TINA (TINA Is No Acronym) provides a set of libraries for machine vision and
 29 image analysis research.  It is written in C primarily for use on GNU/Linux
 30 platforms, although it can also be compiled on MacOSX, Solaris, and (with some
 31 effort) MS Windows.  The code is split into two areas:
 32 
 33 tina-libs:      back-end code for memory management, image structure handling 
 34                 etc.
 35 
 36 tina-tools:     high-level algorithms, interface etc.
 37 
 38 Each of these areas contains a number of libraries with specific purposes:
 39 
 40 tina-libs:
 41 
 42 file:           input/output file handling
 43 geometry:       basic geometry functions
 44 image:          basic image processing functions
 45 math:           basic mathematical functions
 46 medical:        back-end functions for medical image analysis
 47 sys:            basic memory allocation functions
 48 vision:         back-end functions for machine vision
 49 
 50 tina-tools:
 51 
 52 draw:           basic display drawing
 53 gphx:           low-level interface to widget sets
 54 wdgts:          high-level interface to widget sets
 55 tlbase:         basic tools (image loading etc.)
 56 tlvision:       machine vision tools
 57 tlmedical:      medical tools.
 58 
 59 In order to use TINA, you must download both the tina-libs and tina-tools areas
 60 from our website, and compile both. This will produce a set of libraries in the
 61 libs subdirectories of both tina-libs and tina-tools. 
 62 
 63 The TINA libraries can be used in one of two ways.  They have been designed to
 64 be highly modular, allowing users to strip out parts of the functionality to
 65 use in their own code (under the terms of the licence).  However, they also
 66 include code for interfaces to the algorithms.  This code is in the form of a
 67 set of "tools", each of which appears as a window on the screen, and which
 68 collect together related functionality applicable to a certain task (loading
 69 single images, stereo image pairs, temporal sequences or medical image
 70 volumes; stereo vision; medical image segmentation; registration; blood flow
 71 analysis etc. etc. ).  In order to use this interface, you must build a
 72 "toolkit", a program that includes the tools you want to access.
 73 
 74 TINA is research software, continuously updated by a small group of core
 75 programmers at the University of Manchester, primarily for their own
 76 use. There is no "stable" release as such: the code in the tarballs is the 
 77 latest version.  However, it is written with numerical stability and 
 78 statistical validity in mind, and all new additions are thoroughly tested.
 79 
 80 
 81 1a) History
 82 -----------
 83 
 84 Development of the original X11 based versions of TINA started in 1989 at the
 85 Artificial Intelligence & Vision Research Unit (AIVRU) at the University of
 86 Sheffield (www.shef.ac.uk).  It was designed using experience gained in two
 87 previous versions with an aim to minimise the process of software maintenance
 88 and maximise code reuse.  Later versions of TINA were developed there and also
 89 at the Electronic Engineering Department of the University of Sheffield.  TINA
 90 became Open Source whilst being maintained by Electronic Engineering.  Since
 91 1997 TINA maintenance has been switched to Imaging Science and Biomedical
 92 Engineering (ISBE) (www.isbe.man.ac.uk) at the University of Manchester
 93 (www.manchester.ac.uk).
 94 
 95 Until 2002 TINA was never explicitly funded as a project in its own
 96 right. Rather it has been developed under numerous research grants and
 97 collaborations as a framework to facilitate an ongoing co-ordinated research
 98 effort into artificial vision.  TINA was originally conceived by AIVRU
 99 researcher Stephen Pollard as a library of functions necessary for
100 stereo-based 3D machine vision.  John Porrill and Neil Thacker where also
101 involved at these early stages.  After this team broke up Neil Thacker
102 continued vision research within TINA at Electronic Engineering, and together
103 with Tony Lacey released TINA as Open Source.  In 1997 both Neil Thacker and
104 Tony Lacey moved to ISBE, from where TINA is now maintained.  Tony left for a
105 career in industry in 2004: today, Neil Thacker is the project leader for
106 TINA, and Paul Bromiley performs most of the day-to-day maintenance of the
107 code and website.
108 
109 
110 1b) Authors
111 -----------
112 
113 Along the way a large number of people have contributed to TINA both at the
114 University of Sheffield and the University of Manchester. Their contributions
115 are never forgotten (and their code never lost). A full list can be found at
116 www.tina-vision.net/people.php.
117 
118 
119 1c) What does TINA stand for?
120 -----------------------------
121 
122 Originally the acronym TINA stood for "there is no alternative", which was
123 true at the time.  Since then, several alternative meanings have been
124 suggested ("Thacker is not acceptable", "TINA is nearly accurate" etc.: most
125 of these were the result of a bad day at work). Today however, in a similar
126 style to acronym GNU, TINA stands for "TINA is no acronym". All previous
127 definitions have now been superseded!
128 
129 
130 1d) How do I know it works?
131 ---------------------------
132 
133 For most software, the question of accuracy is non-existent: your word
134 processor either lets you prepare and print a document, or does not.  However,
135 for scientific software the question becomes more problematic because the
136 requirements are more extensive.  The results of any machine vision algorithm
137 will be dependent on the statistical validity and numerical stability (or what
138 might be called the "theoretical" and "implementation" aspects) of the
139 algorithm, and any failure to meet these two goals might not be obvious to the
140 user without extensive validation work.  Any attempt to justify the algorithms
141 used in TINA here would be largely pointless, since such justification can
142 only be meaningful after a suitable "negotiation of trust".  Therefore, I will
143 commence that process with three simple observations:
144 
145 a) All of the algorithms in TINA have been derived strictly within a context
146 of statistical validity: you won't find any active contour methods with
147 arbitrary image potential terms here! Therefore, the results of any algorithm
148 can be linked directly to the probability theoretic interpretation of the data
149 generation process.  This is not a guarantee that a specific algorithm will
150 work for your data. However, it is a guarantee that, if your data obeys the
151 underlying statistical assumptions relevant to the algorithm (as specified in
152 our published papers: see point b), the interpretation of the data provided by
153 the algorithm will be valid. In theory, your results can be linked directly
154 all the way back to the underlying axioms of mathematics.
155 
156 b) All of the algorithms in TINA have been used in our scientific research,
157 and thus subjected to peer-review in conference and journal publications.  We
158 make preprints of these publications available via our website at
159 www.tina-vision.net/docs/memos.php.  These papers contain details of our
160 in-house validation work.
161 
162 c) All of the algorithms in TINA are available as open-source software.
163 Through a combination of reading the memos, documentation, and code, you can
164 see exactly how a given algorithm works.  This facility is rarely afforded to
165 users of commercial machine vision or medical image analysis software. If you
166 think you have spotted a mistake in our work, get in touch! You will either
167 gain (admittedly limited) fame as an external contributor named on the TINA
168 website, or a very lengthy tutorial on statistics (e.g. if you mention the
169 words "Bayes Theory" within earshot of one of the core programmers).
170 
171 
172 2) Where do I get TINA?
173 -----------------------
174 
175 Tina tina-libs and tina-tools code can be downloaded from our website
176 (www.tina-vision.net), in the form of tarballs, via the "software" link.
177 Both are required in order to access algorithmic functionality.
178 
179 
180 3) How do I compile the libraries?
181 ----------------------------------
182 
183 Before you start, you must have the GNU autotools (autoconf, automake and
184 libtool) installed.  The tina-tools libraries also require pkg-config, and
185 GTK+ 2 and its associated packages (for Suse 9.2, the full list of these
186 is:
187 
188 fontconfig
189 fontconfig-devel
190 pkgconfig
191 atk
192 atk-devel
193 pango
194 pango-devel
195 glib2
196 glib2-devel
197 gtk2
198 gtk2-devel).
199 
200 The basic approach is to cd into the tina-libs-6.0rcbuildxxx directory, 
201 then type:
202 
203 ./configure
204 make
205 make install
206 
207 Next, cd into the tina-tools-6.0rcbuildxxx directory and type the same 
208 commands.  The configure command will produce a report on the required
209 packages it has been able to locate, which should look something like:
210 
211 > tina-tools configuration complete for i686-suse-linux-gnu.
212 > 
213 >   Source directory:              .
214 >   Installation directory:        /usr/local/Tina6/tina-tools
215 >   C compiler:                    gcc
216 > 
217 >   tina-libs headers:             /usr/local/Tina6/tina-tools/../tina-libs
218 >   tina-libs libraries:           /usr/local/Tina6/tina-tools/../tina-libs/lib
219 > 
220 >   GTK2 flags:                    -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include 
221 >   -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
222 >   -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12
223 >   GTK2 libraries:                -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 
224 >   -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
225 > 
226 >   Configuration successful! Now type 'make' to build the libraries and then
227 >   'make install' to install the libraries into the prefix location.
228 
229 If the penultimate line contains "The configuration has failed.", then 
230 some of the required packages have not been found (as indicated by empty
231 results on the GTK2 or tina-libs lines).  Install any missing packages,
232 or use the configure options
233 
234 ./configure
235 --with-gtk-prefix=      (location of the gtk installation e.g. /opt/gnome)
236 --with-tina-includes=   (location of the tina-libs directory)
237 --with-tina-libraries=  (location of the tina-libs lib subdirectory)
238 
239 to specify locations.  The full set of options provided by configure can 
240 be seen using;
241 
242 ./configure --help
243 
244 There are currently no specific tina-libs options (as of version 6.0rc0).
245 
246 
247 3a) Compatibility Issues
248 ------------------------
249 
250 If the above instructions fail to work for your system, your first port of
251 call should be the WikiWiki page on our website.  Go to www.tina-vision.net,
252 click on "wiki" in the menu, and then click on "Tina5CompileGuide".  If your
253 system is listed, then it will provide work-arounds or full solutions for
254 known problems.  If not, pipe the outputs of ./configure and make to files and
255 e-mail them to me (paul.bromiley@man.ac.uk) and I will do my best to help you
256 out.  I would appreciate feedback on compilation for systems not listed on the
257 wiki page: it allows us to keep the instructions up-to-date.
258 
259 
260 3b) Compiler warning messages
261 -----------------------------
262 
263 When you compile TINA you will notice a small number of compiler warnings.
264 They are the legacy of the 20-year development history of TINA: old coding
265 practices that are now considered unacceptable.  One example is the 
266 assumption that a pointer and an integer occupy the same amount of memory:
267 this is true on 32-bit systems, but not in general on 64-bit systems.
268 We are currently fixing these warnings: however, none of them have been 
269 found to affect the algorithmic functionality.
270 
271 
272 3c) For Developers Only
273 -----------------------
274 
275 If you are a member of the core TINA developer team, you may be tempted to 
276 copy the tina6 directory from server6 directly onto your own machine.  This 
277 should in general be avoided: use the distribution tarballs instead.  
278 
279 If you decide to ignore the above advice, you may see warnings from the 
280 autotools, an indication that you need to reconfigure the build system.  
281 This involves using six different commands in the correct order.  See PAB
282 for instructions.  The instructions he will give you are: use the distribution
283 tarballs instead.
284 
285 Under no account should you copy a tina6 directory from your machine back 
286 onto server6.  If you wish to modify the source code on server6, this must
287 be done file-by-file.  In addition, you will have to diff each file you 
288 wish to add with the current version in order to determine whether anyone
289 else has changed the file since you obtained it.
290 
291 If you make any changes to the build system (i.e. configure.ac or any 
292 Makefile.am), speak to PAB before copying them onto server6.
293 
294 At some point in the (hopefully near) future, TINA 6 will be placed under 
295 CVS control; this will solve the above issues.
296 
297 
298 4) How do I compile the toolkits?
299 ---------------------------------
300 
301 At the end of step 3 you should have built the TINA libraries in both 
302 tina-libs and tina-tools.  In order to use them, an interface program 
303 called a "toolkit" is required.  Three example toolkits are included
304 in the distribution, in the tina-tools/toolkits area: the one of 
305 interest to most users will be the example2 toolkit, which includes
306 most of the currently available algorithms.  The executable for this
307 toolkit is also installed in tina-tools/bin.  If desired, a link to
308 that file can be created in /usr/local/bin, allowing it to be run 
309 from the command line.  An icon is included in the example2 directory, 
310 should you wish to set up a desktop icon.
311 
312 
313 5) How do I write my own TINA code?
314 -----------------------------------
315 
316 TINA provides the ideal environment for machine vision or medical image
317 analysis researchers to develop their own code.  All of the basic functionality
318 (memory allocation, image representation, basic image processing, geometry, 
319 maths etc. etc.) is already present, allowing for rapid code development.  In
320 addition, the long development history has resulted in highly stable code.
321 
322 The simplest way to begin writing your own TINA code is to create a project 
323 area (e.g. /home/my_user_name/my_tina_project), and copy into it the files 
324 from the example2 toolkit in tina-tools/toolkits/example2.  These include a
325 simple makefile, called Makefile.tina, which can be used to compile the code
326 without using the GNU autotools.  Remove the existing Makefile from the 
327 project area and rename Makefile.tina to Makefile.  
328 
329 The Makefile requires some manual editing, as follows: the EXTWDGTLIBS line
330 should contain the location of your GTK+ 2 library (e.g. /usr/lib), and the 
331 INCLUDES and LDFLAGS lines should contain the locations of your tina-libs
332 and tina-tools libraries.  The OFILES line of the Makefile refers to object 
333 files you wish to compile.  If you are compiling one of the example toolkits 
334 i.e. the only .c file in the current directory is tinaTool.c, then leave it 
335 empty.  If you start writing or adapting your own Tina code (see below) and 
336 have a directory with other c files in it, add my_c_file.o to this line for 
337 every my_c_file.c you want to compile.  In order to add new functionality, 
338 there are two options: adapt existing files from the libraries, or add new 
339 files of your own.
340 
341 If you are adapting files from the libraries, copy the C files plus their
342 file-level H files to your project area. Then build a copy of the header
343 file directory structure in your project area: put the inctw script
344 in your project area, and run it. The script can be found in the 
345 tina-tools/toolkits/example2 directory. This sets up a copy of the
346 header directory system, and soft-links from the relevant directories to the
347 header files in your project area, ensuring that when you compile TINA it
348 links in the local header files in place of the ones in the libraries. Then
349 you can get on with your coding: remember to add prototypes to your project
350 area header files if you add new functions.
351 
352 If you are writing new C files, you can just work in a project area as usual: 
353 the libraries won't be linking to your code, so the header file system doesn't 
354 affect you. However, if in the future you will be putting your code back into 
355 the libraries, you should think about where it would go and divide up your code 
356 accordingly. 
357 
358 Finally, type "make" in the directory containing the tinaTool.c file and the 
359 Makefile: if all goes well, you should end up with a "tinaTool" executable that
360 you can run.
361 
362 
363 5b) Porting old TINA 5 code to TINA 6
364 -------------------------------------
365 
366 The only major change between TINA 5 and TINA 6 is the removal of the widget
367 library interfaces for Xview, Motif, Tcl/Tk and Gtk+ 1.2 (as well as the NULL
368 widget interface).  Only the Gtk+ 2 interface remains.  As a consequence, the
369 build system has been simplified.  No changes to toolkit code should be 
370 required as a consequence of these changes.  However, the local Makefile may 
371 have to be modified to remove references to the old widget interface libraries.
372 See the example2 toolkit in tina-tools/toolkits for an example.

~ [ source navigation ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.