Grundlagen der Bildverarbeitung
![]() |
Dieser Abschnitt erklärt Grundbegriffe der digitalen Bildverarbeitung. Vorerst werden nur pixelbasierte Bilder betrachtet. Vektorgrafiken werden nicht behandelt. Als erste Anwendung werden aus einem gegebenen Farbbild ROT-, GRÜN- und BLAU-Bilder, sowie Histogramme erstellt. |
Jedes Bild (z.B. PNG oder JPEG) besitzt eine bestimmte Breite (X) und Höhe (Y). Diese beiden Angaben legen die Anzahl der Bildpunkte (Pixel) fest. Alle Bildpunkte zusammen bilden den Bildbereich:
Pixelzahl eines Bildes = Breite · Höhe
oder
Bildbereich M = X · Y
Jeder Bildpunkt besitzt einen Farbwert. Die Menge aller Farbwerte wird mit W bezeichnet.
Ein digitalisiertes Bild (b) ist eine Abildung, bei der jeder Bildpunkt aus der Menge M des Bildbereiches einen Farbwert zugewiesen bekommt.
Für Java gilt nun , dass jeder Bildpunkt ein Objekt (Variable) vom Typ Color ist.
Das folgende Codefragment erzeugt alle Farben die im Bild zu sehen sind:
Pixelzahl eines Bildes = Breite · Höhe
oder
Bildbereich M = X · Y
![]() |
Bildbereich M und Bildpunkte (Pixel). Der Farbwert w von jedem Pixel kann in einer Tabelle W gespeichert werden. W ist also die Menge aller Farbwerte. |
Jeder Bildpunkt besitzt einen Farbwert. Die Menge aller Farbwerte wird mit W bezeichnet.
Ein digitalisiertes Bild (b) ist eine Abildung, bei der jeder Bildpunkt aus der Menge M des Bildbereiches einen Farbwert zugewiesen bekommt.
![]() |
Definiton: Digitalisiertes Bild: b: M → W M ist der Bildbereich W ist die Menge aller Farbwerte |
Das RGB System und Java
Eine Farbe ist durch ihre Anteile an den drei Grundfarben rot, grün und blau definiert. Dieses sogenannte RGB-System (Rot-Grün-Blau-System) basiert auf der additiven Farbmischung und ist nur eines von mehreren Farbmodellen, das für unsere Zwecke aber vollkommen ausreicht
Da jede der drei Grundfarben in 256 Stufen (0 - 255) dargestellt werden kann, lassen sich im RGB System ca. 16,7 Mio. verschiedene Farben definieren. |
|
- 256 Rotwerte · 256 Grünwerte · 256 Blauwerte = 16 777 216 ≈ 16.7 Mio. Farben
Für Java gilt nun , dass jeder Bildpunkt ein Objekt (Variable) vom Typ Color ist.
Das folgende Codefragment erzeugt alle Farben die im Bild zu sehen sind:
![]() |
|
Im RGB-System erhält jede Farbe einen bestimmten Anteil an rot, grün und blau. |
|
- Color( int r, int g, int b ) erzeugt ein Color-Objekt mit den Grundfarben rot, grün und blau. Die Werte müssen im Bereich 0 bis 255 liegen. Jeder Farbwert ist also 1 byte = 8 bit groß.
- Die Methoden: int getRed(), int getGreen(), int getBlue() liefern jeweils den Rot-, Grün- und Blau-Anteil des Farbobjekts zurück. Jeder Farbwert ist dabei eine Zahl im Bereich von 0 bis 255.
- Color SCHWARZ = Color(0,0,0)
- Color WEISS = Color(255,255,255)
Bit: 0-7 Rot-Wert Wertebereich 0-255 | Bit: 8-15 Grün-Wert Wertebereich 0-255 | Bit: 16-23 Blau-Wert Wertebereich 0-255 | Bit: 24-31 Transparenz (Deckkraft) |
Aufbau java.awt.Color-Objekt |
Das folgende Programm lädt ein Bild und zeigt es innerhalb eines Fensters an:
![]() |
|
Das Bild aus dem vorherigen Programmbeispiel angezeigt mit der PictureViewer Klasse. |
Rot-, Grün-, und Blaubilder
Aus dem obigen Bild läßt sich ein Rotbild erzeugen, indem von jedem Pixel der Farbwert ermittelt und der Rotanteil bestimmt wird. Anschließend wird der Farbwert des Pixels durch ein Color-Objekt ersetzt, das nur den ermittelten Rotanteil enthält.
Das folgende Programm demonstriert dies Anhand des Pixels an der Position x = 4 und y = 5.
Der erste Pixel hat die Position (0,0) und befindet sich oben links im Bild.
Durchläuft man alle Pixel des Bildes und speichert immer nur eine Farbkomponente ab, erhält man Rot- ,Grün- oder Blaubilder. Auf diese Weise wurden die "bunten Hunde" erzeugt.
![]() |
Rot- ,Grün- und Blaubilder enthalten jeweils nur einen Farbwert des Orginalbildes. |
Histogramme
Das Bild des roten Hundes besteht lediglich aus roten Farbwerten. Mit der Java Methode getRed() läßt sich der Farbwert jedes Bildpunktes (Pixel) auslesen und liefert einen Wert im Bereich von 0-255. Wird nun auf der X-Achse die Menge aller möglichen Farbwerte (0-255) und auf der dazugehörigen y-Achse jeweils, wie oft ein spezieller Farbwert im Bild gefunden wurde, aufgetragen, dann entsteht ein Histogramm.
Ein Histogramm h eines Bildes b ist eine Abbildung von der Menge W des Farbereichs auf das Intervall [0,1]. Derjenige Farbwert (g), der am häufigsten vorkommt, erhält den Wert 1. Ein Farbwert, der überhaupt nicht vertreten ist, würde den Wert 0 zugewiesen bekommen.
![]() |
Histogramm des roten und grünen Hundes. Auf der y-Achse läßt sich ablesen, wie oft ein einzelner Farbwert im jeweiligen Bild vorhanden ist. Wenn man alle Werte der Y-Achse durch den größten vorhandenen Wert teilt, dann liegen die Häufigkeiten zwischen 0 und 1. Dies nennt man Normierung. |
Ein Histogramm h eines Bildes b ist eine Abbildung von der Menge W des Farbereichs auf das Intervall [0,1]. Derjenige Farbwert (g), der am häufigsten vorkommt, erhält den Wert 1. Ein Farbwert, der überhaupt nicht vertreten ist, würde den Wert 0 zugewiesen bekommen.
![]() |
Definition: Histogramm h h: W → [0,1] W: Farbbereich [0,1] Zahlenintervall von 0 bis 1.
|
![]() |
Histogramme und Rot-, Grün-, und Blaubilder werden im Aufgabenbereich "Java" behandelt. |