计算图像中的对象数

时间:2010-06-01 18:15:37

标签: java language-agnostic image-processing computer-vision

我正在调查图像处理识别某些物体的可能性,并将它们计算在图像中。

我将获得一张照片,我需要确定该图像中存在的方框数量。

有没有人对ImageJ,斐济,JAI,jMagick,Java Vision Toolkit等机器视觉/图像处理库有任何经验?你认为哪个最适合这份工作?你们有什么建议?如果可以从Java使用API​​,那就更好了。谢谢。

编辑: 我正在处理仓库棕色盒子。是的我说的是普通照片。来源通常是手机图片。

EDIT2: 对不起答案是自动选择的。 :(

5 个答案:

答案 0 :(得分:10)

我从未使用过您列出的库,但我使用过OpenCV。

OpenCV是一个经过良好支持和验证的计算机视觉库。它内置了一些功能来计算图像中原始形状的数量。它是用C ++编写的,但您可以创建一个通过JNI调用的小包装器。

RoboRealm是机器人爱好者使用的另一种经过验证的计算机视觉系统。它是一种封闭源商业产品,使用基于套接字的控制API。

http://opencv.willowgarage.com/wiki/FullOpenCVWiki

http://www.roborealm.com/index.php

答案 1 :(得分:8)

如果您必须坚持使用Java,您仍然可以使用OpenCV

  1. 如果只是方框,您可以使用Hough Transforms来检测它们。
  2. 您可以使用OpenSURF根据您提供的源图像来检测手机。
  3. 在您的情况下,不要认为这是可行的:HAAR Cascades。您可以创建自定义HAAR分类器,但培训过程可能非常耗时。
  4. HTH, 乔治

答案 2 :(得分:5)

在Java中,有几个项目扩展了Java Advanced Imaging API以提供计算机视觉:

  • JavaVis
  • java + IPJ中的图像处理 - JAI的计算机视觉扩展
  • Java Vision Toolkit - JVT(编辑:opps,问题中提到了这一点。)

JavaVis有一个paper,它引入了库,比较和约束了所提到的其他两个库。

JavaVis具有以下功能:

  • 处理2D和3D图像(3D在这种情况下最相关)
  • 具有检查潜在结果的GUI
  • Matlab图片导出

对于java也是NeatVision。与其他文档不同,该项目清晰可见文档。

这些项目都不会为您提供简单的交钥匙解决方案。您需要了解计算机视觉的工作原理,并在照片上创建一系列处理步骤,以帮助您从视觉算法中获得最佳结果。为此,JavaV可能是最有用的,因为它旨在教授计算机视觉。

答案 3 :(得分:5)

如果您不是在谈论实时图像处理,可以编写一个API到Amazon Mechanical Turk

答案 4 :(得分:1)

您是否愿意为此开发自己的代码?有几种技术可以应用和调整到您的特定问题,但我从未使用过打包的库,总是开发自己的代码。如果你有兴趣,我可以为你提供参考。