在OpenCV中训练SIFT功能

时间:2011-07-19 14:59:22

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

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

我在网上搜索了培训SIFT关键点的方法,但它们都在某种博士论文中,这些论文都涉及到所有这些数学算法,老实说,因为我没有采用任何数学算法上课一段时间。

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

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

提前致谢

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

您可以使用PCA减少维数,然后您可以在从徽标中提取的矢量要素集上训练某种分类器,如SVM。 你也可以使用BoW(包字或功能)。 你也可以谷歌“标识识别”很多材料可用。