SIFT算法中的奇异倍频值
Strange Octave value in SIFT algorithm?
我在opencv代码中使用sift算法从图像中获取描述符和关键点。我的代码是
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);
在这里我可以得到向量<之后,我想得到每个关键点的八度音程的更多细节,但当我计算每个关键点的八度音程值为一个图像,它似乎很奇怪,我想确认他们是否正确。>
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
,如果我把SIFT算法改为SURF算法,它将是OK的,看起来是正确的。
0
0
0
0
0
0
1
0
0
0
0
1
1
1
0
1
1
1
0
0
1
0
所以我想问一下,在opencv中,SIFT算法中Octave值的计算是否正确?
刚好看到这个链接。
似乎需要对SIFT关键点的octave
值进行"修补":
keyPoint.octave = keyPoint.octave & 0xFF;
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 到连接组件算法的问题(递归)
- STL算法函数在多个一维容器上的使用
- 读取最后一行代码算法 - c++ 时出现问题
- 括号更改 O(n) 算法
- std::unordered_map 搜索算法是如何实现的?
- 如何使用opencv和c++实现三维sift算法
- SIFT算法中的奇异倍频值