EPFL > BIG > Teaching > Student Projects > Completed Projects > Virginie Uhlmann |
CONTENTS |
Student Projects |
Virginie Uhlmann | Semester Project |
Life Science, EPFL | June 2010 |
The aim of this project was first to implement the algorithm of Scale Invariant Feature Transforms (SIFT) in JAVA as a plugin for ImageJ.
SIFT (David G. Lowe, 2004) is a robust method used to detect features (called "keypoints"), allowing transformation
of an image into a "collection of local feature vectors". The algorithm consists of keypoint detection and
computation of a local image descriptor. SIFT appears to be a very efficient way to detect keypoints on an image,
but it contains some mysterious steps in its algorithm.
The detection part was implemented, but not the descriptor.
The plugin propose an interface where the user can set the parameters used in SIFT and can choose
which output to display. As SIFT relies on a few thresholds that are not well defined, some of the
output can be used to tune the thresholds in order to find more or less keypoint on the picture of interest.
Then a small comparison between SIFT and two other keypoint detection algorithms (SURF and Harris
corner detector) was made based on 3 different pictures (one with many details, one with very few
edges and corners, one with illumination changes). The conclusions from this comparison and from
other results found in the literature were that SURF detects very few keypoints (but is the fastest
method), Harris detects a lot of keypoints (but is less refined that SURF and SIFT) and SIFT lies
between the two (it is more refined due to some keypoint elimination steps, but is slower).
Eventually the last part of this project aimed to understand how wavelets can be used to build a
SIFT-like descriptor that will be well-defined mathematically. To do so, a Matlab code was written
in order to understand how a complex wavelet can be used to detect a discontinuity on a signal in 1D.
We observed that the modulus of the complex wavelet transform of the signal can be used to localize
keypoints since it peaks at keypoints locations. On the other hand the phase might be used to determine
in which direction from a given point the keypoint can be found.
The conclusion that can be drawn from these observations is that the modulus and the phase of a
complex wavelet transform might be used for keypoint localization, whereas some other data obtained
when using the Riesz-Laplace wavelet transform might be used to build a keypoint descriptor.
It seems then possible to build a SIFT-like feature detector using wavelet theory.
Fig. 1: Keypoint detection on a picture (source: wikipedia)
© 2022 EPFL • webmaster.big@epfl.ch • 11.08.2022