【问题标题】:Cropping keypoints vs. cropping image and finding keypoints裁剪关键点与裁剪图像并找到关键点
【发布时间】:2021-10-27 22:29:32
【问题描述】:

给定一张包含许多项目的图像,其所有边界框都以像素坐标为单位。

我正在尝试提取每个项目周围的区域(周围),使用 AKAZE 计算其描述符和特征,以便相互比较。

但是我意识到这可能太慢了,因为它涉及:

1) 裁剪每个项目以生成许多图像,

2) 对每个图像进行检测和计算以生成关键点和描述符。

另外,为了加快速度,我正在考虑:

1) 调整整幅图像的大小,然后进行一次关键点的检测和计算。

2)然后为了获得特定对象的关键点,我们只需检索与对象位置对应的一组预先计算的关键点。

我的问题是这种方法在功能上是合理的,如果有任何后果?

【问题讨论】:

    标签: opencv computer-vision


    【解决方案1】:

    是的,第二种策略是一个不错的选择。为了有效地做到这一点,您应该在调用 OpenCV 的detectAndCompute(或detect,如果您正在使用它)中提供一个掩码参数。您的蒙版应与您的图像大小相同。在掩码的每个像素中,如果该像素不在至少一个检测区域内,则该像素的值为 0,否则其值为正值(对于 uchar 掩码为 255)。

    事实上,使用第一种策略,您可能会在检测区域的边界处遇到问题,其中可能会遗漏特征点。这是因为特征检测和描述符计算需要处理每个像素周围的一个小像素窗口(在边界处不可用)。要正确处理此问题,您需要在裁剪前扩大检测区域。

    关于效率,您应该知道第二种方法存在开销,即完整图像将在特征检测之前进行一些图像预处理。对于 AKAZE,这是非线性扩散,对于其他如 SIFT 和 SURF,这是图像卷积。这些是构建所谓的图像金字塔所必需的。在您只有少量检测的情况下,第一种策略可能更有效(相对于图像预处理而言,图像裁剪的开销很小)。

    【讨论】:

      猜你喜欢
      • 2022-08-04
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 2022-01-23
      • 2012-12-27
      • 2011-12-15
      相关资源
      最近更新 更多