farbbild_-_graubild_-_binaerbild
                Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| farbbild_-_graubild_-_binaerbild [2024/01/20 09:03] – angelegt torsten.roehl | farbbild_-_graubild_-_binaerbild [2024/01/20 09:26] (aktuell) – [Beispiel] torsten.roehl | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| Dieser Abschnitt behandelt die Umwandlung von Farbbildern im RGB-System in Graubilder. | Dieser Abschnitt behandelt die Umwandlung von Farbbildern im RGB-System in Graubilder. | ||
| ===== Umwandlung von Farbbildern im RGB-System in Graubilder ===== | ===== Umwandlung von Farbbildern im RGB-System in Graubilder ===== | ||
| + | Die Umwandlung von Farbbildern in Graubilder erfolgt mit folgender Vorschrift: | ||
| + | |||
| + | * **Luminanz: | ||
| + | |||
| + | mit\\ | ||
| + | <color # | ||
| + | <color # | ||
| + | <color # | ||
| + | **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("/ | ||
| + | // Farbwert holen | ||
| + | Color alt = pic.getColor(4, | ||
| + | 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, | ||
| + | System.out.println(" | ||
| + |  | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |{{ : | ||
| + | |< | ||
| + | Der Krebsnebel zeigt die Überreste einer Supernova (Sternenexplosion). Sie wurde im Jahre 1054 von Chinesen beobachtet.</ | ||
| + | |||
| + | 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). | ||
| + | Die Ursprünge der Formel liegen u.a. in der Fernsehtechnik, | ||
| + | |||
| ===== Umwandlung von Graubildern in Binärbilder ===== | ===== Umwandlung von Graubildern in Binärbilder ===== | ||
| + | |||
| + | == Der Schwellenwert c == | ||
| + | |||
| + | Ein Graubild enthält noch viele verschiedene Grauanteile. Wenn man lediglich zwei verschiedene Farbwerte (schwarz/ | ||
| + | |||
| + | * 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 ==== | ||
| + | |||
| + | <Code Java linenums: | ||
| + | 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("/ | ||
| + | // Farbe beziehen | ||
| + | Color color = pic.getColor(4, | ||
| + | // 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, | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |{{: | ||
| + | |Das Orginal Graubild.|Binärbild mit Schwellenwert | ||
| ===== Ein wenig ' | ===== Ein wenig ' | ||
| - | ===== ===== | ||
| + | In der Java-Bibliothek existieren zwei Methoden - **brighter()** und **darker()** - mit deren Hilfe ein Farbwert heller beziehungsweise dunkler gesetzt werden kann. | ||
| + | |||
| + | * Color brighter() liefert einen helleren Farbton zurück. | ||
| + | * Color darker() liefert einen dunkleren Farbton zurück. | ||
| + | |||
| + | |||
| + | Da für diese Methoden der Quellcode eingesehen werden kann, können wir unmittelbar nachvollziehen, | ||
| + | |||
| + | |||
| + | |<Code Java linenums: | ||
| + | public Color brighter() { | ||
| + | return new Color(Math.min((int)(getRed() | ||
| + |  | ||
| + |  | ||
| + | } | ||
| + | public Color darker() { | ||
| + | return new Color(Math.max((int)(getRed() | ||
| + |  | ||
| + |  | ||
| + | } | ||
| + | </ | ||
| + | |Codebeispiel aus der Java-Bibliothek. Die Konstante FACTOR hat dabei den Wert 0.7.| | ||
| + | |||
| + | ==== Beispiel ==== | ||
| + | |||
| + | Das folgende Programm lädt ein Bild und  setzt den Bildpunkt an der Stelle x=5, y=4 ein wenig " | ||
| + | <Code Java linenums: | ||
| + | import java.awt.Color; | ||
| + | |||
| + | import de.informatics4kids.Picture; | ||
| + | import de.informatics4kids.PictureViewer; | ||
| + | |||
| + | public class Main { | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | |||
| + | Picture pic = new Picture(); | ||
| + | pic.open("/ | ||
| + | Color alt = pic.getColor(4, | ||
| + | Color neu = alt.brighter(); | ||
| + | pic.setColor(4, | ||
| + | |||
| + |  | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | Durchläuft man alle Bildpunkte (Pixel) kann man auf diese Weise Bilder // | ||
| + | | {{ : | ||
| + | |Orginal Bild|Die Java-Methode '' | ||
| + | <WRAP center round info 100%> | ||
| + | Wer tiefer einsteigen will, dem sei das Buch //Java Insel (Kapitel ' | ||
| + | </ | ||
farbbild_-_graubild_-_binaerbild.1705741400.txt.gz · Zuletzt geändert:  von torsten.roehl
                
                