首页 > 解决方案 > 如何为 SIFT 关键点 OpenCV 获得正确的 Octave

问题描述

我正在尝试使用 OpenCV SIFT 关键点检测。问题是我得到了奇怪的八度音阶。我查了一下,结果发现它是一组音阶、层和八度音阶。

所以我在这里添加了拆包

void unpackSIFTOctave(const KeyPoint& kpt, int& octave, int& layer, float& scale)
{
  octave = kpt.octave & 255;
  layer = (kpt.octave >> 8) & 255;
  octave = octave < 128 ? octave : (-128 | octave);
  scale = octave >= 0 ? 1.f/(1 << octave) : (float)(1 << -octave);
 }

问题是现在,我得到从 -1 到 4 的值。我想要 3 个八度音阶,而nOctaveLayers参数没有帮助。有谁知道如何从 0 --> 2 获得八度音阶?

标签: c++opencvcomputer-visionsift

解决方案


推荐阅读