Deformation and Light Invariant Descriptor

This website is no longer updated. Please visit my new website.

DaLI descriptors are local image patch representations that have been shown to be robust to deformation and strong illumination changes. These descriptors are constructed by treating the image patch as a 3D surface and then simulating the diffusion of heat along the surface for different intervals of time. Small time intervals represent local deformation properties while large time intervals represent global deformation properties. Additionally, by performing a logarithmic sampling and then a Fast Fourier Transform, it is possible to obtain robustness against non-linear illumination changes. We have created the first feature point dataset that focuses on deformation and illumination changes of real world objects in order to perform evaluation, where we show the DaLI descriptors outperform all the widely used descriptors.

This research consisted in improving the computational efficiency, improving performance and looking at more specific details at why this descriptor is able to obtain results. We make both the descriptor code and the dataset presented in the paper publicly available. For more details please refer to the journal paper.

Flowchart of the process of creating the DaLI Descriptor

The DaLI is a descriptor built by embedding the image patch as a surface and then using the Heat Kernel Signature to calculate the heat diffusion along the surface. In order to become invariant to illumination changes, logarithmic sampling along with the Fast Fourier Transform is employed. A flowchart of how the descriptor and its compressed (PCA) variant is constructed is shown above. The percentages indicate the computation time spent on each step. An example of a DaLI descriptor is shown below.

  • Frequency 1
  • Frequency 2
  • Frequency 3
  • Frequency 4
  • Frequency 5
  • Frequency 6

DaLI Dataset

  • Ref.
  • Target
  • LIOP
  • SIFT
  • DaLI
  • DaLI-PCA

We make the full dataset that appears in the paper available to anyone who wishes to use it. We include the code to reproduce the main figures in the paper. This dataset consists of 192 unique 640x480 grayscale images corresponding to 12 different objects. Points of interest obtained by the Difference of Gaussians (DoG) detector are provided and matched across different pairs of images. We provide three different evaluations:

  1. Deformation only (test_deform.m)
  2. Illumination only (test_illum.m)
  3. Both deformation and illumination (test_both.m)

To reproduce the results in the paper start by downloading and unpacking the dataset:

tar xvjf dali_dataset.tar.bz2
cd dali_dataset

Next run matlab and from matlab call:

test_both % or test_deform, test_illum depending on what you wish to evaluate

This will extract the patches and start evaluating different descriptors. However, it will not evaluate the DaLI descriptor as it is unable to be run under matlab due to library conflicts. In order to also compute the DaLI descriptor please run the same command from octave after uncommenting main_desc_dali in init_final_desc.m. Note that once the results are obtained they can also be loaded under matlab.

In order to calculate the DaLI-PCA descriptor it is necessary to compute the DaLI descriptor first, then run the dalipca.m script from matlab. This will generate the cached descriptor files for the descriptor. It is then possible to uncomment main_desc_dalipca in init_final_desc.m which will allow obtaining results with both matlab and octave.

To summarize all the steps:

  1. Download and unpack dataset
  2. Run test_both, test_illum and test_deform from matlab
  3. Uncomment main_desc_dali from init_final_desc.m
  4. Run test_both, test_illum and test_deform from octave
  5. Run dalipca
  6. Uncomment main_desc_dalipca from init_final_desc.m
  7. Run test_both, test_illum and test_deform from matlab

As we know this is fairly complicated we also provide the results files for all the descriptors, which allow you to directly uncomment all the descriptors in init_final_desc.m directly after unpackaging this. It will also allow you to avoid having to spend many hours computing descriptors.

To compare against your descriptor, please look at descriptors/main_desc_dali.m as an example of how to create the descriptor structure. It is then as simple as adding a new line to init_final_desc.m.


  • All results in the paper were obtained on a x86_64 machine running Ubuntu 12.04 LTS using Matlab (R2012a) and Octave 3.2. On other platforms and software versions results may differ from the paper.

  • The GIH descriptor is not provided as the only available implementation can only be run on the 32 bit Windows operating system.

  • There is an additional deformation level that does not appear in the paper and is disabled by default.

Video Sequence

We have also evaluated the descriptor on two real world sequences taken from:

Francesc Moreno-Noguer, Pascal Fua
Stochastic Exploration of Ambiguities for Nonrigid Shape Recovery
IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013

The results are shown in the paper. As a supplement to the paper we show the full sequence with the relative improvement of DaLI over DAISY below:

Do not hesitate to contact me for any questions and inquiries.



  • DaLI: Deformation and Light Invariant Descriptor
    • DaLI: Deformation and Light Invariant Descriptor
    • Edgar Simo-Serra, Carme Torras, Francesc Moreno-Noguer
    • International Journal of Computer Vision (IJCV), 2015


  • Deformation and Illumination Invariant Feature Point Descriptor
    • Deformation and Illumination Invariant Feature Point Descriptor
    • Francesc Moreno-Noguer
    • Conference in Computer Vision and Pattern Recognition (CVPR), 2011

Source Code

  • DaLI
  • ceigs