Rastergraphik

Reguläres Gitter aus Pixeln

  • Gitterpunkte = Pixel (mathematisches Modell)
  • äquivalent zu 2D-Array, im Speicher sogar linear
  • je Pixel (picture element | Voxel = volume element in dreidimensionalem Gitter) einheitliche Bitzahl:
    • 1 Bit (monochromatisch)
    • 8 Bit (oft Tiefe, Graustufe u.ä.)
    • 24 Bit (RGB, 8 Bit je Farbkanal)
    • 32 Bit (RGBA)
  • Auflösung und Komplextität durch Rastergröße definiert
    • Bits-per-Pixel (BPP), Dots-per-Inch (DPI)
  • Geometrie, Topologie, Semantik und Identität rasterisierter Objekte nicht unmittelbar rekonstruierbar
  • Down-Scaling = Raster verkleinerm | Up-Scaling = Raster vergrößern
  • Formate: JPEG, BMP, PNG, GIF und viele mehr
  • Aspect Ratio ist Verhältnis von Breite zu Höhe (z.B. 16:9)
  • Pixel (picture elements): einzeln adressierbar, nicht weiter teilbare Einheiten eines Rasters, eine oder mehrere Komponenten (z.B. RGB)

Rasterisierung bezeichnet den Prozess der Diskretisierung von grafisch-geometrischen Objekten in einem gegebenen Raster

  • zu einem abzubildenden Objekt werden die im Raster entsprechenden Pixel ermittelt und beschrieben
  • Realität Modellierung 3D-Modellraum Diskretisierung / Rasterisierung 2D-Bildraum
  • Räumliche (Rastergröße), farbliche (8 Bit je Pixel bei RGB u.ä.) sowie zeitliche (Framerate) Diskretisierung

Technische Konzepte

Repräsentationen:

  • GPU: Framebuffer (z.B. Color Buffer, Depth Buffer) oder Textures
  • CPU: Datenarrays (z.B. RGBA-Array als Uint8ClampedArray) oder Bildobjekte (z.B. Image bzw. Canvas, Context und ImageData)
  • File System: Kodierung einem einem Rastergraphikformat (s.o.)

Raster Layer: Konzeptionelle Aufteilung eines Rasters in Layer (planes / Ebenen), in denen jeweils je Eintrag Bits zur Verfügung stehen

  • meist (z.B. 3 Layer für RGB)
  • pro Pixel damit Bits (Bittiefe)
  • Mögliche Layer-Semantiken:
    • Color (Farbwerte), Surface Normal (8 + 8 + 8 Bit mit ), Luminance (Helligkeit / Intensität), Alpha (Transparenz), ID (Objekterkennung), Depth (z-Werte, Kameradistanz), Stencil (Allgemeiner Pro-Pixel-Zähler, z.B. für Bildmaske)

Vektorgraphik

Objektbasierte Kodierung von Bildinhalten

  • Geometrische Objekte (z.B. Polygone, Kurven, Texte) bezeichnet als Primitive
  • Graphische Attribute (z.B. Randfarbe, Füllfarbe, Linienstärke)
  • Hierarchischer Aufbau von Bildinhalten in Form von Szenengraphen
  • Auflösungsunabhängigkeit, d.h. geometrische Transformationen, Projektionsänderungen und Objekteditierung möglich ohne Informationsverlust (beliebig skalierbar)
  • Die „Komplexität“ eines Bildes entspricht der Komplexität der objektbasierten Spezifikation
  • in der Computergraphik nicht relevant, da Hardware nur Raster unterstützt
  • Formate: SVG, PDF, Adobe PostScript, DXF, DWG

Rastergraphik-Operationen

Bildtransformation

  • Umwandlung der Farbwerte eines RGB-Rasters nach Graustufen
    • (magic numbers) je nach Farbmodell
    • ggf. vorher durch 255 teilen und am Schluss wieder mit 255 multiplizieren 8 Bit Wert
for i {
	for j {
		p_i_j <- f(p_i_j)
	}
}

Anmerkung: Doppelte Schleife nur didaktisch

Beispiele für f:

  • Graustufen (magic numbers)
  • Entsättigung (z.B. Rot-Werte herabsetzen)
  • Transparenz (einzelne Farbe herausfiltern)
  • Farbreduktion (z.B. 8-Bit 4-Bit)

Bildfilterung:

  • Analog zu Transformation, allerdings wird neben dem Pixel auch seine Nachbarschaft betrachtet
  • Kante = große Differenz in der Helligkeit zwischen Pixel in einer Nachbarschaft

Farbquantisierung

  • Farbquantisierung verringert die Zahl der unterschiedlichen Farben, die in einem gegebenen Raster vorkommen
  • Ziel ist es, den Bildinhalt mit weniger Farben möglichst gut anzunähern; der Speicherbedarf sinkt entsprechend

Ablauf:

  1. Sampling der Eingangsdaten und Erstellen einer Farbstatistik (meist Histogramm)
  2. Erstellen einer Farbtabelle auf der Basis der Statistik (z.B. durch Clustering)
  3. Prozessierung der Eingangsdaten durch Auswahl der neuen Farbe aus der Farbtabelle für die Pixel Kompression (z.B. bei JPEG)

Median-Cut-Algorithmus

Versucht Farben zu finden, die möglichst jeweils eine gleiche Zahl an ähnlichen Farben im echten Bild repräsentieren

  • rekursive Unterteilung des RGB-Farbraums in RGB-Farbwürfel mit gleicher Anzahl an enthaltenen Farben
  • Ersetzung der Farben durch Median in jeweiligen RGB-Farbwürfel, nachdem eine gegebenen Anzahl an Teilwürfel erreicht wurde

Dithering

Approximation des gegebenen Bildes durch gegebene Menge an Primärfarben (z.B. Schwarz-Weiß für Drucker)

  • Error Diffusion Dithering: Lineare Verarbeitung des Bildes (z.B. links recht; oben unten), wobei erzeugter Fehler (z.B. bei Farbtiefenreduktion) auf lokale Pixelumgebung in Richtung der Traversierung (hier rechts und unten; links unten auch erlaubt) verteilt wird
  • alternativ Ordered Dithering mit Threshold-Map, bei der die Farbwerte des Bildes mit der Map verglichen werden (GPU-unterstützt, kann aber zu erkennbaren Mustern führen)
    • Nutzt oft Noise oder Bayer-Matrizen (letztere: Durchschnittswert )

Bayer-Matrizen: Vorfaktoren und Matrixgröße vervierfachen sich rekursiv


Bildfilterung

  1. Nachbarschaft fester Größe (z.B. 3 x 3, 5 x 5, etc.) definieren
  2. Auswertung der Nachbarschaftspixel mit einem sogenannten Filterkern (, z.B. 3 x 3, 5 x 5) für jeden Pixel

Neutrale Faltung: Bild bleibt unverändert

Mean-Filter: Mittelt die Nachbarschaftspixel gleichmäßig

  • Tiefpassfilter bzw. „Rechteckfilter“, der hochfrequente Bildinhalte abschwächt
  • Einsatz zur Elimination von kleinen Bildstörungen (z.B. noise), Bildglättung (z. B. Kantenverwischung)
  • Homogene Bildbereiche bleiben unverändert

Gauss-Filter: Mittelt die Nachbarschaftspixel mit unterschiedlichen Gewichten, die zur Pixeldistanz korrespondieren

  • Tiefpassfilter, ausgewogenere Filterung im Vergleich zum Rechteckfilter

Motion-Blur-Filter: Bildeffekt, der eine Bewegung der Kamera während der Aufnahme suggeriert

(oft noch größer, z.B. 9)

Emboss-Filter: Bildfilter, der den hypothetischen Kontrasts entlang z. B. einer -Diagonalen ermittelt

  • Hochpassfilter

Sharpness-Filter: Hebt Kantenübergänge hervor, d.h. „akzentuiert“ Kanten im Bildraum

Sobel-Filter: berechnen pro Pixel einen lokalen Gradienten

  • dienen zum Aufspüren von Änderungen in den Pixelwerten in einer bestimmten Richtung (horizontal, vertikal, diagonal)
  • zum Beispiel zur Kantendetektion verwendet

Tiefpass- und Hochpassfilter:

  • Tiefpassfilter lassen niedrige Frequenzen durch und blockieren hohe Weichzeichnung, globale Strukturen sichtbar
  • Hochpassfilter lassen hohe Frequenzen durch und blockieren niedrige betont Kanten und Texturen

Rangordnungsfilter

analog zur Bildfaltung, allerdings mehr Freiheiten im Umgang mit der Nachbarschaft

  • z.B. wird Min / Max / Median einer Nachbarschaft ausgewählt
    • Erosion: geringster Helligkeitswert (Schwarz) wird ausgewählt weiße Areale werden verkleinert, sehr kleine verschwinden ganz
    • Dilation: höchster Helligkeitswert (Weiß) wird ausgewählt weiße Areale werden vergrößert
    • Denoising: Median-Elemente der nach Helligkeit sortierten Nachbarschaftspixel wird ausgewählt kann Störpixel (z.B. Schwarz oder Weiß) entfernen
  • kann Artefakte beseitigen (z.B. erst Erosion und dann Dilation ausführen | Denoising allein)


Bildvergrößerung

Resampling

Transformation eines Bildes von einem Koordinatensystem in ein anderes, die durch eine Abbildungsfunktion beschrieben wird

  • Die inverse Transformation projiziert des Ausgabebild auf das Eingabebild, wodurch für jedes Ausgabebild ermittelt werden kann, welche Eingabepixel neu abgetastet werden müssen (resampling)
  • Anwendungen: Bildauflösung erhöhen / verkleinern, Bilder geometrisch transformieren

Verfahren:

  • Nearest-Neighbor: suche das nächstliegende Pixel im Eingabebild, wobei im Allgemeinen Aliasing-Artefakte (“Treppenstufen”) entstehen
  • Bilineare Interpolation: ermittle die vier nächstgelegenen Eingabebildpixel, interpoliere linear zwischen ihnen, wodurch Blureffekte auftreten

Farbmodelle

Menschliche Lichtrezeptoren: Stäbchen (verantwortlich für Nachtsehen) und Zapfen (drei Arten, verantwortlich für des Farbsehen, unterschiedliche Empfindlichkeit)

Ein Farbraum ist ein mathematisches Modell und Schema zur Darstellung einer Menge von Farben

  • allgemein dreidimensionaler Vektorraum
  • Gesamtheit der wahrnehmbaren Farben im CIE-Farbnormsystem erfasst
  • gebräuchlich sind etwa RGB, YIQ / YUV / YCbCr, CMYK
    • RGB = Red-Green-Blue Color Space (additiv)
    • HSV = Hue-Saturation-Value Color Space (nicht HSL)
    • HSV und RGB sind äquivalent und gleichmächtig, allerdings ist die Transformation nicht vollständig bijektiv (Graustufen und Schwarz in HSV uneindeutig)
    • YIQ: enthält Schwarz-Weiß-Kanal (Y, entstanden durch Wechsel auf Farbfernsehen) und Chroma-Koeffizienten I (in-phase, Cyan Orange) sowie Q (quadrature, Magenta Grün)
    • CMYK (Cyan-Magenta-Yellow-Key): subtraktives Farbmodell (im Gegensatz zum additiven RGB), in der Praxis von Ausgabemedium (Papierart u.ä.) relevant sowie dunkle Farben nur mit Key-Kanal darstellbar
  • Gamut: “a certain complete subset of colors”, z.B. Farbbereich, der von einem Gerät tatsächlich erfasst bzw. dargestellt werden kann

Chromatic Subsampling:

  • speichert für benachbarte Pixel nur gemeinsame Grundfarbe sowie einzelne Helligkeitswerte
  • reduziert Bandbreite ohne die Bilddarstellung wesentlich zu verschlechtern

Gamma-Korrektur:

  • RGB-Werte von Kameras sind linear
  • RGB-Werte von Ausgabegeräten sind nicht-linear
  • Gamma-Korrektur bezeichnet nichtlineare Voranpassung der RGB-Werte, mit dem Ziel der linearen Darstellung der RGB-Werte im Ausgabegerät
  • Implementierung z.B. mit Look-Up-Tables


Funktionsplots

Ein Raster mit einer Auflösung Pixel lässt sich zur Visualisierung einer Funktion über einen zweidimensionalen Definitionsbereich einsetzen

Reverse Mapping: Jeder Rasterposition wird eine entsprechende Position in zugeordnet.

Das Funktionsergebnis wird an der zugehörigen Rasterposition abgebildet (z.B. mit Farbskala)