Milena (Olena)  User documentation 2.0a Id
Welcome

Welcome to Milena’s tutorial.




How to learn Milena

Milena is only a subpart of Olena but tends to be a large system too. Therefore it is not possible to present all the functionalities in a tutorial.

Milena targets several audiences: assemblers, designers, providers and architects. Assemblers want to apply and assemble algorithms to solve image processing, pattern recognition or computer vision problems, designers build new algorithms, providers are interested in developing their own data structures and extend an existing library and architects are basically developpers extending the core library.

Whatever the kind of user you are, the key to learning how to use Milena is to become familiar with its palette of objects and the way of combining them.

As an assemblers, you may start with this simple tutorial and the Quick tour . They describe and illustrate the key features of the library. Assemblers getting familiar with Milena and designers, should take a look at the Quick Reference Guide . It is a more detailed explanations of the library’s features.

Assemblers and designers may be also interested by all the examples provided with the documentation and the tutorial. The source code is available in milena/doc/examples and is usually pointed out and commented by the documentation.

Taking a look at the test suite is also a good idea. The tests usually focus on a single functionality and handle several use cases which may overlap your needs. The test suite is located in milena/tests .

Still not enough information? More information about all the routines is available in the User HTML documentation . It mainly targets designers and providers. The latter may also be interested by the Developer HTML documentation (not available yet).




Obtaining the library

There are two ways of getting Milena on the web:

  • Download a tarball/package from the website,
  • Checkout the SVN repository.

Downloading a package or a tarball is the best choice for a new user. Except for nightly builds which are packages generated every night from the SVN repository, packages and tarballs contain only a released version of Milena. It guaranties a certain quality: no building issues, no bugs (ok, maybe some...), …

This tutorial is based on the latest released version of Milena. Therefore, if you decide to use the SVN version, you may notice different behaviors or results compared to what it is described in this document.

Using the SVN version implies some drawbacks: the code might crash, not compile or produce incorrect results. Besides, The SVN version is always up to date and you may find new functionalities, bug fixes and new syntax improvements. This version targets users familiar with build systems and compilation issues. We strongly advise you to not use it for production use.




Downloading the library

Downloading from SVN

First, be sure that SVN is already installed on your system. Open a terminal and type:

$ svn --version --quiet
1.4.6

You should see your version of SVN installed. If you read ’Command not found’ then you need to install SVN.

Usually, systems providing packages reference SVN’s package as ’subversion’.

To install SVN on Debian or Ubuntu, run:

$ sudo apt-get install subversion

For other distributions, please refer to the user documentation of your system.

Once you have SVN installed, go to the directory where you would like to download Olena and create a new directory.

$ cd $HOME
$ mkdir olena
$ cd olena

Then ’checkout’ (download) the repository with the following command.

$ svn co https://svn.lrde.epita.fr/svn/oln/trunk

Enter the ’trunk’ directory.

$ cd trunk

You are now ready to configure the directory and install Milena as described in section Installation . We invite you to take a look at the description of the directory structure (section Directory structure ). If you encounter any issues in the installation process or if you have any question, do not forget to join the mailing lists (section Join the mailing lists ) and/or use the other documentations resources (section reftuto1documentation).

Downloading packaged releases

Milena’s packages can be downloaded from:

http://www.lrde.epita.fr/Olena/Download

On this page you will find the latest and past releases. Currently, we provide only ’.tar.gz’ and ’tar.bz2’ archives.

Once downloaded, you just need to uncompress the archive.

For the ’.tar.gz’ archive:

$ tar zxvf olena.tar.gz

For the ’.tar.bz2’ archive:

$ tar jxvf olena.tar.bz2

Then, enter the new created directory:

$ cd olena

You are now ready to configure the directory and install Milena as described in section Installation . We invite you to take a look at the description of the directory structure (section Directory structure ). If you encounter any issues in the installation process or if you have any question, do not forget to join the mailing lists (section Join the mailing lists ) and/or use the other documentations resources (section Documentation )).




Join the mailing lists

Regardless your use of Olena, we strongly advise you to join our mailing lists. This is the best way to keep up to date about new releases, bug notifications/fixes and future updates. This is also a good opportunity to tell us what you would like to find in Milena and what could be improved.

Currently four mailing-lists are available:

Olena Discussion about the project Olena
Olena-bugs Bugs from Olena projects
Olena-core Internal list for the Olena project
Olena-patches patches for the Olena project

You can subscribe to these mailing lists at the following address:

https://www.lrde.epita.fr/mailman/listinfo/

Just click on the name of the mailing list you want to subscribe to and fill out the form.




Directory structure

Milena’s directory is composed of several subdirectories. In order to help you finding what you need, you will find a description of all these subdirectories.


List of milena’s subdirectories:

  • apps — A full example of a 3D mesh visualisation tool. It uses milena.
  • doc — THE directory you must know. Contains all the documentation material.
  • img — A set of common test images. They are used in the test suite. Feel free to use it in your programs.
  • mesh — A set of 3D meshes. They can be used with the full example located in milena/apps.
  • mln — The core of the library. Contains all the library headers.
  • tests — The test suite. Is it subdivided in sub directories. The directory hierarchy respects milena/mln’s.
  • tools — Small tools written with milena. They can be used as examples.


List of mln’s subdirectories:

  • accu — Set of Accumulators.
  • algebra — Algebraic structures like vectors or matrices.
  • arith — Arithmetical operators.
  • binarization — Routines to binarize an image.
  • border — Image border related routines.
  • canvas — Generic canvas. They define generic ways of browsing an image, compute data, ….
  • convert — Automatic conversion mechanism.
  • core — Core of the library. Here you can find the image types, the site set types and basic concepts.
  • data — Routines that modify image data.
  • debug — Debug related routines.
  • display — Display images on the screen.
  • draw — Draw geometric objects in an image.
  • essential — Set of essential headers for 1,2,3-D manipulations.
  • estim — Compute data on image values.
  • extension — Image extension manipulation.
  • fun — Set of functions applying on sites, values, …
  • geom — Functions related to image geometry.
  • graph — Graph related routines.
  • histo — Histogram related functions.
  • io — I/O related routines.
  • labeling — Labeling related routines.
  • linear — Linear operators.
  • literal — Generic image values such as zero, black, white …
  • logical — Logical operators.
  • make — Small routines to construct images, windows, …
  • math — Mathematical functions.
  • metal — Metallic macros/structures. Static library helping developing doing static tests.
  • morpho — Mathematical morphology.
  • norm — Norm computation.
  • opt — Optional routines. Routines which may work on a specific image type only.
  • pw — Point-wise image related routines.
  • registration – Registration related routine.
  • set — Set related routines.
  • subsampling — Sub-sampling related algorithms.
  • tag — Tag traits.
  • test — Definition of predicates.
  • topo — Complex related structures.
  • trace — Debug trace mechanism.
  • trait — Internal traits mechanism.
  • transform — Algorithms based on the data::transform.
  • util — Various utilitarian classes.
  • value — Set of value types which can be used in an image.
  • win — Set of various window kinds.

The source code and the material of the documentation is available in milena/doc. List of doc’s subdirectories:

  • examples — All the source code of the documentation examples.
  • benchmark — Some benchmarks.
  • tools — Small tools used for generating documentation / building examples.
  • tutorial — Tutorial sources.
  • white_paper — White paper sources.
  • ref_guide — Reference guide sources.
  • figures — Reference figures for documentation generation.
  • outputs — Reference outputs for documentation examples.




Documentation

This tutorial is not the only documentation of Milena. Other documents are available:

  • White paper — A small document of few pages presenting the key features of the library. It intents to give a big picture of the library.
  • Quick tour — It aims at giving an overview of Milena’s possibilities. It does not only give the concepts but illustrate them with small sample codes.
  • Quick reference guide — Presents in details all the main functionalities of Milena. Hints and full examples are also provided. The sample codes are commented and each concept in the library is detailed. This is the reference document for any assembler and algorithm designer.
  • HTML user doc — The full documentation of the library. The full API is described in details. Each part of the library is classified by categories and the source code is directly accessible from the documentation. This is the reference document for any algorithm designer and/or provider of data structures.
  • Header files — Every object or algorithm is declared in a ’.hh’ file. The documentation is provided as comments in these file.




Community and Support

Even though Milena is currently developed by the LRDE in EPITA, we are open for new contributors.

  • If you are a user, please send us feedback about the library. Did you find what you wanted? Do you miss something?
  • Please report bugs and defects in the API. Mailing lists are the best way for reporting that (section Join the mailing lists ).
  • Developers, if you write cool open source programs or algorithms with Milena, send them to us. We may ship your code with Olena and/or add it to our download page.
  • Educators, if you use Olena for your courses and you are ready to share your materials, you can send it to us through our mailing-lists.
  • We are also interested in partnership or commercial use of Milena. If you are interested, contact us directly ( Contacts ).




Project status

If you want to stay tuned to Milena’s development, the best way is probably the mailing-lists (section Join the mailing lists ).

There are other ways to get to know what is the status of the project.




A brief history of Milena

The Olena project aims at building a scientific computation platform oriented towards image processing, image recognition, and artificial vision. This environment is composed of a high performance generic library (Milena), a set of tools for shell scripts, together with, in the more distant future, an interpreter (a la Octave, MatLab etc.) and a visual programming environment.

The Olena project started in 2000 from a small prototype on 2-D images. From November 2001 to April 2004, this prototype evolved from version 0.1 to 0.10. More image types were supported and the level of genericity expected from the library was partially obtained. During these three years, the prototype was used to experiment with genericity and to try to meet our objectives. In February 2007, Olena 0.11 was released to conform modern C++ compilers. At that time, the code was not enough readable though and the compilation time was too long.

Since June 2007 up to now, The library of the Olena platform is called Milena and the library has been rewritten. The programming paradigm has been simplified: the code is more readable and the compilation time is acceptable. The level of genericity still meets our objectives though.

Milena is now getting ready for being considered as stable and distributable. The core of the library is getting frozen and we aim at enriching the library, its documentation and the related tools.




Contacts

If you want to reach us directly, you can contact one of the following people:

  • Thierry Geraud - Project Manager - thierry.geraud@lrde.epita.fr
  • Jonathan Fabrizio - jonathan.fabrizio@lrde.epita.fr
  • Yann Jacquelet - yann.jacquelet@lrde.epita.fr
  • Guillaume Lazzara - guillaume.lazzara@lrde.epita.fr
  • Roland Levillain - roland.levillain@lrde.epita.fr







Go to Installation   —→

 All Classes Namespaces Functions Variables Typedefs Enumerator