Jens-Malte Gottfried Abyssary

Welcome to Charon-Suite

Note: We are currently migrating the pages from the Trac Wiki to the new SourceForge Wiki. Content is still incomplete. When facing missing pages, refer to the old location

With years of experience in computer vision, we learned (the hard way) that image processing libraries are very difficult to maintain and extend when working in a research environment.
Typically, the learning curve for such libraries is quite steep and their life-cycle shorter than 10 years.
Therefore, we decided to create a framework and associated tools rather than a library.

What is it and why is it useful?

  • charon is an open source framework for computer vision prototyping.
  • The idea is not to rely on any given image processing library such as OpenCV, Vigra, CImg or even Matlab and Python.
  • Instead we just define interfaces with a dead-simple plugin-architecture we call Charon-Core which has been stable since its first implementation in 2009.
  • Each part of a computer vision algorithm is called a module and you can visually connect algorithms in a tool named Tuchulcha. Think LabVIEW, but more generic and sexier.
  • Modules can be implemented in any language and may use any software packages.
  • Modules can be visually plugged together, and then be executed via C++ code or a command line tool.
  • The software is very easy to learn (there is a software assistant called TemplateGenerator which creates the code-template for such modules based on your interface definition).
  • You can choose your favourite programming environment thanks to CMake.
  • It is cross-platform and fully open source under the LGPL. Do what you like with it.
  • The number of existing algorithms and helper code such as file reading and writing, parameter files, etc. is steadily increasing.
  • From a supervisor's perspective it is also very useful as you can experiment with the methods your students implemented.
  • Visualization of results can either be done with special modules or via python or Matlab without writing data converters.
  • Modules can be easily added or removed from a project without recompilation.
  • Developing or changing modules is fast, only the module module itself needs to be (re)compiled. The rest of the project can stay untouched. This can be called the c++ equivalent of rapid prototyping.
  • The environment allows for white box testing to see which module influences the overall outcome to which extent.

An image of a typical workflow for optical flow estimation in order to help you getting an idea of what we do with the software is visible in the screenshots:

Screenshot thumbnail
1 Tuchulcha Workflow Editor
Screenshot thumbnail
2 Tuchulcha Help Browser
Screenshot thumbnail
3 TemplateGenerator
Screenshot thumbnail
4 Tuchulcha with running ArgosDisplay

Here you can find some example workflows.

Getting Started

Getting started takes little time, even for beginners!
In case you would like to experiment with existing modules:

  • Download the Windows binaries or install the Debian package (Installation Guide).
  • You will find files ending on .wrp in the data (which are plain-text parameter files, specifiying how modules are plugged together to form an algorithm).
  • Start tuchulcha(.exe on Windows) and load a .wrp file to look at the algorithm details.
  • Klick on individual modules to see the parameters and browse the inline documentation for each module to understand the parameters.
  • Klick on the play button to run the algorithm.
  • Optionally change filenames of the examaple file parameters in the FileReader modules to see what the algorithm does with your data!

Building your own plugins

In case you want to implement a new model, you need can do this in a maximum of four hours. (Prerequisites are knowledge in C++ and your favourite programming environment).
Once you did this the first time, *each new module definition and creation takes around 5-10 minutes! *

A step-by-step tutorial on how to create a new plugin can be found in the [PluginGuide].

  • First, experiment with existing modules (see above) to get a feeling what charon is about.
  • In case you do not know much about standard tools such as CMake, read the Developer Beginner Guide.
  • In case you would like to build the project on your own, read the Quick Build Guide and the Build-FAQ.
  • If you want to (or need to, if you are our student ;D) contribute your new modules later on, read the Coding Conventions first!
  • Think of a simple plugin. We suggest to write a Thresholder, which takes an input image and sets all image intensities above a threshold (specified as parameter of the module) to one. The output image should be made available as so-called output-slot. Read the [PluginGuide] for a Tutorial.

Please drop us an email and tell us about your first experiences (danield# kondermanna# iwr.uni*minus# heidelberg.de)!

More detailed information:

Documentation, Module and Application References

The doxygen documentation and manpages of the applications shipped with charon-suite may be read online:

A synopsis of the existing charon modules with their input/output slots and parameters is available online:

Parts of Charon-Suite

Component Description
Charon-Core (doc) Basic framework for module management
Charon-Utils (doc) Basic Image manipulation and processing modules such as file reading, writing and display
Charon-Flow (doc) Optical flow estimation modules
Argos Advanced image viewer
Tuchulcha (doc) Graphical configuration/workflow editor for algorithm prototyping
TemplateGenerator Software assistant to set up module code templates
Hekate Feature Detection, 3D Reconstruction and Stereo modules


The project is released under the conditions of the LGPL.


Wiki: BuildGuide
Wiki: CodingConventions
Wiki: PluginDevFAQ
Wiki: PluginGuide
Wiki: argos
Wiki: charon-core
Wiki: charon-flow
Wiki: charon-utils
Wiki: hekate
Wiki: template-generator
Wiki: tuchulcha