【问题标题】:training SIFT features in OpenCV在 OpenCV 中训练 SIFT 特征
【发布时间】:2011-10-08 14:57:13
【问题描述】:

我创建了一个小型 SIFT 应用程序,它可以抓取关键点并将其保存到文本文件中。我正在使用它从徽标(例如 AT&T)中获取信息,并使用它与具有该徽标的其他图像进行比较。问题是我的许多图像都有不同的徽标,由于缩放、旋转或照明,它无法识别它。我想知道是否有可能获得一组图像,抓住它的关键点,然后通过某种训练算法运行它以增强检测。

我在网上搜索了训练 SIFT 关键点的方法,但它们都在某种 phd 论文中,涉及所有这些数学算法,老实说,因为我没有学过任何数学,所以这让我很反感上课了。

如果有人有任何建议或链接可以了解培训的工作原理或实施培训需要做些什么,请告诉我。或者,如果有人在没有 SIFT 的情况下有更简单的方法,那么我将非常感谢其他形式的检测。以下是我尝试过的列表:

  • 冲浪
    • 失败,因为它返回无效结果
  • 具有 Adaboosting 的 Haar 特征
    • 我于 2011 年 7 月 11 日开始训练 100 个正模型和 100 个负图像,但到 2011 年 7 月 19 日仍在运行,但失败了
  • 具有和不具有阈值的相同徽标的各种转换的模板匹配
    • 失败了,因为我必须根据无法在图片中检测到任何内容的次数以指数方式创建徽标

提前致谢

【问题讨论】:

    标签: c image-processing opencv image-manipulation computer-vision


    【解决方案1】:

    您可以使用 PCA 来减少维数,然后您可以在从徽标中提取的一组矢量特征上训练某种分类器,例如 SVM。 您也可以使用 BoW(词袋\功能)。 您也可以在“标识识别”上搜索很多可用的材料。

    【讨论】:

    • 我一直认为您不需要 PCA 和 SVM?
    • 我不确定,但en.wikipedia.org/wiki/Curse_of_dimensionality 至少如果你有高维向量,你必须有更多的 SVM 示例。
    • 没错,但谁说在使用 PCA 时需要更少的示例? PCA 所做的只是减少特征向量长度,同时保持向量之间的距离与原始向量尽可能相似(在最小二乘意义上)。由于 SVM(至少使用高斯核)仅使用样本之间的距离,因此 PCA 应该没有太大区别。
    【解决方案2】:

    一个简单的起点是收集几个 AT&T 徽标的 SIFT/SURF 描述符,并在它们上使用FLANN。然后,拍摄一张测试图像,计算描述符并进行范围搜索并确定最近邻距离等,并尝试找出“接近度”的度量。

    【讨论】:

    • 感谢您的建议,但除此之外我还有另一个问题。该链接没有说明 FLANN 树,但据我所知,我必须通过 SIFT/SURF 算法运行“n”个徽标来提取所有关键点和描述符。然后我必须对所有关键点和描述符进行 knnsearch 并保存最好的。完成所有这些后,我可以加载测试图像并遍历树以找到最接近的匹配项?
    • 你是对的,它只是 FLANN。另外,是的,这就是我在回答中的意思。
    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2023-03-21
    • 2018-03-10
    • 2015-10-30
    相关资源
    最近更新 更多