- Werbung -

Digitale Bildbearbeitung? Kann ich doch, sagen viele. Ich nehme Gimp, Photoshop oder ein anderes Bildbearbeitungsprogramm, damit kann ich doch alles leicht erledigen.
Aber was steckt dahinter? Wie „funktioniert“ eigentlich ein Bildbearbeitungsprogramm (in einzelnen Komponenten)?

Leicht einsichtige Beispiele basieren alle auf dem gleichen Grundkonzept, variieren aber in den Teilen, in denen Farbwerte einzelner Pixel verarbeitet werden: Umwandlung eines Farbbildes in ein Graustufenbild, Invertieren der Farben, Helligkeits- und Kontraständerung und auch geometrische Operationen wie Spiegeln. Als weiterführendes Beispiel kann das Verständnis eines Filters – z. B. eines Kantendetektionsfilters – dienen, welches auch eine wichtige Vorarbeit zu einem derzeit aktuellen Bildbearbeitungsverfahren – seam carving – darstellt. Seam carving wird sicherlich in nächster Zeit bei verschiedenen Bildbearbeitungsprogrammen implementiert werden.

Grundgerüst und erstes Beispiel: Invertieren eines Bildes

Man kann sich vorstellen, dass ein digitales Bild aus rasterförmig angeordneten Pixeln (Bildpunkten: Kunstwort aus Picture und Element) besteht. Jeder Pixel trägt die Farbinformation in sich, dazu sind drei Byte (je eines für Rot – Grün – Blau) nötig. Da ein Byte einen Wert von 0 bis 255 speichern kann, sind insgesamt 256*256*256, also ca. 16,7 Millionen verschiedener Farben möglich. Der Ablauf jeder der oben genannten Manipulationen erfolgt jeweils nach dem gleichen Schema:

Das Bild 1 zeigt die Vorgehensweise bei der Arbeit mit einem Pointer P_Quell. Zunächst verweist man auf das erste Pixel der ersten Zeile des Bildes, P_Quell verweist ebenfalls darauf, wird aber in der Zeile jeweils so verschoben, dass nacheinander alle Pixel erreicht werden.

Aus Bild 2 kann man die synchrone Verschiebung beider Pointer P_Quell und P_Ziel ablesen. P_Quell „liest“ Pixelwerte, diese werden neu berechnet, P_Ziel dient zum Schreiben der „neuen“ Farbwerte. (Die Zahlenwerte sind exemplarisch für ein Invertieren der Farben zu sehen.)

Als weiteres Beispiel kann die Umwandlung eines Bildes in Graustufen dienen. Ein Pixel erscheint grau, wenn die drei Farbanteile R, G, B den gleichen Wert haben. Zunächst berechnen wir also einen Grauwert G aus den drei Farbwerten und weisen ihn anschließend allen drei Komponenten zu. Üblicherweise benutzt man die Formel: G := R * 0.11 + G * 0.59 + B * 0.3, die dem Empfinden des menschlichen Auges angepasst ist. Das Ergebnis G wird noch auf eine ganze Zahl gerundet, wobei darauf zu achten ist, dass keine Bereichsüberschreitung (Byte) vorkommen darf.

Nun kann man das oben beschriebene Verfahren leicht auf andere beispiele übertragen, Helligkeitsänderung des Bildes, Verstärken oder Abschwächen des Kontrastes sind hierfür besonders geeignet. Ein weites Betätigungsfeld findet sich auch in der Überlagerung von Bildern.

Eine weitere Manipulationsmöglichkeit stellen Filter dar.

Filter sind unverzichtbarer Bestandteil eines jeden Bildbearbeitungsprogramms. Sie dienen beispielsweise zum Verbessern oder Verfremden eines Bildes, aber auch zum Betonen von Besonderheiten. Eine dieser Besonderheiten ist das Hervorheben von Kanten, damit lassen sich Umrisse deutlich hervorheben. GIMP bietet noch eine weitere Möglichkeit an, man kann eine Faltungsmatrix und damit seinen eigenen, selbst gewählten Filter definieren. Filter arbeiten auf eine leicht verständliche Art und Weise, aus den Farbwerten der Umgebung eines Pixels werden die Farbwerte des neuen (Bild-)Pixels berechnet.

Im Bild ist links eine „drei mal drei“ Umgebung eines Punktes farbig markiert. Das Rechteck in der Mitte symbolisiert die Filtermatrix. Nun wird der Bereich des Bildes mit der Matrix „diskret gefaltet“, das heißt, es wird die Summe der Produkte Farbwert multipliziert mit Element der Filtermatrix gebildet und – nach Skalierung - als neuer Farbwert dem im rechten Bild mittigen Pixel zugewiesen.

Betrachten wir als Beispiel die willkürlich gewählten Rotanteile eines Pixelbereichs und stellen sie als Matrix dar:

120 100 100
100 120 100
100 100 100

 

 

Als Filter diene:

-2 -2 -2
-2 16 -2
-2 -2 -2

Nun erhalten wir als Rotanteil des Bildpixels folgende Summe:
120*(-2) + 100*(-2) + 100*(-2) + 100*(-2) + 120*16 + 100*(-2) + 100*(-2) + 100*(-2) + 100*(-2) = 280

Selbstverständlich muss darauf geachtet werden, dass der Bereich des Datentyps Byte nicht über- bzw. unterschritten werden darf. Eine Skalierung ist also nötig.

Unsere Faltung bildet also einen kleinen Bereich des Originalbildes auf einen Pixel des Ausgabebildes ab. Da die Zahlenwerte für jeden Farbanteil zwischen 0 und 255 liegen müssen, wird das oben errechnete Ergebnis dem Filter entsprechend skaliert.
 

         

Variationen sind vielfältig: in dem obigen Beispiel wurde eine 8er-Umgebung eines jeden Pixels in die Berechnung mit einbezogen, Alternativen bestehen in der Nutzung einer 4er-Umgebung („kreuzförmig“: oben – unten – links – rechts), oder, wenn man eine 5x5-Filtermatrix nutzen will, in einer 24er-Umgebung. Gezielte Recherche nach Filtermatrizen, aber auch eigenständiges Definieren und Ausprobieren, bringt eine Vielzahl von Effekten, die man mit Gimp ausprobieren kann.

Der zweite Teil des Artikels wird sich mit Seam Carving und ganz anderen Aspekten der Bildbearbeitung befassen.

Stichworte: