Our group homepage | ViBE-Z | My homepage

3D Landmark detector using Kernel-weighted Equivariant Filters


  • This package includes the implementation of the 3D Landmark detector using Kernel-weighted Equivariant Filters[1]. It is part of the "Virtual Brain Explorer for Zebrafish"[2].

    It is distributed for non-commercial use under the GNU General Public License, v3.0.

  • Current release (the first version) and test data:

  • The program has a general design. However, we have only tested it on our own specific application. We hope that this open source release can allow one to use/modify this detector for their own applications.

How to compile

  • The package is developed and tested on Ubuntu 10.04 X86_64.
    Built binaries can be found in "/x86_64-bin".

  • The package is build on some other free software:
    Blitz++ | HDF5 software | FFTW v3.2 | VLFeat v0.9.13 | GSL - GNU Scientific Library

    To ease the dependency management, please install them from the "/EXT_lib" folder.
    To use the model training part, a Matlab installation is currently required.

  • How to compile:
    0. Check the prerequisites in "/EXT_lib/Readme.txt"
    1. run "install.sh" in "/EXT_lib"
    2. run "install.sh" in "/LMB_lib"
    3. go to "Landmark3D/build", (edit the paths if necessary) and run "make"

How to use


  • /Matlab/demo.m : how to use the toolbox when you have the data in Matlab.
    It is recommendable as our programs use HDF5 file format, which is well supported in Matlab.
  • /small_test.sh : script to run with the test data given in "/rawTestData".
  • /script_for_our_experiment.sh

Test data

The test data includes two zebrafish which are very similar. One is purposely rotated to demonstrate the rotation-invariance of the method. The test data folder should be put into the package root path.


  • The data management is based on HDF5 file. The HDF5 file is well supported in Matlab.
  • The data hierarchy (groups and datasets) has a default setting as it is in ViBE-Z, but most of it is configurable through the command-line interface.
  • The provided test data (at "/rawTestData") is an example of the input to this toolbox, in the ViBE-Z pipeline. The "raw" image is stored in dataset "/step4/fused/channel0".
  • The real-world size is always recorded in micrometer. The image voxel size has to be stored in the attribute "element_size_um" attached to the image dataset.
  • To use the training function, the ground-truth landmark positions can be provided as a text file for each training image, see "/rawTestData/fish1_landmark.txt" as an example. Otherwise, the program will try to read the landmark information from the hdf5 files. (Check the command-line parameters for more detail).
For any bug report or improvement suggestion, please email at Kun Liu