Definition Was ist VIGRA (Vision with Generic Algorithms)?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

VIGRA ist eine Bibliothek für die Programmiersprache C++, die sich für Aufgaben der Bildverarbeitung und Bildanalyse einsetzen lässt. Sie wurde von Ullrich Köthe entwickelt und stellt für eigene Zwecke einfach anpassbare Algorithmen und Datenstrukturen zur Verfügung. Für die Programmiersprache Python existiert mittlerweile ebenfalls eine VIGRA-Schnittstelle. Die Bibliothek steht unter MIT-Open-Source-Lizenz und ist im Netz frei verfügbar.

Firma zum Thema

(Bild: © aga7ta - stock.adobe.com)

Das Kürzel VIGRA steht für „Vision with Generic Algorithms“. Es handelt sich um eine Bibliothek für die Programmiersprache C++. Sie wurde zum größten Teil von Ullrich Köthe und einigen weiteren Entwicklern an der Universität Hamburg entworfen. Ullrich Köthe und einige der Entwickler arbeiten mittlerweile an der Universität Heidelberg.

VIGRA lässt sich für die Bildverarbeitung und Bildanalyse einsetzen. Die Library stellt generische, einfach an eigene Zwecke anpassbare Algorithmen und Datenstrukturen für verschiedene Aufgaben der Bildverarbeitung und -analyse zur Verfügung. Die Library nutzt die in C++ implementierten Template-Techniken. Vorteile von VIGRA sind die hohe Geschwindigkeit der Algorithmen in C++, die gute Anpassbarkeit und die Unterstützung des für C++ typischen objektorientierten Programmierstils.

Ihre Stärken beweist die Bibliothek in der Verarbeitung und Analyse mehrdimensionaler Images. Zahlreiche Algorithmen und weitere Funktionalitäten wie Filter sind speziell auf multidimensionale Images ausgelegt. Angepasste Algorithmen büßen nichts an ihrer C++-Ausführungsgeschwindigkeit ein. Da die Low-Level-Programmiersprache C++ nicht für alle Aufgaben im Bereich der Bildverarbeitung und Bildanalyse optimal geeignet ist und es ihr beispielsweise an Interaktivität mangelt, wurde für VIGRA eine Schnittstelle für die High-Level-Sprache Python entwickelt. Sie ist seit der Version VIGRA 1.7.1 verfügbar.

In gewissem Umfang ist die Unterstützung der Python-Bibliothek NumPy gegeben. VIGRA ist plattformübergreifend einsetzbar und eignet sich für Rechner mit Betriebssystemen wie Linux, Windows, OpenBSD und macOS. Software wie OpenOffice oder LibreOffice nutzen oder nutzten die Library VIGRA für Rendering-Aufgaben. Mittlerweile existieren einige Software-Pakete, die die Möglichkeiten von VIGRA und die Unterstützung zusätzlicher Bibliotheken und Frameworks erweitern. Die offizielle Webseite der VIGRA-Bibliothek ist http://ukoethe.github.io/vigra/. Herunterladen lässt sich die Software für die verschiedenen Umgebungen und Betriebssysteme über http://ukoethe.github.io/vigra/#download. Das Entwicklungs-Repository befindet sich auf https://github.com/ukoethe/vigra. Die aktuelle Stable Version der Bibliothek ist VIGRA Version 1.11.1 (May 2017).

Der Funktionsumfang der Library VIGRA

Die Bibliothek VIGRA bietet einen großen Funktionsumfang und eine Vielzahl an individuell anpassbaren Algorithmen und Datenstrukturen. Template-basierte Datenstrukturen für beliebige Pixeltypen und Vektor-Images sind verfügbar. Multidimensionale Arrays, die graphenbasierte Bildverarbeitung und segmentierte Arrays für besonders große Images werden unterstützt. VIGRA kommt mit zahlreichen komprimierten oder unkomprimierten Ein- und Ausgabedateiformaten wie HDF5, JPEG, BMP, TIFF, GIF oder PNG und High Dynamic Range Images (HDR Images) zurecht. Im Rahmen der Bildverarbeitung sind das Resizing per Resampling oder Interpolation, die geometrische Transformation per Spiegelung oder Rotation, Farbraumkonvertierungen (RGB, sRGP, L*a*b*, Y'PbPr und andere), reale und komplexe Fouriertransformationen, Normalisierungen und Vieles mehr möglich. Als Filtertechniken stehen diverse Gauß-Filter, rekursive Filter, exponentielle Filter, adaptive, Filter, morphologische Filter, Gabor Filter und viele weitere Filter zur Verfügung.

Ein weiterer Funktionsschwerpunkt der Bibliothek VIGRA liegt in der Bildanalyse und -segmentierung. Es lassen sich verschiedene Detektor-Typen, Superpixel, graphenbasierte Imageanalysen, 2D- und 3D-Imageanalysen und Einiges mehr einsetzen. Im Bereich des Machine Learnings bietet Vision with Generic Algorithms Random-Forrest-Klassifikatoren sowie Analysetechniken wie Principle Component Analysis (PCA) oder Probabilistic Latent Semantic Analysis (pLSA). Mathematische Funktionen und Werkzeuge der Bibliothek sind beispielsweise Funktionen wie elliptische Integrale, automatische Differentiation, Zufallsgenerator, verschiedene Matrix-Klassen, Lösung linearer Gleichungssysteme, diverse Polynom-Berechnungen und Vieles mehr.

Die Vorteile der Bibliothek VIGRA

Die Bibliothek VIGRA bietet zahlreiche Vorteile. Sie ist für viele Aufgaben der Bildverarbeitung und Bildanalyse einsetzbar und stellt eine große Menge an leicht anpassbaren Algorithmen und Datenstrukturen zur Verfügung. Der objektorientierte Programmierstil von C++ und Template-Techniken werden unterstützt. Die Algorithmen profitieren von der hohen Ausführungsgeschwindigkeit in C++. Über die verfügbare Python-Schnittstelle lässt sich VIGRA zusammen mit der High-Level-Sprache Python und weiteren Bibliotheken einsetzen. Die Software steht unter Open-Source-Lizenz und ist für private, wissenschaftliche oder kommerzielle Zwecke frei nutzbar. Über ebenfalls im Netz erhältliche Software-Pakete ist der Funktionsumfang von VIGRA erweiterbar. VIGRA lässt sich plattformunabhängig auf Rechnern mit Betriebssystemen wie Linux, Windows, OpenBSD und macOS nutzen.

(ID:47085729)

Über den Autor