Strange Octave value in SIFT algorithm?

╄→гoц情女王★ 提交于 2019-12-10 16:27:44

问题


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?


回答1:


Just came across this link.

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

keyPoint.octave = keyPoint.octave & 0xFF;


来源:https://stackoverflow.com/questions/16186361/strange-octave-value-in-sift-algorithm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!