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:41] – [Color-Objekt] 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 59: Zeile 59:
 Ein **Color-Objekt** ist 32 Bit groß. Das letzte Byte, der α-Wert, ist die Transparenz (Deckkraft). Ein **Color-Objekt** ist 32 Bit groß. Das letzte Byte, der α-Wert, ist die Transparenz (Deckkraft).
  
-|<WRAP>Bit: 0-7  Rot-Wert   Wertebereich 0-255</WRAP>|<WRAP>Bit: 8-15  Grün-Wert   Wertebereich 0-255</WRAP>|<WRAP>Bit: 16-23  Blau-Wert   Wertebereich 0-255</WRAP>|<WRAP>Bit: 24-31  Transparenz (Deckkraft)</WRAP>+|@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 ||||+|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.1705740100.txt.gz · Zuletzt geändert: 2024/01/20 08:41 von torsten.roehl