2010-08-17 69 views
19

作爲一個實用的開發人員,我想爲我的特定任務制定一個好的算法,這些算法是從塊建立的,比如「邊界提取」或「伽馬校正」等等,但我不想實現這個輪子,製作所有的東西,所以我徘徊 - 如果有任何強大的CV庫,如C++的OpenCV?什麼是最好的開源純java計算機視覺庫?

說「最好的」,我的意思是庫具有以下特性:

  • 不同的算法地塊實施
  • 可擴展性 - 我可以在圖書館
  • 高性能
  • 方面創造新的東西
  • 線程安全
+2

你可能想要解釋到底什麼是「最好」對你意味着什麼。 – 2010-08-17 11:38:14

+0

謝謝,我會添加這樣的描述 – 2010-08-17 12:36:59

回答

11

薩滿, 我一直在尋找很長一段時間一個與Java中的opencv相媲美的圖像處理庫。對於opencv執行的自動化任務數量,對於高級機器視覺類型的應用程序來說,沒有任何東西可以接近它。

儘管在圖像處理方面imagej有大量的預先實現的算法和插件。我一直使用這個庫來預處理需要發送到opencvs機器視覺工具中的東西。這也是開源的,通過插件或直接操作添加附加功能的簡單方法,所以我認爲它可以滿足您的大部分要求。

30

您可能會感興趣的一個純Java的開源計算機視覺庫我已經開發,BoofCV。 BoofCV支持許多常見的圖像處理操作,高級特徵檢測,小波去噪,攝像機標定,立體視覺和運動結構。它也非常快。目前在任何開源庫中都有最快的SURF實現,包括C/C++庫。速度方面,它與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 2012-07-02 06:06:05

+0

我不知道你如何測試性能,但有些東西沒有加起來。我非常喜歡Java和C#,但我們都非常熟悉它們在數據處理方面的一些性能弱點。 Java和C#在數組解析中都存在固有的性能弱點,因爲**每個**單個數組訪問都必須包裝在數組邊界的檢查中以符合語言的保證。對於陣列數據上的任何緊密循環(如圖像),此開銷變得相當重要。 – 2015-03-24 19:37:01

+2

源代碼可用。自己運行,我還有其他確認我的SURF結果。基本上,你假設兩個集合都是代碼是等價的,它們不是......你可以看到你在簡單的數組低層次操作中正在討論的問題,而C/C++庫主宰了這個問題。 – 2015-03-26 11:39:17