什么是最好的开源纯Java计算机视觉库?

26

作为一位实际开发者,我希望为我的特定任务设计一个好的算法,它由各种模块组成,比如“边界提取”或“伽玛校正”等等。但是我不想重复造轮子,自己再去实现所有这些东西,所以我在想——是否有像C++的OpenCV一样强大的计算机视觉库呢?

说到“最好的”,我指的是具备以下特点的库:

  • 实现了许多不同的算法
  • 可扩展性——可以基于该库创建新的内容
  • 高性能
  • 线程安全
3个回答

41
您可能会对我正在开发的一个纯Java开源计算机视觉库BoofCV感兴趣。 BoofCV支持许多常见的图像处理操作,高级特征检测,小波去噪,相机标定,立体视觉和运动结构。 它也非常快速。 目前,在任何开源库中,包括C / C ++,它都具有最快的SURF实现。 在速度方面,对于中高级视觉算法,它与OpenCV非常有竞争力。 当然,对于低级图像处理,OpenCV更快。
网站:http://boofcv.org OpenCV vs BoofCV:http://boofcv.org/index.php?title=Performance:OpenCV:BoofCV SURF性能研究:http://boofcv.org/index.php?title=Performance:SURF 好了,足够的介绍了。 希望您们喜欢!
  • 大部分代码已经就位,只缺少几个组件。

2
+1 这非常有趣。我想知道它是否具有来自openCV的templateMatching()函数。 - KJW
我不知道你是如何测试性能的,但有些事情似乎不太对劲。我非常喜欢Java和C#,但对它们在数据处理方面的一些性能弱点非常熟悉。Java和C#在数组解析方面都存在固有的性能弱点,因为为了满足语言的保证,每个数组访问都必须包含一个检查数组边界的操作。对于任何紧密循环的数组数据(例如图像),这种开销变得相当显著。 - user334911
2
源代码可用。您可以自己运行它,我已经让其他人确认了我的SURF结果。基本上,您正在做一个假设,即两个代码集是等价的,但它们并不相同...您确实可以在简单的数组重低级操作中看到您所说的问题,而C/C++库则占主导地位。 - lessthanoptimal

11

Shaman,我一直在寻找一个类似于Java中OpenCV的图像处理库。就自动化任务的数量而言,没有任何东西能够像高级机器视觉类型应用程序一样接近它。但就图像处理方面而言,ImageJ有很多预实现的算法和插件。我经常使用这个库对需要发送到OpenCV机器视觉工具中的东西进行预处理。这也是开源的,并且通过插件或直接操作很容易添加其他功能,因此我认为它可以满足您的大部分要求。


5

6
由于问题明确要求使用纯Java,因此返回-1。 - finnw
要求纯Java。JavaCV只是OpenCV C++库的包装器。 - Roland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接