26 Stimmen

Was ist die beste Open-Source-Pure-Java-Computer-Vision-Bibliothek?

Als praktischer Entwickler möchte ich einen guten Algorithmus für meine spezifische Aufgabe erstellen, der aus Blöcken wie z. B. 'Kantenerkennung' oder 'Gamma-Korrektur' besteht. Ich möchte jedoch nicht das Rad neu erfinden und all diese Dinge selbst erstellen. Deshalb frage ich mich, ob es eine leistungsstarke CV-Bibliothek wie C++'s OpenCV gibt.

Wenn ich von "der besten" spreche, meine ich eine Bibliothek mit folgenden Eigenschaften:

  • Viele verschiedene Algorithmen implementiert
  • Erweiterbarkeit - Ich kann neue Dinge im Rahmen der Bibliothek erstellen
  • Hohe Leistung
  • Thread-Sicherheit

41voto

lessthanoptimal Punkte 2552

Sie könnten an einer reinen Java Open Source Computer-Vision-Bibliothek interessiert sein, die ich entwickelt habe, BoofCV. BoofCV unterstützt viele gängige Bildverarbeitungsvorgänge, fortschrittliche Merkmalsdetektion, Wellenlettenentrauschung, Kamerakalibrierung, Stereo Vision und Struktur aus Bewegung. Es ist auch sehr schnell. Derzeit verfügt es über die schnellste SURF-Implementierung aller Open-Source-Bibliotheken, einschließlich C/C++. In Bezug auf die Geschwindigkeit ist es sehr konkurrenzfähig mit OpenCV für mittlere bis hohe Visionalgorithmen. OpenCV ist natürlich schneller für die Bildverarbeitung auf niedriger Ebene.

Webseite: http://boofcv.org

OpenCV vs BoofCV: http://boofcv.org/index.php?title=Performance:OpenCV:BoofCV

SURF Performance Study: http://boofcv.org/index.php?title=Performance:SURF

Ok genug Markierungen. Hoffentlich gefällt es euch!

  • Ein Großteil des Codes ist bereits vorhanden, es fehlen nur noch ein paar Komponenten.

2 Stimmen

+1 Das ist wirklich sehr interessant. Ich frage mich, ob es templateMatching() von OpenCV gibt.

0 Stimmen

Ich weiß nicht, wie du die Leistung getestet hast, aber irgendetwas stimmt nicht. Ich mag Java und C# ziemlich gerne, bin aber mit einigen ihrer Leistungsschwachstellen bei der Datenverarbeitung nur allzu vertraut. Java und C# haben beide eine inhärente Leistungsschwäche beim Array-Parsing, weil jeder einzelne Array-Zugriff in einem Überprüfen der Array-Grenzen eingehüllt sein muss, um den Garantien der Sprache zu genügen. Für jede enge Schleife bei Array-Daten (wie einem Bild) wird dieser Overhead ziemlich signifikant.

2 Stimmen

Der Quellcode ist verfügbar. Führen Sie ihn selbst aus, ich habe andere meine SURF-Ergebnisse bestätigen lassen. Im Grunde gehen Sie davon aus, dass beide Code-Sätze gleichwertig sind, was sie nicht sind... Sie erkennen die Probleme, über die Sie sprechen, in einfachen Arrays mit schweren Low-Level-Operationen, und C/C++-Bibliotheken dominieren das.

11voto

Mimyck Punkte 403

Shaman, Ich habe lange nach einer Bildverarbeitungsbibliothek gesucht, die mit OpenCV in Java vergleichbar ist. Für die Menge an automatisierten Aufgaben, die OpenCV ausführt, gibt es nichts, was in der Nähe kommt, insbesondere für fortgeschrittene maschinelle Seh-Anwendungen.

Was die Bildverarbeitung betrifft, hat ImageJ eine große Anzahl von vorimplementierten Algorithmen und Plugins. Ich benutze diese Bibliothek die ganze Zeit, um Dinge vorzubereiten, die ich in die maschinellen Sehwerkzeuge von OpenCV schicke. Dies ist auch Open Source mit einfachen Möglichkeiten, zusätzliche Funktionen durch Plugins oder direkte Manipulationen hinzuzufügen, daher denke ich, dass es die meisten Ihrer Anforderungen erfüllen könnte.

5voto

Jay Askren Punkte 10053

6 Stimmen

-1, weil die Frage reines Java angibt

0 Stimmen

Nach reiner Java gefragt. JavaCV ist nur eine Wrapper für die OpenCV C++-Bibliothek.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X