Getting Started

Here, you'll learn how to compile ICL on your system.

Supported Platforms

Currently, we only support linux as plattform, however, we plan to provide mac and windows compatibility soon. We use cmake and standard C++ only. Therefore porting ICL to other platforms will be quite easy.

Optional Dependencies (Short)

In order to get the most out of ICL, you should first install all available external dependencies. Please note that all external dependencies are purely optional.
The main optional external dependecies are:

  • Intel Integrated Performance Primitives Intel (IPP)
  • Intel Math Kernel Library (MKL)
  • Open Source Computer Vision (OpenCV)
  • opensurf
  • libmesasr
  • libdc1394-2
  • pylon-2.3.3
  • OpenNI
  • Qt

Please find a more detailed list of external dependencies at the bottom of this page.

Step By Step Installation of Dependencies

First, you'll have to care about installing the decencies for your ICL build.
Even though ICL has no compulsory dependencies, it is strongly recommended to install some of them to reveal ICL's full potential (E.g. you will not be able to use ICL's wonderful GUI toolkit if you build it without Qt support). A detailed step by step description for installing the dependencies is given at

Installation Guide for 3rd Party Dependencies.

Building ICL

First start with getting the current ICL Version from svn:

svn co https://opensource.cit-ec.de/svn/icl/trunk ICL

ICL uses CMake as build system. CMake is a cross platform makefile generator.
If you need a newer version of cmake refer to:
cmake.org.

Please note: Before you can build ICL with all desired functionalities, you might have to install some extra dependencies (as explained above).

We strongly recommend to use the configure script, that is placed in ICL's root directory. 'configure' always gets a single parameter that defines a configuration file name. A sample configuration file 'configure-sample-file.cfg' is also placed in ICL's root directory. The configuration file is documented and has a very simple syntax. Basically, you can simply define all build-dependent variables here. You can start the configuration process by calling

cp configure-sample-file.cfg mybuild.cfg
# edit/adapt mybuild.cfg
./configure mybuild.cfg

This will parse your configuration file and show you a summary of all parsed variables. Finally, the script calls cmake automatically and lists the dependencies that are found and used. The project can be build then by going into the build directory (which is usually ./build/release or ./build/debug) and typing

make all doc alldoc install

Alternatively, you can use cmake, ccmake or cmake-gui in order to configure the ICL-build. Here, you can manually specify all necessary variables for the build such as the installation prefix and the source directory for certain dependencies (some details are given here). However, as mentioned above, we do not recommend this, because of the huge amount of variables that can be edited there.

Experimental Windows build instructions

Step by step instructions

Optional Dependencies (Detailed)

ICL has only optional software dependencies, however some special functionalities depend compulsorily on certain 3rd party libraries. In the following, dependent functions, classes and packages are listed:

Intel Integrated Performance Primitives (Intel IPP)

Version: 6.x (maybe others)
Where: Intel Webpage
Ubuntu Package: not available
Proprietary: yes
Used Features:
  • Most basic image pocessing functions are optionally accellerated using an Intel IPP backend
  • ICLFilter:CannoOp (Canny edge detector) class is not available without Intel IPP

Intel Math Kernel Library (Intel MKL)

Version: 10.2 (maybe others)
Where: Intel Webpage
Ubuntu Package: not available
Proprietary: yes
Used Features:
  • ICLUtils:big_matrix_mult_t (efficient matrix multiplication for large matrices) [fallback: IPP and C++]

libdc1394

Version: 10.2 (maybe others)
Where: Sourceforge
Ubuntu Package: libdc1394-2x-dev
Proprietary: no
Used Features:
  • ICLIO:DCGrabber (FireWire Camera Support) [fallback: ICLIO:UnicapGrabber]
  • "dc" plugin for ICLIO:GenericGrabber [fallback: "unicap"-plugin]

OpenCV

Version: 1.x and 2.x
Where: Sourceforge
Ubuntu Package: libopencv-dev
Proprietary: no
Used Features:
  • ICLOpenCV:image converters [no fallback]

OpenGL

Version: any common
Where:
Ubuntu Package: libgl-dev
Proprietary: no
Used Features:
  • Qt dependency depends also on libGL (But GL-headers are needed as well)
  • The whole ICLQt-package and all GUI-applications [no fallback]

Qt


Version: 4.4 (or higher)
Where: Nokia-Qt Webpage
Ubuntu Package: libqt4-dev and qt4-dev-tools
Proprietary: no
Used Features:
  • The whole ICLQt-package and all GUI-applications [no fallback]

Unicap

Version: we use 0.2.19 maybe others
Where: Sourceforge
Ubuntu Package: formerly: unicap
Proprietary: no
Used Features:
  • ICLIO:UnicapGrabber (firewire and video 4 linux Support) [firewire fallback: ICLIO:DCGrabber]
  • "unicap" plugin for ICLIO:GenericGrabber [firewire fallback: "dc"-plugin]

libMagick++

Version: any common
Where: Sourceforge
Ubuntu Package: libgraphicsmagick++1-dev and graphicsmagick-libmagick-dev-compat
Proprietary: no
Used Features:
  • Support for most file formats [fallback: C++ for .ppm, .pnm, .pgm, .icl, and .csv (and .gz-versions of all), libjepg for .jpg]
  • No fallback support for other very common formats like .png, .giv, .bmp, ...

libjpeg

Version: any common
Where: Sourceforge
Ubuntu Package: libjpeg-dev
Proprietary: no
Used Features:
  • Support for .jpg (or .jpeg) files [fallback: libMagick++ (which maybe needs libjepg as well)]

libpng

Version: any common
Where: Sourceforge
Ubuntu Package: libpng-dev
Proprietary: no
Used Features:
  • Support for .png files [fallback: libMagick++ (which internally uses libpng as well)]

libz

Version: any common
Where: Sourceforge
Ubuntu Package: libz-dev
Proprietary: no
Used Features:
  • Zip-Compression/Decompression support for class ICLIO:File.
  • Zip-Compression/Decompression support for built-in image formats .pnm, .pgm, .ppm, .csv and .icl

videodev.h

Version: from 2.4.x or 2.6.x kernel
Where:
Ubuntu Package: linux-headers-2.x.x.x-generic
Proprietary: no
Used Features:
  • ICLIO:PWCGrabber (Native Support for Phillips 740 Webcams) [fallback: maybe unicap

SVS

Version: 4.2 (maybe others)
Where: Videre Design
Ubuntu Package: not available
Proprietary: yes
Used Features:
  • ICLAlgorithms:SVS stereo vision support class

libXine

Version: any common
Where: Sourceforge
Ubuntu Package: libxine-dev
Proprietary: no
Used Features:
  • ICLIO:VideoGrabber class (video image source support) [no fallback]
  • "video" plugin for ICLIO:GenericGrabber [no fallback]

XCF-Framework

Version: any common
Where: Sourceforge
Ubuntu Package: not available
Proprietary: no
Used Features:
  • Sending and receiving images via TCP network interface [no fallback]
  • ICLIO:XCFServerGrabber (RMI-based image acquisition)
  • ICLIO:XCFPublisherGrabber (Subscriber for published images)
  • ICLIO:XCFMemoryGrabber (image acquisition for ActiveMemory instance)
  • ICLIO:GenericGrabber plugins "xcfp", "xcfs", and "xcfm"
  • ICLIO:icl-xcf-publisher application
  • ICLIO:MemoryListener utility class
  • Global utility functions from ICLIO:XCFUtils header

libfreenect

Version: current unstable branch (10th of june 2011)
Where: OpenKinect project
Ubuntu Package: libfreenect-dev
Proprietary: no
Used Features:
  • Support for Microsoft's Kinect Camera

pylon

Version: 2.3.3 (maybe others)
Where: Basler
Ubuntu Package: not available
Proprietary: yes
Used Features:
  • ICLIO:PylonGrabber (GigE Camera Support)
  • "pylon" plugin for ICLIO:GenericGrabber

OpenNI

Version: 1.5.4 (maybe others)
Where: OpenNI
Ubuntu Package: not available
Proprietary: no
Used Features:
  • ICLIO:OpenNIGrabber (OpenNI Camera Support)
  • "oni" plugin for ICLIO:GenericGrabber