farbbild_-_graubild_-_binaerbild
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
farbbild_-_graubild_-_binaerbild [2024/01/20 09:06] – [Umwandlung von Farbbildern im RGB-System in Graubilder] torsten.roehl | farbbild_-_graubild_-_binaerbild [2024/01/20 09:26] (aktuell) – [Beispiel] torsten.roehl | ||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
mit\\ | mit\\ | ||
- | r = Rotanteil (0-255)\\ | + | <color #ed1c24>r = Rotanteil (0-255)</ |
- | g = Grünanteil (0-255)\\ | + | <color #22b14c>g = Grünanteil (0-255)</ |
- | b = Blauanteil (0.255)\\ | + | <color #00a2e8>b = Blauanteil (0.255)</ |
**y** ist der Grauwert der auch als **Luminanz** bezeichnet wird. | **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.1705741592.txt.gz · Zuletzt geändert: 2024/01/20 09:06 von torsten.roehl