Bildverarbeitungscodierung

12

Ich habe mich gefragt, welche Sprache die beste für die Bildverarbeitung ist. Ich weiß, dass MATLAB eine gute Bibliothek und Benutzergemeinschaft dafür hat. Ich habe es nicht überprüft, es ist auch für Python da.

Was ist die effizienteste Sprache dafür?

Phönix
quelle

Antworten:

12

Es geht nicht nur um die Programmiersprache, sondern auch um die Bibliothek, die Sie verwenden. Ich kann mir Folgendes vorstellen:

MATLAB - Bildverarbeitungsfunktionen sind in Ordnung, aber für fortgeschrittenere und Echtzeitverarbeitung benötigen Sie ein paar Dinge auf niedriger Ebene. Darüber hinaus bietet es keine sehr gute Portabilität.

Mathematica - gut für Prototyping und schnelle Visualisierung, aber das ist alles meiner bescheidenen Meinung nach.

OpenCV - Ich denke, dies ist die beliebteste Bibliothek in der IP-Community. Hervorragende Funktionen ( GPU-Computing, Modul für maschinelles Lernen, GUI - was benötigen Sie sonst noch? ), Schnell und noch in der Entwicklung (daher werden kleinere Fehler sehr schnell beseitigt). In Bezug auf die Community - es ist groß! Hauptsächlich für C / C ++ - Programmierung, aber auch für Python (passt wahrscheinlich zu Ihnen).

JAI - Java Advanced Imaging - nur wenn Sie Java mögen. Persönlich mag ich es nicht.

ImageMagick - Sie können es mit vielen Programmiersprachen verwenden, überprüfen Sie die API .

CxImage - gut, wenn Sie etwas Besseres als MS Paint und mit einigen Funktionen von Photoshop erstellen möchten.

CImg - natürlich für C ++, aber OpenCV ist immer noch besser.

PIL - Python-spezifische Bibliothek mit vielen Funktionen. Wenn es dir gefällt, kannst du es dir genauer ansehen.

SimpleCV - im Grunde handelt es sich um OpenCV- Pythonbindung mit einigen Verbesserungen. Sehr einfach zu bedienen und sehr effizient.

scikit-image - auch Python-Bibliothek, aber meiner Meinung nach schlechter als SimpleCV (obwohl mein Freund dem nicht zustimmen würde). Ein Vorteil ist, dass sie DAISY Features Extractor enthalten - sehr nützlich, wenn Sie dichte Funktionen benötigen.

GIL - Teil von Boost , aber weniger funktional als OpenCV. Obwohl, wenn Sie Boost mögen und verwenden, sollte es für einige grundlegende Funktionen in Ordnung sein.

ResIL - Fortsetzung des DevIL- Projekts. Ein wesentlicher Vorteil ist die Verwendung vieler Dateiformate, einschließlich einiger Spieledateien.

PINK - ursprünglich in C ++ geschrieben. Ich habe es kürzlich ausprobiert und es war sehr angenehm, damit zu arbeiten. Hervorragende Integration in Python und schnelle Integration in Embedded C. Ansonsten haben sie viele nette Algorithmen.

Natürlich gibt es noch viel mehr Bildbibliotheken, aber mit diesen hatte ich Kontakt. Wenn Sie also mit etwas anfangen möchten, wählen Sie OpenCV (vorzugsweise mit C ++ - Framework) - Sie werden es nicht bereuen! Auf der anderen Seite sollten Sie über die Verwendung von Python-basierten Bibliotheken nachdenken, wenn Ihre Programmierkenntnisse nicht sehr gut sind - sehr einfach zu erlernen und einzurichten.

jojek
quelle
2

MATLAB ist die beste Sprache zum Erlernen der Bildverarbeitung. (es ist meine Meinung)

Es ist einfach zu erlernen, hardwareunabhängig, flexibler als jede kompilierte Sprache und möglicherweise effizienter als Skriptsprachen (aufgrund seiner inhärenten DLLs, die für die Signalverarbeitung auf Maschinenebene optimiert sind). Es verfügt über eine gute akademische und technische Unterstützung.

C / C ++ ist die beste Sprache zum Erstellen eigenständiger Anwendungen für die Bildverarbeitung. Unter Ihrer IDEs-Suite können Sie den effizientesten nativen Code generieren. Und IDEs für C ++ bieten bessere Debugging-Funktionen auf Computerebene.

Einige Skriptsprachen werden ebenfalls verwendet. Sie sind in der Tat flexibel, portabel und sogar sehr effizient, jedoch ist das Debuggen auf niedrigen Ebenen möglicherweise nicht einfach.

Auch die neuen GPU-Verarbeitungsfunktionen von CUDA, OpenCL usw. sorgen für einen dramatischen Anstieg des Rechendurchsatzes. (Sie sind jedoch schwieriger zu erlernen, da Sie die zugrunde liegende GPU-Pipeline-Hardwarearchitektur kennen sollten, um alle Effizienzgewinne nutzen zu können.)

Fat32
quelle
-1

Wenn Sie Ihre eigenen Algorithmen oder Code rollen möchten, fügen Sie OpenCL hinzu, da viele Bildverarbeitungskerne "peinlich parallel" sind.

Oder auf Big Iron schlägt Fortran die meisten anderen Sprachen bei der Leistung von numerischen Vektoren.

hotpaw2
quelle