SIFT Descriptor Extractor, strange behaviour with non-SIFT keypoints (Bug #1130)
Description
I noticed that there is a strange behavior of the function compute of the of the SIFT Descriptor Extractor. In particular 2 things:
- the class_id member of the Keypoints passed to the function is erased and set to 0. This always happens for SIFT, while for other descriptor extractors the info are preserved.
- the strange thing is that if the keypoints are not extracted with a SIFT feature extractor, then there are always MORE keypoints after the function call (according to the docs it may be the case that some of the keypoints are dropped, but not added).
My version is r5404M and i run some tests with the sample code descriptor_extractor_matcher.cpp
Printing the size of keypoints1 before and after the call of compute will show the problem. (when calling with a feature extractor different than SIFT)
Related issues
related to Bug #1140: Update doc on descriptor extractor | Done |
Associated revisions
fixed erasing class_id and response members in sift (#1130)
History
Updated by Maria Dimashova over 13 years ago
Thanks. The problem with erasing class_id and response members has been fixed in r1130. As regards the increasing size of keypoints, it is not a bug. Rob Hess's SIFT implementation, which are integrated in OpenCV now, duplicates keypoints with several dominant orientations, so the size of keypoints vector can grow. But you are right, this behavior is not documented. I created the ticket #1140 to fix it.
- Status changed from Open to Done
- (deleted custom field) set to fixed