Entwicklung und Evaluierung eines GPU-basierten Bildmanipulationssystems
Autor: Christoph Mair - 2005
Kurzbeschreibung
GLIP ist ein Bildmanipulationssystem, welches die programmierbaren Shadereinheiten moderner Grafikkarten zur Berechnung der Bilder nutzt, um so Geschwindigkeitsvorteile zu erzielen. Als Bildquelle können alle von Imlib2 unterstützten Grafikformate sowie video4linux und V4L2 kompatible Bildquellen (TV-Karten, Kameras) verwendet werden. Als Grafikschnittstelle dient OpenGL; die Shader werden mit der OpenGL Shader Language programmiert.
Funktionsweise
GLIP wird teilweise von der Kommandozeile, teilweise interaktiv gesteuert. Die Kommandozeilenparameter spezifizieren die Bildquelle. Diese kann eine Datei oder ein V4L[2]-Stream sein. Die einzelnen Bearbeitungsschritte, die ein Bild durchläuft, werden interaktiv eingestellt. Dazu stellt GLIP verschiedene Filter zur Verfügung, welche auch in Kombination hintereinander abgearbeitet werden können.
Über die Drop-Down-Box können die verschiedenen Filter ausgewählt, und mit dem "add Filter" Knopf in die Liste der abzuarbeitenden Filter hinzugefügt werden. Jeder Filter (außer Farbraumkonversionen) können über den Alpha-Kanal selektiv gesteuert werden. Dazu kann ein Alpha-Wert eingestellt werden, ab dem der Filter ein Pixel bearbeitet. Die Alpha Maske kann entweder über das Quellbild geladen, oder von anderen Filtern in den Alpha-Kanal geschrieben werden.
Wurden mehrere Filter hinzugefügt, werden diese sequentiell abgearbeitet. So können komplexe Operationen auf Bilder angewandt werden.
Blur Filter
Laplace Filter
Der Laplace Filter ist ein sehr empfindlicher Kantendetektor. Der verwendete Kernel sieht wie folgt aus:
-1 -1 -1
-1 8 -1
-1 -1 -1
Ein mögliches Anwendungsszenario ist das Hervorheben von Bildstörungen, ein anderes ist das Scharfzeichnen von Bildern. Dazu kann das Ausgangsbild zum Kantenbild hinzuaddiert werden.
Sobel Filter
Der Sobel Filter ist wie der Laplace-Filter ebenfalls ein Kantendetektor, jedoch kann dieser horizontale und vertikale Kanten separat erkennen. Ausserdem reagiert er auf kleine Störungen nicht ganz so empfindlich wie der Laplace-Filter. Die Filter-Kernel sehen wie folgt aus:
Horizontal Vertikal
1 2 1 -1 0 1
0 0 0 -2 0 2
-1 -2 -1 -1 0 1
Hierarchische Filter
GLIP stellt drei hierarchische Filter zur Verfügung. Alle drei Filter arbeiten nach der folgenden Methode:
Die Farbwerte der 3x3-Umgebung eines Pixels werden sortiert in einer Liste abgelegt.
- Der Minimumfilter ersetzt das aktuelle Pixel mit dem Farbwert des kleinsten in der Liste;
- Der Medianfilter verwendet dazu den Wert in der Mitte der Liste;
- Der Maximumfilter verwendet das grösste Element.
Diese Filter eignen sich z.B. zur Beseitigung von Bildstörungen die sich als verstreute Bildpunkte mit extremen Farbwerten bemerkbar machen. Solche Bildstörungen sind auch als "salt and pepper" bekannt. Diese können entfernt werden ohne das gesamte Bild zu verschmieren bzw. bestehende Kanten zu zerstören.
Diffusionsfilter
Der Diffusionsfilter ist ein kantenerhaltender Glättungsfilter, welcher die eigentliche Glättungsoperation durch ein "verrinnen" der Farben der umgebende Pixel erzeugt. Dabei werden feine Strukturen (z.B. Bildstörungen) von benachbarten Pixeln "überschwemmt". Auch dieser Filter kann über mehrere Parameter gesteuert werden. Zum Einen gibt es für jede Diffusionsrichtung einen Schwellwert, ab dem die Diffusion unterbunden wird. Als Vergleichswert dient hier die Länge des Farbvektors. Andererseits kann der Abstand der zur Diffusion herangezogenen Pixel eingestellt werden. Es ist allerdings zu Beachten, dass bei einem zu großen Abstand eventuell dazwischenliegende Pixel nicht berücksichtigt werden. Der Abstand sollte möglichst Eins sein.
Farbraumkonvertierung
Dieser Filter erlaubt es, Bilder zwischen verschiedenen Farbräumen zu konvertieren. Folgende Transformationen stehen zur Verfügung: RGB <-> BGR RGB <-> CMY RGB -> YUV YUV -> RGB RGB -> Luminance (Graubild)
Der YUV->RGB Filter kann natürlich auch auf RGB Bilder angewendet werden. Dann werden die RGB Quellfarben als YUV interpretiert.
Farbverbesserung
Dieser Filter analysiert welche Teile des verfügbaren Farbraums die einzelnen Farbkanäle des Quellbildes ausnutzen. Wenn der verfügbare Farbraum nicht vollstädig ausgenutzt wird, können die Farben so angepasst werden, dass dies der Fall ist. Dabei gibt es zwei Vorgehensweisen:
- Alle Farbkanäle einzeln anpassen: Hierbei werden alle Farbkanäle einzeln auf das gesamte Farbspektrum vergrössert. Dies kann Bilder mit "Farbstich" korrigieren.
- Alle Farbkanäle gleichmäßig anpassen: Hierbei wird beachtet, dass kein Farbkanal über den darstellbaren Farbraum hinaus gedehnt wird. Diese Methode erhält den Farbton und kann z.B. zum Aufhellen von Bildern verwendet werden.
Die Bilder auf dieser Seite sind © 2005 by Christoph Mair und Peter Kipfer.































