A Comparative Review of Component Tree Computation Algorithms

From LRDE

Revision as of 11:02, 27 November 2013 by Clément Démoulins (talk | contribs) (Created page with "{{DISPLAYTITLE:A Comparative Review of Component Tree Computation Algorithms}} == Dataset == Download [http://www.lrde.epita.fr/dload/olena/maxtree-review/maxtree-comparison...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Dataset

Download the image dataset used in this comparison to bench the algorithms (26 Mb).

On-line application.

Compare the performance of the algorithms on an image of your choice and plot the performance curves.

Demo page url: http://olena.lrde.epita.fr/demos/maxtree_comparison.php

Status

Under development. For now, you can only plot curves and show performance of the algorithms on a pre-defined dataset. Benching the algorithms on your own images is still not possible.

Figures

Some results extracted from the paper.

Res-fig1-crop.png Res-fig2-crop.png

(Left) Comparison of the algorithms on 8-bit images as a function of the size; (Right) Comparison of the algorithms on 8 Mega-pixels images as a function of the quantization.

Res-fig3-crop.png Res-fig4-crop.png Res-fig5-crop.png

(Left, Middle) Comparison of the parallel algorithms on a 6.8 Mega-pixels 8-bits image as a function of number of threads. (Left) Wall clock time; (Middle) speedup w.r.t the sequential version; (Right) Comparison of the parallel algorithms using 8 threads on a 6.8 Mega-pixels image as a function of the quantization.

Source files

You can download the archive with the source code.

Dependencies

The applications rely on those external libraries:

  • Boost
  • libfreeimage
  • Intel TBB

You need a c++ 11 compliant compiler (applications have been successfully built with gcc > 4.7 and icc


Building maxtree executables

> tar xjf maxtree-review.targ.bz2 && cd maxtree-review > mkdir build && cd build > cmake .. > make -C apps/maxtree_comparison

It outputs the following executables:

  • maxtree_serial_hqueue: Salembier (sequential)
  • maxtree_serial_pqueue: Nister (<18bits) / Wilkinson (>18 bits) (sequential)
  • maxtree_serial_berger: Berger et al.
  • maxtree_serial_ufind_wlc: Berger + level compression
  • maxtree_serial_ufind: Berger + level compression enabled if < 18bits
  • maxtree_serial_unfindrank: Berger + rank
  • maxtree_serial_najman: Najman and Couprie
  • maxtree_parallel_hqueue: Salembier (parallel)
  • maxtree_parallel_pqueue: Nister (<18bits) / Wilkinson (>18 bits) (parallel)
  • maxtree_parallel_ufind: Berger + level compression enabled if < 18bits (parallel)
  • maxtree_parallel_unfindrank: Berger + rank (parallel)
  • maxtree_parallel_ufind_line: Matas et al. (parallel)


The binaries are then located in apps/maxtree_comparison. For usage and available options, run appname --help where appname is the name of the maxtree algorithm. $ ./apps/maxtree_comparison/maxtree_serial_berger --help Usage: ./apps/maxtree_comparison/maxtree_serial_berger inputfile Allowed options: --help produce help message --nthread arg (=-1) set number of thread (default: auto) --nbits arg (=8) Set number of bits (default: 8). Quantization of the original is changed. Upper bits are moved left and missing lower bits are generated at random. --ntest arg (=3) set number of runs (default: 3) --sz arg (=0) Set size (number of pixels) (0: original). Resize the image by tiling or cropping the original until matching the number of pixel required. Original ratio width/height is kept.