首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实时目标检测?

实时目标检测?
EN

Stack Overflow用户
提问于 2012-06-19 10:13:29
回答 3查看 3.7K关注 0票数 0

我正在研究这一领域,以获得目标的实时检测。

视频示例:

  • http://www.youtube.com/watch?v=Bm5qUG-06V8
  • http://www.youtube.com/watch?v=aYd2kAN0Y20

但是他们怎么能这么快地提取出sift键点并匹配它们呢?

SIFT提取一般需要第二次。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-19 10:42:21

SIFT可以通过以下几种方式加速:

  • 如果你能承受得起近似,那么你可以得到一个叫做冲浪的关键点,它更快(在大多数任务中使用积分图像)。
  • 您可以使用并行实现,在CPU级别(例如,OpenCV使用英特尔的TBB)或在GPU级别(google用于相关代码和doc)。

总之,Java中没有任何一个(AFAIK)可用,所以您必须使用Java包装器来打开opencv或自己解决它。

票数 2
EN

Stack Overflow用户

发布于 2012-06-25 22:28:26

我是一个OpenIMAJ开发人员,负责制作第一个视频。

我们没有做任何特别花哨的事情来使匹配在视频中快速,而SIFT检测和提取是在每一帧的整体上进行的。事实上,在我们进行任何优化之前,视频就已经制作好了;目前版本的演示要流畅得多。我们也有一个混合KLT跟踪器的版本,它的工作速度更快,不需要在每一个帧上执行SIFT。

正如马里奥建议的那样,图像大小对提取速度有很大的影响,所以处理一个较小的帧会带来很大的胜利。第二,在SIFT文件中对Lowe提出的高斯兴趣点定位差异的原始描述中,提出输入图像的大小要加倍,以增加特征的数量。通过不执行这种双倍调整,您还可以获得很大的性能提升,而代价是要匹配的功能更少。

代码是开源的(BSD许可证),您可以通过在http://www.openimaj.org上的链接获得它。正如视频描述中所述,图像处理代码是纯Java的;唯一的本机代码是网络摄像头的瘦接口。本教程pdf文档中的第7教程介绍了在OpenIMAJ中使用SIFT的过程。通过执行以下操作,可以实现禁用双倍大小:

代码语言:javascript
复制
DoGSIFTEngine engine = new DoGSIFTEngine();
engine.getOptions().setDoubleInitialImage(false);
票数 4
EN

Stack Overflow用户

发布于 2012-06-19 10:42:47

一般和第一个想法:询问视频上传者(S)。我们可以假设已经做了什么或者是怎么做的。它也可能有助于了解您到目前为止做了什么(例如您的视频分辨率,您的处理能力,图像准备等)。

我没有专门使用SIFT,但在过去几年中我做了相当多的对象/运动跟踪,所以这是更一般的。你可能已经试过一些要点了,我不知道。

  • 降低你的图像分辨率:从640x480到320x240将把你的数据减少到25%。如果降到160x120,它将再减少25% (剩下6.25 %的数据),而不会对算法产生显著影响。
  • 以类似的方式,它可能是有用的减少您的图像的颜色深度(不只是256个灰度,但可能更多,像64种颜色)。
  • 尝试其他方法使特征更明显或更快地找到,例如尝试在图像上运行边缘检测器。
  • 至少第二个视频提到了一个跟踪系统,所以您可以尝试猜测被跟踪的对象应该重现下一个帧的区域(使用一些简单的a/b过滤器或在坐标和可能的旋转上的任何内容),然后只在该分区上使用SIFT (添加一些空白)。只有当你找不到整个图像时,才能分析它。在第二个视频中,在大约40秒或50秒时,他们丢失了物体,需要相当长的时间才能再次找到它。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11098874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档