Menu

Home

Ivo Ihrke

What is shiver?

Shiver is an image processing program providing the ability to perform algorithms on one or more images.
The user selects a frontend like the command line or a QT-based graphical user interface. Depending on the frontend different work flows become more appropriate:

  • The console frontend can be used, if no X11 server is available or a large number of images have to be processed.
  • The QT Gui allows for intuitive work and test of filters. It allows for example pixel picking and a comfortable way to compare different processed images.

Requirements

You can find shiver at http://sourceforge.net/projects/shiverfork.

  • needs

    • QT4 (tested with QT4,8, Debian Jessy)
    • libOpenCV
    • libOpenEXR
    • zlib
    • libpng
    • libnetpbm
    • libtiff
    • libgif
    • libjpeg
    • dcraw (import raw formats)
  • if documentation is required

    • doxygen

Quick install guide:

Installing the required software

Install the required libraries (development versions)

apt-get install libqt4-dev libqt4-core libqt4-gui
apt-get install libopencv-dev
apt-get install libopenexr-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
apt-get install libnetpbm10-dev
apt-get install libtiff5-dev
apt-get install libgif-dev
apt-get install libjpeg-dev
apt-get install doxygen

The above was tested on Debian Jessy, on Ubunto 12.04, also install

apt-get install libcv-dev
apt-get install libcvaux-dev
apt-get install highgui-dev

if OpenCV detection/compilation fails.

For dcraw: Download, compile and install the program in a directory contained in $PATH:
URL: https://www.cybercom.net/~dcoffin/dcraw/
e.g.

 cd  /tmp
 wget https://www.cybercom.net/~dcoffin/dcraw/dcraw.c
 gcc -o dcraw -O4 dcraw.c -lm -DNODEPS
 sudo cp dcraw /usr/bin/

Compiling shiver

Create a new projects directory in your home directory (if not already present):

cd ~ && mkdir projects && cd projects

Check out the latest version using svn:

svn checkout svn://svn.code.sf.net/p/shiverfork/code/ shiverfork-code

Create a build directory (for out of source builds) into your shiver directory and go into it:

cd shiverfork-code && mkdir build && cd build

Run cmake pointing to the directory containing shiver.cpp e.g. ../shiver:

cmake -DCMAKE_BUILD_TYPE=release ../shiver

Run make scripts:

make

An executable called "shiver" should exist in the build directory afterwards.

Updating the repository

If you want to update your local copy to the latest version, you just have to run (in ~/projects/shiver):

svn update

Building the documentation

If you want to build the documentation, go to the build directory and run

make doc

This will generate html and latex directories within the build directory.

firefox html/index.html

or

cd  latex
make

''Note:'' the documentation needs to be cleaned and improved.

Installing shiver in a different location:

Copy the "shiver" executable and the "plugins" directory to your local installation path.

Running shiver:

Shiver provides two different interfaces: An intuitive QT window and a command line interface. One can perform image modifying routines in each of them. One can also save Filter configurations in one interface and use them in another.

The most important flags are:

  • -F frontend selects a specific frontend. Usually there are ''QT'' and ''Console'' available
  • --FFiltername enables a filter, which doesn't take arguments
  • --FFiltername="Arguments" enables a filter which takes arguments
  • -C Foochain enables a filter chain called "Foochain"
  • -o /path/image%d.ext applies a multi-image processing routine in '''Console frontend'''
  • --saveMarkers saves files containing markers which have been added via filters previously. (Only Console frontend)

A common console execution of shiver looks like this:

./shiver -FConsole --FThreshedTag ~/images/image.png ~/images/output_image.png

Or like this:

./shiver -FConsole --FThreshedTag --saveMarkers ~/images/imageslide/image*.png -o ~/images/tracked_imageslide/image%d.png

Or just (GUI)

./shiver

or

./shiver <filenames>

Shiver (QT Frontend)

The QT frontend of shiver provides a scientific HDR image viewer. It allows you to view several images in parallel.
Shiver makes it easy to compare a set of image to each other. To achieve this, there are several Features implemented:

  1. Pixel picking: The value of a specific pixel is shown when the user hovers the mouse arrow over it. This will be applied on all images, so one can compare the pixel value at a specific position within all images. Furthermore, there exist a marker which allows user to fix the picked pixel. This marker will be activated and dragged via the middle mouse button. The right mouse button toggles this marker.
  2. Connected viewing properties: The image properties in terms of position, zoom factor and rotation are connected to each other. So when changing the region of interest of one image, the other will do so too. When this behaviour is not desired for a specific image, one may click on the chain symbol at the bottom right corner of the image subwindow.
  3. Histograms: A histogram for each image allows user to setup quantization properties of an image. The user can drag the complete range or change the minimum and maximum. OpenGL shader visualize it immediately. The histogram has also a context menu wich allows the user to decide between some range presets as well as different mapping such as gamma based and logarithm based.
  4. Channel activation: By clicking on the color value of a specific image color, the corresponding channel can be activated and deactivated.

The default interface is the QMdiArea. One can control it via the Subwindow menu entry at the top. A tabbed image interface is also accessible from here.

Shiver also implements a filter interface. I will implement arbitrary filters in the course of time (for example Tone mapping operators, Resize, Corner/Edge detection and Thresholding). All of such filters will be available via command line interface as well. On top of that, they can be shortcutted by user defined buttons via the top menu entry Settings->Buttons. Each applied filter will be appended to a list of filters.

A global context menu can be activated by pressing the right mouse button at the top right corner of the program window. This context menu allows to toggle each dialog in the program window.
Besides the mentioned dialogs - the histogram and the user defined buttons - the global context menu toggles some additional widgets which enhance the productivity:

  1. Filter List: The list of filters can be made visible by selecting "Filter" in the global context menu.
  2. Filter Config: The configuration dialog for any selected filter.
  3. Configurations: Filter lists can be saved as "configurations". These configurations can be applied in later sessions again.
  4. Layer selection: Some filters create "Layers". These layers save points and lines in subpixel accuracy. Here, they can be activated or deactivated for viewing respectively.

Finally a list of some short cuts:

*'''Backspace (<-)''': Setting viewing properties of given image (and all other connected images) to default parameters.

*'''Backslash ()''': Setting histogram limits to "Fit exactly".

*'''1,..,9''': Select image at tab position 1,..,9, when being in tabbed image interface.

*'''Alt + 1''': Switch to previous image.

*'''Alt + 2''': Switch to next image.

*'''F5''': Reload image.

What is a filter in shiver?

Shiver provides several filters. Using filters is a common way to perform image processing algorithms on an image. One can store filters into a chain, called "filter chain". These filter chains are accessible via all available frontends. So one can design filter chains via the QT Gui and perform them via the command line, without using a graphical environment afterwards.

Developing filters for shiver

Download [[attachment:shiver_plugins.tbz2]] and extract it.

Ensure that

  • either a working source directory of shiver called 'shiver' is located in ~/projects and a build directory called 'build' is located in ~/projects/shiver
  • or you installed shiver either in /usr or in /usr/local
  • or you change the search behaviour of the FindShiver.cmake contained in the corresponding filter directory

Create a build directory for the 'shiver_plugins' environment, preferably in shiver_plugins:

mkdir build && cd build

Run cmake with a path pointing to 'shiver_plugins' directory:

cmake -DCMAKE_BUILD_TYPE=debug ../

Run make:

make

Run make install. Consider permissions at install directory ( e.g. by sudo ).

make install

Finally run your shiver executable. The filter should be selectable.
Now you can change the contents of shiver_plugins to develop new filters.


More about git: http://git-scm.com/about

More about cmake: http://www.cmake.org/cmake/project/about.html

Welcome to your wiki!

This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: [SamplePage].

The wiki uses Markdown syntax.

Project Members:


MongoDB Logo MongoDB