the function "getPointOctave" in surf.cpp is wrong (Patch #1503)


Added by foelin - over 13 years ago. Updated almost 13 years ago.


Status:Cancelled Start date:
Priority:High Due date:
Assignee:Vadim Pisarevsky % Done:

0%

Category:features2d
Target version:2.4.0
Affected version: Operating System:
Difficulty: HW Platform:
Pull request:

Description

the function getPointOctave(...) is used to compute the octave in which the keypoint was detected. In OpenCV 2.3.1, this function gets wrong answer.
The reason is that it starts the search from octave=1 to octave=nOctaves-1, thus it miss the first octave(octave=0). Since the layer=0 is not used to detect the keypoint, the layer search also should be from layer=1 to layer=nOctaves.

The wrong code in OpenCV 2.3.1 is:

1 for( octave = 1; octave < params.nOctaves; octave++ )
2        for( layer = 0; layer < params.nOctaveLayers; layer++ )
3        ...

And the right code should be:
1for( octave = 0; octave < params.nOctaves; octave++ )
2        for( layer = 1; layer < params.nOctaveLayers+1; layer++ )

Associated revisions

Revision 3e91350a
Added by Andrey Pavlenko over 11 years ago

Merge pull request #1503 from ilya-lavrenov:ocl_arithm

History

Updated by Alexander Shishkov about 13 years ago

  • Description changed from the function getPointOctave(...) is used to compute the octave in which the k... to the function getPointOctave(...) is used to compute the octave in which the k... More

Updated by Alexander Shishkov almost 13 years ago

  • Tracker changed from Bug to Patch
  • Priority changed from High to Normal
  • Target version deleted ()
  • Description changed from the function getPointOctave(...) is used to compute the octave in which the k... to the function getPointOctave(...) is used to compute the octave in which the k... More

Updated by Alexander Shishkov almost 13 years ago

  • Priority changed from Normal to High

Updated by Alexander Shishkov almost 13 years ago

  • Assignee deleted (Maria Dimashova)

Updated by Vadim Pisarevsky almost 13 years ago

Hi! In the latest SVN version getPointOctave() has been removed; now both octave and the layer and encoded as bit-fields in KeyPoint::octave.

  • Status changed from Open to Cancelled
  • Assignee set to Vadim Pisarevsky

Updated by Alexander Shishkov almost 13 years ago

  • Target version set to 2.4.0

Also available in: Atom PDF