比较存储在 mysql 数据库中的 SIFT 特征

2023-12-25

我目前正在扩展一个用于对图像进行分类的图像库,我想查找重复的图像、转换后的图像以及包含其他图像或包含在其他图像中的图像。
我已经测试了 OpenCV 的 SIFT 实现,它工作得很好,但对于多个图像来说会相当慢。太快了,我想我可以提取特征并将它们保存在数据库中,因为许多其他与图像相关的元数据已经保存在那里。

将新图像的特征与数据库中的特征进行比较的最快方法是什么?
通常比较是使用 kd 树、FLANN 或使用金字塔匹配内核 http://userweb.cs.utexas.edu/~grauman/research/projects/pmk/pmk_projectpage.htm我在 SO 的另一个线程中找到了它,但还没有深入研究。

由于我不知道如何有效地在数据库中保存和搜索 kd 树,因此我目前只看到三个选项:
* 让 MySQL 计算到数据库中每个特征的欧氏距离,尽管我确信对于多个图像来说这将花费不合理的时间。
* 首先将整个数据集加载到内存中并构建 kd 树。这可能会很快,但非常占用内存。另外,所有数据都需要从数据库传输。
* 将生成的树保存到数据库中并加载所有树,这将是最快的方法,但也会产生大量流量,因为新图像必须重建 kd 树并将其发送到服务器。

我正在使用 OpenCV 的 SIFT 实现,但我并不死心塌地。如果有一个更适合此任务的特征提取器(并且大致同样强大),我很高兴有人能推荐一个。


所以几年前我基本上做了一些与此非常相似的事情。您想要研究的算法是几年前由 David Nister 提出的,论文是:“Scalable Recognition with a Vocabulary Tree”。他们几乎对您的问题有一个精确的解决方案,可以扩展到数百万张图像。

这是摘要的链接,您可以通过谷歌搜索标题找到下载链接。http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1641018 http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1641018

基本思想是使用分层 k 均值算法构建一棵树来对特征进行建模,然后利用该树中特征的稀疏分布来快速找到最近的邻居......或者类似的东西,已经有几年了我努力了。您可以在作者的网页上找到 Powerpoint 演示文稿:http://www.vis.uky.edu/~dnister/Publications/publications.html http://www.vis.uky.edu/~dnister/Publications/publications.html

其他一些注意事项:

  • 我不会为金字塔匹配内核而烦恼,它实际上更多的是为了提高对象识别而不是重复/转换图像检测。

  • 我不会将任何此类功能存储在 SQL 数据库中。根据您的应用程序有时动态计算特征更有效,因为在密集计算时它们的大小可能超过原始图像大小。特征的直方图或指向词汇树中节点的指针要高效得多。

  • SQL 数据库并不是为进行大规模浮点向量计算而设计的。您可以将内容存储在数据库中,但不要将其用作计算工具。我用 SQLite 尝试过一次,结果非常糟糕。

  • 如果您决定实现这一点,请详细阅读该论文并在实现时随身携带一份副本,因为有许多小细节对于使算法有效工作非常重要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较存储在 mysql 数据库中的 SIFT 特征 的相关文章

随机推荐

  • 剪切 XML 形状的一部分

    我有一个 XML 格式的矩形视图
  • 如何在 gitconfig 别名中注释 bash 脚本

    我的 gitconfig 别名中有以下脚本 alias vx f I want to put a comment here foo foo bar bar separator Comment Here As well result foo
  • Java 中的 Diffie-Hellman 密钥交换

    我正在使用 Java 开发一个个人项目 其中涉及通过不安全的通道发送敏感数据 我需要知道如何使用其库在 java 中实现 Diffie Hellman Key Exchange DHKE 我知道有关它的所有密码理论 因此无需详细介绍 我只需
  • 在 R markdown 中循环

    我有一个像这样的 R markdown 文档 The following graph shows a histogram of variable x r hist x 我想引入一个循环 这样我就可以对多个变量做同样的事情 假设是这样的 fo
  • 使用 WorldPay 验证付款金额

    我们使用 WorldPay 处理分级会员系统的付款 该系统的付款金额根据所选的会员级别而变化 付款通过表单发布从多个隐藏字段传递到 WorldPay 其中包括
  • 部署和托管 .net core 2.0 和 Angular 6 应用程序

    Intro 目前 我有两个独立的项目 一种解决方案是针对 NET core Web API 2 0 另一个项目是 Angular 6 应用程序 我在将其部署到我的托管提供商 asphostsportal 时遇到问题 它由一个根文件夹 htt
  • 错误:找不到导航器的任何屏幕。您是否将任何屏幕定义为其子屏幕?

    我正在尝试制作动态 tab screen 我的代码是这样的 import React from react import Text View TouchableOpacity Modal from react native import A
  • 如何检查传入 HTTP 标头请求的内容

    我正在研究一些 API 并试图解决这个问题 我正在通过 API 向我的服务器发出基本的 HTTP 身份验证请求 作为此请求的一部分 经过身份验证的密钥作为用户名存储在 HTTP 标头中 所以我的问题是 如何获取传入请求的内容以便我可以对其进
  • 如何使用资产管道(回形针)中的图像为 Rails 数据库播种?

    我正在尝试为客户重构我的 Rails 应用程序 我创建了一个包含相关列的新模型 title description body 我需要添加image到这个模型 但我不知道要使用什么数据类型 而且我读到将图像放入数据库是一个坏主意 目前 我正在
  • 为什么 JavaScript 最初没有实现块作用域?

    我读过 并通过自己的经验发现 JavaScript 没有块作用域 假设该语言这样设计是有原因的 你能向我解释一下这个原因是什么吗 我在 Google 和这里 四处查看 但我发现的帖子只是重申 JS 有函数作用域而不是块作用域 而没有解释原因
  • 模拟数组对象

    面向对象的 JavaScript 书中的问题 想象一下 Array 不存在并且数组文字表示法也不存在 创建一个名为 MyArray 的构造函数 其行为尽可能接近 Array 我认为这将是一个很好的挑战来测试我的技能 这是我想出的 但它不起作
  • 如何以容器格式在 Hadoop 中使用 Snappy

    我必须使用 Snappy 来压缩 map o p 和 map reduce o p 此外 这应该是可拆分的 正如我在网上学习的那样 为了让 Snappy 编写可分割的 o p 我们必须以类似容器的格式使用它 您能建议如何去做吗 我尝试在网上
  • 未排序长度 n 数组中 k 个最大元素的索引

    我需要找到 C 中未排序 长度为 n 的数组 向量的 k 个最大元素的索引 其中 k 在没有 nth element 的情况下实现它似乎我必须迭代整个数组一次 在每一步填充最大元素的索引列表 标准 C 库中是否有任何内容可以使其成为一句简单
  • OpenGL ES 中的自定义视图过渡

    我正在尝试创建一个自定义过渡 以替代您在此处获得的默认过渡 例如 self navigationController pushViewController someController animated YES 我准备了一个基于 OpenG
  • 如何包装 glibc 库函数以自动使用“unsigned char”和“wchar_t”?

    我总是用char as unsigned char and wchar t as wint t 鉴于此 是否存在一种解决方案来更改函数接口以使用这些类型 无论是否重新编译 glibc 另请参阅这个问题 如何更改 wchar h 以使 wch
  • 如何使用 WebStorm IDE 在 Meteor 应用程序中调试 CoffeeScript

    我可以使用 JavaScript 使用此问题中的说明在 WebStorm 中进行 Meteor 调试 如何使用 WebStorm IDE 调试我的 Meteor 应用程序 https stackoverflow com questions
  • array_diff_uassoc 的行为不清楚

    首先 我需要提到的是 我深入研究了手册和 php 文档 但没有找到答案 这是我使用的代码 class chomik public state normal public name no name public function constr
  • 为什么 WinRT 类型必须密封?

    在几个地方 例如 使用 C 和 Visual Basic 创建适用于 JavaScript 的 Windows 运行时组件 http msdn microsoft com en us library windows apps br23030
  • 使用VB.NET读取和写入注册表[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我制作了一个游戏 我想将高分和其他值存储在 Windows 注册表中 它是用 VB NET 制作的 有人可以给我一个简单读取和写入注册
  • 比较存储在 mysql 数据库中的 SIFT 特征

    我目前正在扩展一个用于对图像进行分类的图像库 我想查找重复的图像 转换后的图像以及包含其他图像或包含在其他图像中的图像 我已经测试了 OpenCV 的 SIFT 实现 它工作得很好 但对于多个图像来说会相当慢 太快了 我想我可以提取特征并将