Planned Features

Work is currently underway to release the following features in upcoming versions of gerbil:

  • Re-write of Self-organizing Map and edge detection (available in git)
  • Better usability for labeling tasks (available in git)
  • Endmember extraction and spectral unmixing (long-term)
  • Denoising (long-term)

Feel free to send feature requests via email or online. See also our ideas for ESA SOCIS.

Previous Releases

Release 1.0b, December 02, 2013

A major update that had changes all around the software and introduced fast mean shift, false-coloring methods and vast rendering speedups amongst other things.

Release 0.4.0, August 18, 2012

This release brings more and better segmentation functionality, compatibility with current libraries and compilers and a variety of other improvements and bug fixes.

Unsupervised segmentation:

Gerbil now comes with a module for mean shift clustering. It can be used in the GUI (enable the dock window using the button on the right of the toolbar) or via the command line interface. The operation is slow, but the resulting labeling can be saved for later use. The method implemented is Fast Adaptive Meanshift by Georgescu et al.

Graph-based segmentation:

The graph-based supervised segmentation is now even more powerful by employing similarity metrics from spectral matching. It also supports a SOM-based similarity measure (currently only available via command line). The method implemented will be presented at ICIP 2012.

Also, the code underwent great refactoring and restructuring. The power watershed method works better due to proper handling of non-discrete weights.


  • Reading RGB images fixed for OpenCV 2.4. Note that OpenCV 2.4.0 has other critical bugs and you need version 2.4.2 instead.
  • Compiler errors with newer g++ versions fixed.
  • OpenGL build issues in some environments (including Windows and OS X) fixed.

Build system:

The build system was rewritten and has now a much simpler, cleaner design. Binarys can now be found directly in the “bin” directory within the build path. An option to the script was added to enable non-rpath build.

Other new features:

  • user can dynamically interpolate image bands (reduce number of image bands)
  • multi_img::write_out now writes 16 bit data
  • multi_img copy constructor with cropping along spectrum
  • multi_img transpose and flip

Other bug fixes, code improvements:

  • SSE optimization for L2 distance
  • bugfix in image dimensions when reading labels, seed points
  • bugfix in write_out for metadata
  • bugfix small memory leak in reading files
  • bugfix in Gaussian blur function
  • hard exit when vertex buffer objects not available
  • fixes for compiler warnings
  • source tree cleanup (delete unused files)

Release 0.3.0, April 03, 2012

This release is an important step for Gerbil to be used in productive environments. Drawing speed is increased by magnitudes, meaning that Gerbil runs smoothly on much more machines now. You can now inspect images of higher spatial resolution without long delay or lock-up problems. Second, drawing quality has improved significantly, especially when multiple labels are used during the session. Gerbil is much more beautiful now, and by that gives a more useful depiction of the spectral distribution in the image. To make this possible, the minimum Qt version requirement had to be bumped; note however that Gerbil will be even faster if you use Qt 4.8, as compared to Qt 4.7. An overall polish of the software, mostly in respect to its user interface, accompanies aforementioned significant improvements. Gerbil is now ready for new analysis features to be introduced in the next release!

Full list of changes:

Library compatibility:

  • minimum Qt version requirement is now 4.7
  • workaround for bug in OpenCV 2.3.1 that made Gerbil lock-up on startup

Drawing improvements:

  • draw with vertex buffer objects (huge speed gain!)
  • vectors are drawn in random order to avoid different spectral signatures, labels interfere with each other
  • highlights always stay in foreground (using depth buffer)
  • automatically draw w/o antialiasing during mouse interaction
  • automatically draw reduced view during resize operations (smooth resizing)
  • reduce redundant drawing during startup and folding of viewports

New features:

  • screenshot functionality
    • use <CTRL>+’s’ to take a screenshot of whole window
    • use ’s’ to take a clear (no highlights) screenshot of a single plot
  • drawing can be done w/o antialiasing for speedup (press <SPACE> to toggle)
  • spectral distribution view and spectral gradient view can be folded in
  • user-selectable transparency value of label/seed point coloring
  • keyboard shortcut for drawing of means/bin centers moved from <SPACE> to ’m’


  • better error handling on loading/saving labeling/seed files
  • bugfix for loading binary labelings, improvement on pseudo-binary labelings
  • bugfix for reading non-square .lan images
  • bugfix: prevent segfault in a very rare, unpractical scenario
  • bugfix: would overwrite variable descriptions

Smaller GUI improvements:

  • viewports don’t show highlight when inactive
  • several window layout/spacing improvements
  • text on graphseg go button
  • nice background pattern for disabled views
  • don’t disable full dockwidgets, only their contents

Smaller background improvements:

  • qgerbil accepts labeling file as optional second argument on the command line
  • automatically add .png extension if none given in file save dialog
  • less memory consumption during spectral gradient creation
  • better method of determining axis legend width
  • lets CMake build in Release type by default

Release 0.2.0, February 04, 2012

Two important new functionalities are introduced in this release. First, gerbil now comes with a module for multispectral edge detection. It is the implementation of the method described in > Jordan, Johannes; Angelopoulou, Elli. Edge Detection in Multispectral Images Using the N-Dimensional Self-Organizing Map. 18th IEEE International Conference on Image Processing (IEEE ICIP2011), Brussels 11.09.2011-14.09.2011, pp. 3181-3184.

Second, gerbil now provides a flexible command line interface. It allows to run algorithms in a batch, which is very valuable for benchmarking purposes. Currently, graph cut segmentation and edge detection commands are available. Other processing tasks that are currently available via the GUI will be added soon. Please note that edge detection functionality is only available through the command line interface.

Full list of changes:

  • added edge detection functionality (available through command line, not GUI)
  • added command line interface to access edge detection, graphcut segmentation
  • fixed compilation issues
  • factory for similarity measures, fix euclidean distance (unused before)
  • code cleanups

Release 0.1.5, March 02, 2011

This release makes gerbil more useful for common tasks and enlarges its scope. You can now import and export labeling images. In addition to the existing range selection tools and graph cut segmentation, this makes gerbil a powerful tool for labeling of multispectral data. The labeling images can consist of arbitrarily colored pixel labels. Newly introduced handling of data normalization and other usability enhancements greatly facilitate the visual analysis of image data. Landsat images (.lan format, see e.g. here) are now supported for reading. Also many bugs were fixed, the internal API is more powerful and better documented.

Full list of changes follows.


  • import and export of labeling images with free choice of label colors
  • data normalization:
    • determine observed data range (or for fraction of the data)
    • rescale data range, clamp data range
  • added several new similarity measures for multispectral data (not in use yet)
  • various type fixes
  • Windows installer fixes: missing OpenCV .dll file, wrong source tree structure


  • importer for Landsat images (.lan)
  • gaussian blur
  • fast direct pixel cache access
  • export into a cv::Mat (which now allows arbitrary channel amount)
  • explicitely store if whole image is untouched (anydirt)
  • fix in reset_pixels() if number of bands changes
  • fix: range correction
  • fix: theoretical range of spectral gradient
  • fix: xyz representation of 0-response pixels
  • fix: rgb/bgr handling
  • enforce cloning on mat import
  • re-organization of implementation (between vole and gerbil)
  • more extensive doxygen documentation


  • important fix in power watershed segmentation (geodesic weights)


  • import of seed image for supervised segmentation
  • labeled y-axis in viewports
  • dynamically growing label list
  • tooltips on all ui elements
  • better organization of dock windows, dock window menu exposed
  • yellow highlight is now fully opaque
  • better handling of large band amount in x-axis labeling
  • better default window proportions, dock window resize handling
  • fix: viewport activation after limiter menu use
  • fix: viewports get always active when you click on them
  • fix: inconsistency in band selection
  • small ui fixes
  • print usage only on unix

Release 0.1.2, December 09, 2010

This release makes it possible to use gerbil with the fresh OpenCV 2.2 release and also all recent versions of the Boost libraries.

Please note: It is not compatible with OpenCV 2.1 anymore. Use 0.1.1 instead! It has the same functionality.

Release 0.1.1, December 02, 2010

This release features various updates to previous and initial version 0.1.0, namely:


  • Windows installer available
  • proper detection of opencv in build system. enables win32 Debug build.
  • fixes for msvc compiler warnings
  • fix 64 bit compiler warnings
  • some variable type fixes
  • add similarity_measures module
  • updated README, documentation


  • extended multi_img for creation of synthetic images
  • write_out(): create a meta file (.txt) as well
  • spec_rescale(): added method to interpolate bands in multi_img
  • expose functionality to convert single pixel to sRGB


  • better interface
  • probability map fixed
  • free choice of distance function (similarity measure)
  • currently working: l1, l2, linf norm


  • interface cleanup between GUI classes
  • bugfix graph segmentation UI (geodesic distance switch did not work)
  • default alpha 50%
  • better drawing
  • new feature: draw vectors in rgb

GUI / graphseg:

  • use same distance norm as in Couprie et al., PAMI 2010, per default