gpt4 book ai didi

sift - 筛选中的欧氏距离

转载 作者:行者123 更新时间:2023-12-02 05:26:09 27 4
gpt4 key购买 nike

我正在尝试为我的项目实现 SIFT,我已经掌握了关键点。我尝试使用同一图像的所有关键点获取图像的每个关键点的欧氏距离,但按比例缩小。碰巧查询图像的 1 个关键点与数据库图像中其余关键点的距离具有非常相似的值。我如何选择最近的邻居以及我如何确定这是正确的匹配。

欧几里德距离计算为 ,对于 i=1 到 128 sqrt[(pi-qi)^2] 对于 p = 1 到数据库中的关键点数。

任何关于如何进行的想法将不胜感激

最佳答案

我猜你正在尝试使用 SIFT 进行图像检索,因为你提到你有一个图像数据库,你正在将查询图像与之进行比较。

您应该意识到,将查询图像中的每个 SIFT 描述符向量与图像数据库中的每个其他描述符向量进行比较是不可行的,因为这将需要指数数量的比较。目前流行的使用SIFT描述符进行图像检索的方法是从文档检索中借用的词袋模型。

首先,你想要做的是给定一个图像,使用一个可以与数据库中其他图像的向量进行比较的单个向量来表示它。这与您当前的方法不同,其中每个图像都有许多 SIFT 描述符向量(每个关键点一个)。在词袋 (BOW) 模型中,您首先需要创建所谓的视觉密码本(或有时称为字典)。你这样做:

  1. 从您的图像数据库中选择有代表性的图像
  2. 从 1) 中的图像中收集所有 SIFT 描述符
  3. 使用 K 均值将这些描述符聚类到 k 个聚类中其中 k 是您设置的数字。这些集群的中心是“视觉词”,即您的数据库中的代表性特征图片。
  4. 对于数据库中的每个图像,您要创建一个矢量 v它计算字典中不同特征出现的频率,因此每个图像都将由以下形式的向量表示:<# times feature 1 in dictionary occur, ... feature 2 in dictionary occur..., ..., ... feature k in dictionary occur>即,一个 k 维向量。您可以通过以下方式获取图像的矢量:

    4.1。提取图像中的SIFT描述符

    4.2。对于图像中的每个 SIFT 描述符,在码本/字典中找到最近的聚类中心(使用欧氏距离)并增加其在向量中的相应计数 v 1.

    例如,您有一个 5 聚类字典(例如,k = 5),并且一个图像有 3 个 SIFT 描述符。其中2个最接近第一个聚类中心,1个最接近第5个聚类中心。你的矢量 v将是 v = <2, 0, 0, 0, 1> .自 v计算代表向量在图像中出现的次数,v有时也称为频率直方图。

    在此阶段,您可能希望通过将每个条目除以所有条目的总和来对直方图进行归一化,以便可以比较所发现的 SIFT 关键点数量非常不同的图像。

  5. 现在,要比较 2 个图像,您比较这个新向量 v而不是 SIFT 描述符本身。可以使用欧氏距离(也称为 L2 距离)进行比较。已发现使用卡方距离或 Hellinger 距离可能会改善结果。请参阅本 page 中描述的详细信息.

基本上,将图像中的 SIFT 描述符本身与另一个图像中的 SIFT 描述符进行比较是不可行的,因为您最终会在图像中得到多个 SIFT 描述符,并且它们的数量会根据您提取它们的方式而变化。

您想要的是用于比较的通用基础,这在 BOW 模型中通过将描述符与通用代码簿/字典相匹配来完成,该代码簿/字典说明了图像数据库中的代表性特征。

关于sift - 筛选中的欧氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357352/

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