Strange Octave value in SIFT algorithm?

c++, computer-vision, image-processing, opencv, sift

Solution

Just came across this link.

It seems like the `octave` value for SIFT keypoints needs to by "patched":

keyPoint.octave = keyPoint.octave & 0xFF;

Problem

I am using sift algorithm in opencv code to get descriptors and keypoints from images.My code is ``` Ptr<IplImage> image; vector<KeyPoint> keypoints; OutputArray des; Feature2D *descriptor_type = new SIFT() Mat image_mat(image); (*descriptor_type)(image_mat,noArray(),keypoints,des,false); ``` Here I can get the keypoints of the image in vector < KeyPoint > .After that,I want to get the Octave of each KeyPoint for more details .But when I cout each keypoint octave value for one image,it seems so strange that I want to confirm whether they are right. ``` for(int i=0;i<keypoints.size();i++) { cout<< (keypoints[i].octave) <<endl; } 9765375 9765375 2621951 8323583 13763071 6488575 12845567 721407 3604991 12321279 9568767 7406079 8585727 4653567 7799295 7799295 5112319 10486271 9961983 6226431 1245951 ``` and if I change SIFT algorithm to SURF algorithm,it will be OK and seem right. ``` 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 1 0 0 1 0 ``` So I want to ask whether the calculation of Octave value in SIFT algorithm is right in opencv?

Original source