gpt4 book ai didi

opencv - SIFT 描述符背后的概念

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:34 24 4
gpt4 key购买 nike

我读过一些关于 SIFT 的文献,也看过一些视频。我了解 SIFT 背后的大部分概念,但让我感到困惑的是关于 SIFT 描述符的一件事。

在筛选中:

  • 我们找到了一个关键点
  • 我们在关键点周围取 16 x 16 像素。
  • 16 x 16 block 分成 16 个 4 x 4 block
  • 为每个 4 x 4 block 计算一个 8 bin 直方图
  • 因此,我们得到此关键点的 4 x 4 x 8 = 128 维 SIFT 描述符。

image

我的困惑:

  • 比方说,我的图像有 50 个关键点。
  • 我收到的这张图片的 SIFT 描述符(即 Mat 描述符)有 128 列1 行.....为什么? ??
  • 对于单个关键点,我有 128 列1 行 那么如果我得到 50 个关键点,那么它不应该是 50 行128 colmuns 矩阵?

最佳答案

opencv 的 2.4.8 源代码说您应该得到 n x 128 描述符矩阵,其中 n 是关键点的数量。您可以看到 calcDescriptors() 通过引用 descriptors 行为每个关键点创建描述符。

static void calcDescriptors(const vector<Mat>& gpyr, const vector<KeyPoint>& keypoints,
Mat& descriptors, int nOctaveLayers, int firstOctave )
{
int d = SIFT_DESCR_WIDTH, n = SIFT_DESCR_HIST_BINS;

for( size_t i = 0; i < keypoints.size(); i++ )
{
// [...]
// some unrelevant code

calcSIFTDescriptor(img, ptf, angle, size*0.5f, d, n, descriptors.ptr<float>((int)i));
}
}

关于opencv - SIFT 描述符背后的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com