图像检测功能:SIFT、HISTOGRAM 和 EDGE

2024-01-30

我正在致力于使用 3 种不同的功能(即 SIFT、HISTOGRAM 和 EGDE)来开发对象分类器。

然而,这 3 个特征具有不同的维度向量,例如SIFT = 128 维。历史记录 = 256。

现在,由于大小不同,这些特征无法连接成一个向量。我打算做的但我不确定这是否是正确的方法是:

对于每个特征,我分别训练分类器,然后分别对 3 个不同的特征应用分类,然后计算多数票,最后以多数票宣布图像。

您认为这是正确的方法吗?


有多种方法可以获得考虑多个特征的分类结果。您所建议的是一种可能性,即不组合特征,而是训练多个分类器并通过某种协议在它们之间达成共识。这通常属于以下领域集成方法。尝试在谷歌上搜索增强随机森林,了解有关如何组合分类器的更多详细信息。

但是,由于特征向量具有不同的维度,因此它们无法连接,这是不正确的。您仍然可以将这些特征连接在一起形成一个巨大的向量。例如,将 SIFT 和 HIST 特征结合在一起将为您提供 384 维的向量。根据您使用的分类器,您可能必须对向量的条目进行标准化,以便没有一个特征仅仅因为通过构造具有更大的值而占主导地位。

EDIT回复您的评论: 看来您的直方图是描述整个对象特征(例如颜色)的一些特征向量,而您的 SIFT 描述符是在该对象的局部兴趣关键点处提取的。由于 SIFT 描述符的数量可能因图像而异,因此您无法将它们直接传递给典型的分类器,因为它们通常会为您希望分类的每个样本获取一个特征向量。在这种情况下,您将必须构建一个codebook(也称为视觉词典)使用从许多图像中提取的 SIFT 描述符。然后,您将使用此代码本帮助您从每个图像中提取的许多 SIFT 描述符中导出单个特征向量。这就是所谓的“视觉词袋(BOW)“模型。现在您有了一个“总结”SIFT 描述符的向量,您可以将其与直方图连接起来形成一个更大的向量。这个单一向量现在总结了整个图像/(图像中的对象)。

有关如何构建词袋码本以及如何使用它从每个图像中提取的许多 SIFT 描述符导出单个特征向量的详细信息,请参阅这本书(可从作者网站免费下载)http://programmingcomputervision.com/ http://programmingcomputervision.com/在“搜索图像”一章下。它实际上比听起来简单得多。

粗略地说,只需运行 KMeans 来对许多图像中的 SIFT 描述符进行聚类,并将它们的质心(这是一个称为“视觉词”的向量)作为码本。例如。当 K = 1000 时,你有一个 1000 个视觉单词的密码本。然后,对于每个图像,创建一个与 K 大小相同的结果向量(在本例中为 1000)。该向量的每个元素对应于一个视觉词。然后,对于从图像中提取的每个 SIFT 描述符,在码本中找到其最接近的匹配向量,并增加结果向量中相应单元格中的计数。完成后,该结果向量实际上会计算不同视觉单词在图像中出现的频率。对于相同的视觉单词,相似的图像将具有相似的计数,因此该向量有效地代表了您的图像。您还需要“标准化”该向量,以确保具有不同数量 SIFT 描述符(以及总计数)的图像具有可比性。这可以像简单地将每个条目除以向量中的总计数一样简单,也可以通过更复杂的度量(例如书中描述的 tf/idf)。

我相信作者还在他的网站上提供了本书附带的 python 代码。如果您不确定,请查看或尝试一下。

组合特征的更复杂的方法包括多核学习(MKL)。在这种情况下,您计算不同的内核矩阵,每个内核矩阵使用一个特征。然后,您找到组合核矩阵的最佳权重,并使用组合核矩阵来训练 SVM。您可以在 Shogun 机器学习库中找到相关代码。

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

图像检测功能:SIFT、HISTOGRAM 和 EDGE 的相关文章

  • 在 Visual Studio 2012 中安装 OpenCV

    我正在尝试安装 OpenCV 来与 Visual Studio 一起使用 我使用的是2012Pro版本 但我认为它应该与vs10相同 我正在关注这个教程 http docs opencv org doc tutorials introduc
  • 如何在 cv2.VideoWriter 中使用 FPS 参数?

    好的 所以我正在制作视频 我想确切地知道如何使用 FPS 参数 它是一个浮点数 所以我假设这是我想要的每帧之间的间隔 你能给个例子吗 我只想知道视频会如何随着 FPS 参数值的变化而变化 因为我制作的视频现在太快了 谢谢 确实只是这样 fr
  • 在 Visual Studio C++ 2008 中包含 dll

    有没有办法将 dll 包含在项目中 这样我就不必在编译后将这些 dll 与可执行文件放在同一文件夹中 这样我就可以用它们编译我的项目 这是否有可能 如果是 有人可以指导我 我的项目是一个 opencv 项目 有很多 dll 我必须包含在文件
  • 如何使用网格分割图像并保留透明度边界框

    我有一些 png 图像 我想将其分成几个部分 例如按网格或大小 但每个部分应具有与原始图像相同的边界框 透明度 Example 将图像分成两部分 原来的 200 89 Output 部分 1 png 200 89 第2部分 png 200
  • VideoCapture.read() 返回过去的图像

    我在跑python3 6 with openCV on the Raspberry pi OS is Raspbian 代码的大致结构如下 The image以时间间隔 3 5 分钟 捕获 被捕获image在函数中处理并返回度量 精度的种类
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 探索java图像处理的好资源[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是图像处理领域的新手 请推荐一些好的资源 书籍和网络链接 来学习 Java 中的图像处理 最适合隐写术分析 适合初学者和高级水平 我看过
  • 找到 4 个特定的角像素并将它们与扭曲透视一起使用

    我正在使用 OpenCV 我想知道如何构建一个简单版本的透视变换程序 我有一张平行四边形的图像 它的每个角都由具有特定颜色的像素组成 该像素在图像中没有其他位置 我想遍历所有像素并找到这 4 个像素 然后我想将它们用作新图像中的角点 以扭曲
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • 如何检测图像是否像素化

    之前有人在 SO 上提出过这样的问题 在Python中检测像素化图像 https stackoverflow com questions 12942365 detecting a pixelated image in python还有关于q
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 如何在Matlab中将图像从笛卡尔坐标更改为极坐标?

    我正在尝试将图像的像素从 x y 坐标转换为极坐标 但我遇到了问题 因为我想自己编写该函数 这是我到目前为止所做的代码 function newImage PolarCartRot read and show the image image
  • 霍夫变换检测和删除线

    我想使用霍夫变换检测图像中的线条 但是我不想绘制线条 而是想删除原始图像中检测到的每条线条 image imread image jpg image im2bw image BW edge image canny imshow BW fig
  • 使用 OpenCV 进行相机校准 - 如何调整棋盘方块大小?

    我正在使用 OpenCV Python 示例开发相机校准程序 来自 OpenCV 教程 http opencv python tutroals readthedocs io en latest py tutorials py calib3d
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 未加载库:@rpath/libopenblasp-r0.2.19.dylib

    我应该如何解决这个问题 Monas MacBook Pro 02 02 mona python Python 3 6 1 Anaconda custom x86 64 default May 11 2017 13 04 09 GCC 4 2
  • 为什么这个基本的 imagejpeg() resizer 返回黑色图像?

    EDIT 感谢您的所有回答 特别是 Mailerdaimon 他注意到我没有在imagecopyresampled功能 我不再得到黑色图像 但我仍然得到一些黑色部分 所以我认为我的比例公式应该更新 如果我上传横向图像 新图像的高度小于 17
  • 提取二值图像中的最中心区域

    我正在处理二进制图像 之前使用此代码来查找二进制图像中的最大区域 Use the hue value to convert to binary thresh 20 thresh thresh img cv2 threshold h thre

随机推荐

  • 使用 Rfc2898DeriveBytes 将 C# PBKDF2 转换为 PHP

    长话短说 我们在 NET 中内置了一个会员系统 我们正在将其移植到 WordPress 并且需要复制 PBKDF2 加密 以便用户无需重置密码 使用已知的散列密码 我可以使用以下代码轻松在 NET 中复制此内容 static void Ma
  • 单击数据表以过滤其他图表(dc.js)

    当我单击数据表中的一行时 我需要过滤其他图表 I did my table on pretransition function table table selectAll td dc table column on click functi
  • Visual Studio 2010 中的“抑制警告”菜单项不可用

    我正在使用Visual Studio 2010 Ultimate 似乎我无法像在VS2008中使用的方式抑制警告 我的项目是用 C 编写的 当我右键单击 错误列表 窗口中的警告时 例如 缺少公共类型的 XML 注释 我没有常用的菜单项来抑制
  • 为什么代理 Java 正则表达式会找到连字符减号 -

    我试图找出为什么 JAVA 中存在这个正则表达式 ud800 udbff udc00 udfff 用于replaceAll regexp 还将删除连字符减号以及代理字符 这个的 Unicode 是 u002d所以它似乎不在任何这些范围之内
  • GHC - Mac OS X - ld:未知选项:-no_pie

    当我尝试在 Haskell 中编译一个简单的 Hello World 并使用ghc make Main hs I get 链接主 ld 未知选项 no pieCollect2 ld 返回 1 退出状态 我使用的是 Mac OS X 10 6
  • 如何在服务器端 (Node.js) 以编程方式验证 Facebook 用户的访问令牌?

    我有 Facebook 用户的访问令牌 我想验证该访问令牌是否有效 即 Facebook 是否知道它 当前是否有效等等 到目前为止 我已经浏览了各种Facebook 的 API https developers facebook com d
  • @OneToOne 与 Hibernate 共享主键用户 - 帐户的映射

    我尝试过带这个例子 http vard lokkur blogspot de 2011 05 onetoone with shared primary key html为我的情况而工作 Primus 是用户 Secundus 是帐户 用户应
  • 如何在使用 webpack 构建期间将 css-in-js (样式化组件)移动到外部 css 文件 - ReactJS

    当我构建 React 项目时 我试图找出 CSS 文件所在的位置 我正在使用 webpack 如果我使用普通 CSS 我可以为整个项目中使用的所有样式创建一个 CSS 文件 当我使用样式组件在 js 中使用 CSS 时 我没有获得外部 CS
  • Twitter Bootstrap:如何关闭模式对话框?

    我正在尝试使用 Twitter 的引导程序实现模式加载对话框 我目前的尝试是 document ready function loading dialog ajaxStart function this modal show ajaxSto
  • 如何让会话实体作为 Dialogflow 检测意图的一部分

    我有一个实体 应该使用特定于用户的信息在每个会话的基础上进行更新 当我使用 Dialogflow v1 时 这有效 我认为它也适用于 v2 但我现在遇到了严重的问题 我相信我正确设置了会话实体信息 但对于使用它的意图 它仅在使用开发人员实体
  • Laravel 中的 Bcrypt 与 Hash

    我想创建一个函数或类似 Cron 的东西来执行链接 在 Laravel 中 并带有密码之类的东西 我有两个解决方案 但使用哪一种更好 选项 1 哈希
  • 用于桌面应用程序回归测试的自动化测试工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个使用 Infragistic 网格的桌面应用程序 我们需要自动化回归测试 仅 QTP 不支
  • 获取 LNK1107 无效或损坏的文件:尝试为 OpenSceneGraph 教程链接 .dll 时无法读取 0x378

    我正在尝试在 Visual Studio 上设置 OpenSceneGraph 以便我可以运行一些教程 我相信我的问题是我不知道如何在 Visual Studio 上正确设置环境并让程序查看库文件正确 有问题的代码仅用于 osg 智能指针演
  • ORA-00907: 缺少右括号

    过去两天我一直在查看这段代码 但似乎无法让它工作 它不断地给我 ORA 00907 missing right parenthesis 我知道这是一个经常出现的话题 但由于某种原因 我见过的例子都没有对我有帮助 有人可以告诉我为什么会出现此
  • 在 Google BigQuery API 中,查询响应的默认超时是多少?

    在 Google BigQuery API 中 查询响应的默认超时是多少 换句话说 对于未完成的作业 默认等待多长时间直到响应返回 null 的文档timeoutMs https cloud google com bigquery docs
  • Mongodb 与 Python 的“set()”类型

    我正在构建一个以 mongoDB 作为后端的网络应用程序 某些文档需要将项目集合存储在某种列表中 然后系统需要经常检查该列表中是否存在指定的项目 使用 Python 的 in 运算符需要 Big O N 时间 n 是列表的大小 由于这些列表
  • SQL Server 和消息队列

    我正在尝试构建一个可靠的消息服务 或者至少我是这么描述它的 这是我的问题 我有一个表 我将数据插入到该表中 我至少有两个应用程序从该表中选择数据 但是 我需要一种可靠的方法 让两个不同的应用程序在任何给定时间都不会选择相同的行 我将如何编写
  • 无法通过多重采样渲染到纹理

    我运行了帧缓冲区示例this http www open gl framebuffers page 原始代码 http www open gl content code c6 base txt 在osx 10 8中的xcode 4 6中使用
  • 在 R 中使用插入符号进行逐步回归[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在R中使用了leaps包来执行前向和后向特征消除 但是 我希望自动化交叉验证和预测操作 因此 如何在插入符号中使用向前 向后选择 在
  • 图像检测功能:SIFT、HISTOGRAM 和 EDGE

    我正在致力于使用 3 种不同的功能 即 SIFT HISTOGRAM 和 EGDE 来开发对象分类器 然而 这 3 个特征具有不同的维度向量 例如SIFT 128 维 历史记录 256 现在 由于大小不同 这些特征无法连接成一个向量 我打算