Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Farbbild - Graubild - Binärbild
Dieser Abschnitt behandelt die Umwandlung von Farbbildern im RGB-System in Graubilder. Graubilder wiederum können dann in Binärbilder umgewandelt werden.
Umwandlung von Farbbildern im RGB-System in Graubilder
Die Umwandlung von Farbbildern in Graubilder erfolgt mit folgender Vorschrift:
- Luminanz: y = 0.3 · r + 0.59 · g + 0.11 · b
mit
r = Rotanteil (0-255)
g = Grünanteil (0-255)
b = Blauanteil (0.255)
y ist der Grauwert der auch als Luminanz bezeichnet wird.
Beispiel
Das folgende Programm lädt ein Bild und berechnet die Luminanz (den Grauwert) an der Stelle x=5, y=4.
import java.awt.Color; import de.informatics4kids.Picture; import de.informatics4kids.PictureViewer; public class Luminanz { public static void main(String[] args) { Picture pic = new Picture(); pic.open("/home/student/katze.jpg"); // Farbwert holen Color alt = pic.getColor(4, 3); int y = (int) (0.3 * alt.getRed() + 0.59 * alt.getGreen() + 0.11 * alt .getBlue()); // neuen Farbwert erstellen und setzen Color grau = new Color(y, y, y); pic.setColor(4,3, grau); System.out.println("Luminanz=" + y ); } }
Die Werte für 30% Rot-, 59% Grün- und 11% Blauanteil, die auch von Gimp verwendet werden um Graubilder zu erzeugen, haben ihre Begründung letztendlich in der Psychophysik (z.B. Weber-Fechner-Gesetz). Beispielsweise nimmt das menschliche Auge grün heller wahr als rot und rot wiederum heller als blau. Die Ursprünge der Formel liegen u.a. in der Fernsehtechnik, denn bei der Darstellung von Farb- und Schwarz/Weiß-Bildern wurde sie früh benötigt.
Umwandlung von Graubildern in Binärbilder
Der Schwellenwert c
Ein Graubild enthält noch viele verschiedene Grauanteile. Wenn man lediglich zwei verschiedene Farbwerte (schwarz/weiß) verwendet, bekommt man ein Binärbild. Dabei ist erst einmal nicht klar definiert, ab wann ein Grauwert nun schwarz oder weiß werden soll. Oft muss ein Schwellenwert c experimentell gefunden werden, um gute Ergebnisse zu erhalten.
- Alle Grauwerte unterhalb des Schwellenwerts werden schwarz.
- Diejenigen Grauwerte, die größer oder gleich dem Schwellenwert sind, werden weiß.
Das folgende Programm lädt ein Graubild und berechnet den Farbwert (schwarz oder weiß) für einen Pixel an der Stelle x=5, y=4.d.h. die Bildkoordinaten sind (4,3).
Beispiel
import java.awt.Color; import de.informatics4kids.Picture; public class Main { public static void main(String[] args) { // testbild.jpg öffnen Picture pic = new Picture(); pic.open("/home/student/Bilder/testbild.jpg"); // Farbe beziehen Color color = pic.getColor(4,3); // Grauwert berechnen - alle Farbwerte sind gleich! int g = color.getRed(); // BInärwert berechnen int binarvalue; if (g <= 150) binarvalue = 0; else binarvalue = 255; // Binärwert in neue Farbe einfügen Color binarcolor = new Color(binarvalue, binarvalue, binarvalue); }