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: von torsten.roehl
