# Installation: Difference between revisions

## General remarks

There are two common ways to work with MiToBo:

• just using the operators included in MiToBo for improving your work and easing image processing tasks
• using the MiToBo API to write operators, plugins and other image analysis applications on your own

Irrespective of which way you intend to go the first thing to is always to download the binary zip file containing the current release of MiToBo.
The actual installation instructions differ in some parts depending on which way you choose.
Below we will first provide some notes regarding the binary zipfile, and then outline more details about the installation steps required for simply using MiToBo's operators. Finally we will present some details for using MiToBo's API.

## The MiToBo Binary Zip File

To get the current release of MiToBo download and extract the MiToBo Binary zip file.
You will find the following structure of directories:

• docs - includes the MiToBo manual
• lib - includes nesessary libaries for Linux and Windows
• licences - includes MiToBo license and licences for other software used by MiToBo
• macros - includes the MiToBo macro toolset
• native - sources and Makefiles to build MiToBo's native libraries
• plugins - includes MiToBo jar and other jars used by MiToBo
• oprunner.sh - shell script to run MiToBo operators from commandline (Linux only)
• run.sh - shell script to run ImageJ with MiToBo (Linux only)

## Linux

### Use MiToBo as shipped

You can use MiToBo right away using the run.sh and oprunner.sh scripts. If an UnsatisfiedLinkError occurs, please read the Native libraries section below.

### Use MiToBo with an existing ImageJ installation

To use MiToBo with an existing ImageJ installation perform the following steps:

1. copy the Mi_To_Bo.jar in plugins/ of the MiToBo zip-file to your ImageJ/plugins/ directory
2. copy all jars in plugins/jars/ of the MiToBo zip-file to your ImageJ/plugins/jars/ except the ij.jar and jars already existing in your ImageJ/plugins/jars/ directory
(Notice: MiToBo requires explicite versions of some jars, other versions may not work probably, see requirements.)
3. copy the MiToBo_Runner.txt from the macros/toolsets/ directory in the MiToBo zip-file to your ImageJ/macros/toolsets/ directory
4. Make the native libraries in lib/ of the MiToBo zip-file available to java (see the Native libraries section below)

You can still use the run.sh and oprunner.sh scripts if you copy the to your ImageJ/ directory.

Since release $0.9.6$ \mitobo supports the ImageJ toolbar, i.e.~offers a configuration file for fast access of its plugins via a toolbar button. To add the \mitobo toolset to ImageJ, \mitobo is shipped with a macro configuration file. It can be found in the zip archives and is called {\tt MiToBo\_Tools.txt}. Simply copy the file into the folder {\tt macros/toolsets} of your ImageJ installation and run ImageJ. Then you can select the \mitobo toolset from the list of available sets by clicking on the arrows button on the right side of the ImageJ standard toolbar. Selecting {\tt 'MiToBo\_Tools'} will add a button with the \mitobo logo to the toolbar allowing for direct access to all \mitobo plugins (Fig.~\ref{fig:toolbar}).

### Native libraries

Some operators of MiToBo use native code via the Java Native Interface (JNI). The lib/ directory in the zip-file provides JNI-libraries for 32- (lib/lib32) and 64-Bit (lib/lib64) systems, but for several reasons an UnsatisfiedLinkError might occur when you run MiToBo operators that depend on native code. UnsatisfiedLinkErrors are thrown if the native library required is not available or cannot be loaded for other reasons. In the following solutions to the different reasons are described.

#### Troubleshooting

• Library paths not configured:
The path to the native libraries must be available to any java application which uses MiToBo operators that depend on these libraries.
The run.sh and oprunner.sh scripts both add the lib/lib32 or lib/lib64 directory depending on your architecture to the LD_LIBRARY_PATH, thus you do not have to configure the LD_LIBRARY_PATH manually.
If you run ImageJ with MiToBo or the OpRunner in another way, the directories of native libraries can be passed to java in any of the following two ways:
• The LD_LIBRARY_PATH environment variable must contain the path to the native libraries used
• The java-call has to be augmented with an option to tell where native libraries reside:
  java -Djava.library.path=/path/to/libs1:/path/to/libs2[:...] ...

For example, you can run ImageJ with MiToBo on a 32-Bit system with the unzipped MiToBo structure, but not the run.sh script, with the following command (the /usr/lib is also provided here as it is assumed to contain the CGAL libraries - see next problem):
  java -Djava.library.path=lib/lib32:/usr/lib -cp plugins/jars/ij.jar ij.ImageJ

Configuring the LD_LIBRARY_PATH and running java with the -Djava.library.path option are equivalent and thus only the LD_LIBRARY_PATH is referred in the following.
• CGAL libraries not installed:
Any MiToBo operator using Snake Active Contours is based on a Snake datatype that is backed by the CGAL (Computational Geometry Algorithms Library) libraries [1]. The library libJNI_Cgal_Polygon2D.so shipped with MiToBo defines the interface to these libraries and thus requires that the CGAL libraries are installed on your system.
Make sure that the path to the CGAL libraries is specified in your LD_LIBRARY_PATH.
• Building of MiToBo's native libraries:
You might have installed a different version of libraries compiled with a different compiler than the libraries used to build the libraries shipped with MiToBo. Therefore MiToBo's native libraries might not work and an UnsatisfiedLinkError is thrown. Then you have to compile MiToBo's native libraries yourself:
1. Go to the native/ directory in MiToBo's directory structure
2. Edit Makefile.rules if necessary (defaults are predefined):
• The path to your java installation which includes the JNI-header files
• The path to the CGAL libraries
• The path to the CGAL headers
1. Run make install, which will build MiToBo's native libraries for your architecture and move them into the lib/lib32 or lib/lib64 directory. This will overwrite the libraries in lib/lib32 and lib/

## Windows

Notice: The ImageJ directory path depends on your ImageJ installation. Following, we assume that the ImageJ home directory is set up to C:\Program Files\ImageJ\.<br\>

For installing MiToBo into an existing ImageJ installation perform the following steps:

1. go to the MiToBo-bin\plugins\ directory
• copy the Mi_To_Bo.jar to your ..\ImageJ\plugins\ directory
• copy all jars to your ..\ImageJ\plugins\jars\ directory except the ij.jar and jars already existing
(Notice: MiToBo requires explicite versions of some jars, other versions may not work probably, see requirements.)

2. go to the MiToBo-bin\lib\ directory
• copy the libwin32 directory to your ..\ImageJ\ directory

3. go to the MiToBo-bin\macros\toolsets\ directory
• copy the MiToBo_Runner.txt to your ..\ImageJ\macros\toolsets\ directory

• edit ImageJ configuration file ..\ImageJ\ImageJ.cfg and add the library path

-Djava.library.path="C:\Program Files\ImageJ\libwin32"

Example of an ImageJ.cfg file:
   C:\Program Files\ImageJ\
C:\Program Files\Java\jre6\bin\javaw.exe
-Djava.library.path="C:\Program Files\ImageJ\libwin32" -cp "C:\Program Files\ImageJ\ij.jar" ij.ImageJ


• as an alternative you can start ImageJ from command line
• open your Windows command line
• move to the ..\ImageJ\ directoy
• type the following command:
  java -Djava.library.path="C:\Program Files\ImageJ\libwin32" -cp "C:\Program Files\ImageJ\ij.jar" ij.ImageJ