Posted by
Stephan Saalfeld on
Sep 30, 2008; 4:29pm
URL: http://imagej.273.s1.nabble.com/Java-SIFT-plugin-for-ImageJ-Question-on-parametage-tp3694919p3694924.html
Hi Xin,
SIFT interest points are blobs of arbitrary size. They are detected by
searching the whole scale space of the image for such points. You can
think about the scale space as shrinking the image continuously. All
blob like structures have at some point the size of exactly one pixel
and this is where they are detected. Obviously it doesn't make sense to
shrink the image smaller than 1 pixel, so the natural limits of the
scale space of an image are the original pixel resolution as the
"smallest scale" and the whole image in 1 pixel as the "largest scale".
That is, allowing some minimal image size larger than 1 pixel would not
detect blobs that are still larger than 1 pixel at this resolution.
Limiting the maximal image size will not detect blobs that are already
smaller than one pixel at this resolution. The explanation at Albert's
page is correct, but here we have a different formulation :)
In detail---the "shrinkage" is "simulated" by Gaussian smoothing and
actual resizing is only performed at doubling of the Gaussian kernel
size. This means that only image sizes of the original image size
divided by a power of two will occur. The "shrinking" between these
steps are in the scale octaves whereas each octave has the mentioned
number of steps. If you are interested in more detail, you can have a
look into the original paper of the inventor of SIFT, David Lowe, which
is very nice to read:
http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdfor have a look at this figure where two exemplary scale octaves are
shown:
http://fly.mpi-cbg.de/~saalfeld/scale_octaves.pngI beg your pardon for not having a comprehensive documentation written
yet. This will happen at some point---I promise!
If you are interested, you could have a look at fiji:
http://pacific.mpi-cbg.de/wiki/index.php/Main_PageIt contains a slightly more mature implementation and some plugins for
further use of the detection results in ImageJ.
Best regards,
Stephan
On Tue, 2008-09-30 at 16:57 +0200, Xin ZHOU wrote:
> Hello, everybody,
>
> Is there anybody who knows a lot about the Java SIFT plugin provided by
> Stephan Saalfeld <mailto:
[hidden email]>?
> I also send this message to Stephan Saalfeld
> <mailto:
[hidden email]> but I need some quick answers to make my
> project move.
>
> I'm using the SIFT plugin to extract the salient points and I played
> with the parameters.
>
> In the "Java SIFT parameters explanation.doc" I find some inconsistency.
> * Steps per scale octave*: Keypoint candidates are extracted at
> all scales between /maximum image size/ and /minimum image size/.
>
> * *Minimum image size*: The Scale Space stops if the size of the
> octave would be smaller than /minimum image size/. *Tip*: Increase
> the minimum size to discard large features (i.e. those extracted
> from looking at an image from far, such as the overall shape).
> * *Maximum image size*: The Scale Space starts with the first octave
> equal or smaller than the /maximum image size/. *Tip*: By reducing
> the size, fine scaled features will be discarded, favoring larger
> features. Larger features are more likely to remain constant
> across serial sections. Increasing the size beyond that of the
> actual images has no effect.
>
> I don't understand why if I enlarger the maximum image size, I'll
> discard the larger features ....
> I presume that the larger features are for the larger scale, right?
> Then larger scale can only be detected in larger window.
>
> I think I just badly understand these two parameters.
>
> Can anyone explain a little bit?
>
> cheers, Xin
>
>