Benutzer-Werkzeuge

Webseiten-Werkzeuge


grundlagen_der_bildverarbeitung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
grundlagen_der_bildverarbeitung [2024/01/20 08:31] – [Das RGB System und Java] torsten.roehlgrundlagen_der_bildverarbeitung [2024/01/21 17:06] (aktuell) – [Pixelzahl eines Bildes] torsten.roehl
Zeile 16: Zeile 16:
  
  
-Jeder Bildpunkt besitzt einen Farbwert. Die Menge aller Farbwerte wird mit W bezeichnet.\+Jeder Bildpunkt besitzt einen Farbwert. Die Menge aller Farbwerte wird mit W bezeichnet.
  
 Ein digitalisiertes Bild (b) ist eine Abbildung, bei der jeder Bildpunkt aus der Menge M des Bildbereiches einen Farbwert zugewiesen bekommt. Ein digitalisiertes Bild (b) ist eine Abbildung, bei der jeder Bildpunkt aus der Menge M des Bildbereiches einen Farbwert zugewiesen bekommt.
  
 <note important> <note important>
-Definiton: Digitalisiertes Bild:  b: M → W\\+**Definiton**: Digitalisiertes Bild:  b: M → W\\
 M ist der Bildbereich\\ M ist der Bildbereich\\
 W ist die Menge aller Farbwerte</note> W ist die Menge aller Farbwerte</note>
Zeile 35: Zeile 35:
 Das folgende Codefragment erzeugt alle Farben die im Bild zu sehen sind: Das folgende Codefragment erzeugt alle Farben die im Bild zu sehen sind:
  
-|{{:inf:java:color-model-additive.png?|}}|<WRAP><code>Color rot = Color(255,0.0);+|{{:inf:java:color-model-additive.png?|}}|<WRAP><Code Java> 
 + 
 +Color rot = Color(255,0.0);
 Color green = Color(0,255.0); Color green = Color(0,255.0);
 Color blue = Color(0,0,255);  Color blue = Color(0,0,255); 
Zeile 42: Zeile 44:
 Color gelb = Color(255,255,0); Color gelb = Color(255,255,0);
 Color black = Color(0,0,0); Color black = Color(0,0,0);
-Color white = Color(255,255,255);</code></WRAP>|+Color white = Color(255,255,255);
  
 +
 +</Code></WRAP>|
 +|Im RGB-System erhält jede Farbe einen bestimmten Anteil an <color #ed1c24>rot</color>, <color #22b14c>grün</color> und <color #00a2e8>blau</color>.||
 +
 +  * ''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<color #ed1c24> getRed()</color>, int<color #22b14c> getGreen()</color>, int <color #00a2e8>getBlue()</color>  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)''
 +
 +==== Color-Objekt  ====
 +
 +Ein **Color-Objekt** ist 32 Bit groß. Das letzte Byte, der α-Wert, ist die Transparenz (Deckkraft).
 +
 +|@red:<WRAP><color #ffffff>**Bit: 0-7  Rot-Wert   Wertebereich 0-255**</color></WRAP>|@green:<WRAP><color #ffffff>**Bit: 8-15  Grün-Wert   Wertebereich 0-255**</color></WRAP>|@blue:<WRAP><color #ffffff>**Bit: 16-23  Blau-Wert   Wertebereich 0-255**</color></WRAP>|<WRAP>Bit: 24-31  Transparenz (Deckkraft)</WRAP>|
 +|Aufbau **java.awt.Color-Objekt** ||||
 +
 +==== FSG-Bibliothek: Laden & Anzeigen eines Bildes  ====
 +
 +
 +
 +Das folgende Programm lädt ein Bild und zeigt es innerhalb eines Fensters an.
 +
 +
 +
 +<Code Java linenums:1>
 +import de.informatics4kids.Picture;
 +import de.informatics4kids.PictureViewer;
 + 
 +public class Viewer {
 + 
 +    public static void main(String[] args) {
 + 
 +        // Bild erstellen und öffnen
 +        Picture pic = new Picture("/home/student/testbild.jpg");        
 +        //Viewer verfügbar machen
 +        PictureViewer viewer = new PictureViewer(pic.getPicture());
 +        //Bild anzeigen
 +        viewer.show();
 +    }
 +}
 +</Code>
 +
 +|{{ :inf:java:hund.jpg? |}}|
 +|Das Bild aus dem obigen Programmbeispiel angezeigt mit der PictureViewer Klasse.|
 ===== Rot-, Grün-, und Blaubilder ===== ===== Rot-, Grün-, und Blaubilder =====
 +
 +Aus dem obigen Bild lässt 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.
 +
 +<Code Java linenums:1>
 +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");
 +        // leere Kopie erzeugen
 +        Picture rotBild = new Picture(pic.widthX(), pic.heightY());
 +        // Farbe auslesen und neu erzeugen
 +        Color farbe = pic.getColor(3, 4);
 +       // nur rote Komponente einfügen!
 +        Color rot = new Color(farbe.getRed(), 0, 0);
 +        // Farbe setzen
 +        rotBild.setColor(3, 4, rot);
 +    }
 +}
 +</Code>
 +
 +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.
 +
 +|{{ :inf:java:hunde.png? |}}|
 +|<color #ed1c24>Rot-</color> ,<color #22b14c>Grün-</color> und <color #00a2e8>Blaubilder</color> enthalten jeweils nur einen Farbwert des Orginalbildes.|
 ===== Histogramme ===== ===== Histogramme =====
  
 +
 +Das Bild des roten Hundes besteht lediglich aus roten Farbwerten.  Mit der Java Methode getRed()  lässt 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.
 +
 +
 +|{{ :inf:java:histogramm.png? |}}|
 +|Histogramm des roten und grünen Hundes (siehe vorherigen Abschnitt).  Auf der y-Achse lässt 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 Farbbereichs 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.
 +<note important>
 +**Definition**:  Histogramm h
 +$$h:W \rightarrow [0,1]$$
 +  * W: Farbbereich
 +  * [0,1] Zahlenintervall von 0 bis 1.
 +mit 
 +$$h(g)=\frac{\text{Menge aller Pixel mit dem Farbwert g}}{\text{Gesamtpixelzahl des Bildes}}$$
 +</note>
  
  
grundlagen_der_bildverarbeitung.1705739481.txt.gz · Zuletzt geändert: 2024/01/20 08:31 von torsten.roehl