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:
2 Tuchulcha Help Browser
1 Tuchulcha Workflow Editor
4 Tuchulcha with running ArgosDisplay
3 TemplateGenerator
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)!
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 |
License
The project is released under the conditions of the LGPL.