Fakultät Informatik

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.

+
Originalbild
+
mit Laplace
+
Farbkonversion
+
Diffusionsfilter

Blur Filter

Der Blur Filter ist ein Weichzeichnungsfilter. Die implemtierte Variante entspricht dem Binomialfilter, da dieser Filterartefakte weitgehend vermeidet.

Konfigurationsmöglichkeiten
Es stehen zwei Kernels zur Wahl: 3x3 oder 5x5.

+
Originalbild
+
3x3 Blur
+
5x5 Blur

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.

+
Originalbild
+
Laplace
+
geschärftes Bild

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

+
Originalbild
+
Horizontal
+
Vertikal

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.

+
Minimum Filter
+
Medium Filter
+
Maximum Filter

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.

+
Originalbild
+
Diffusion: 10, 0.2
+
Originalbild
+
Diffusion: 20, 0.05

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.

+
RGB nach BGR
+
RGB nach CMY
+
RGB nach YUV
+
YUV nach RGB
+
RGB zu Graustufen

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.
+
Original
+
nach Korrektur
+
Original
+
Ergebnis
+
Original
+
Aufgehellt
+
mit Diffusionsfilter nachbearbeitet

Die Bilder auf dieser Seite sind © 2005 by Christoph Mair und Peter Kipfer.

 

News

Matthias Niessner, our new Professor from Stanford University, offers a number of interesting topics for  master theses.

 

PhD positions on   Computational Fabrication and 3D Printing and  Photorealistic Rendering for Deep Learning and Online Reconstruction are available at the Computer Graphics & Visualization group.