grundlagen_der_bildverarbeitung
                Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| grundlagen_der_bildverarbeitung [2024/01/20 08:26] – [Pixelzahl eines Bildes] torsten.roehl | grundlagen_der_bildverarbeitung [2024/01/21 17:06] (aktuell) – [Pixelzahl eines Bildes] torsten.roehl | ||
|---|---|---|---|
| Zeile 11: | Zeile 11: | ||
| oder\\ | oder\\ | ||
| **Bildbereich M = X  ·  Y**</ | **Bildbereich M = X  ·  Y**</ | ||
| + | |||
| + | |{{ : | ||
| + | |Bildbereich M und Bildpunkte (Pixel). | ||
| + | |||
| + | |||
| + | 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. | ||
| + | |||
| + | <note important> | ||
| + | **Definiton**: | ||
| + | M ist der Bildbereich\\ | ||
| + | W ist die Menge aller Farbwerte</ | ||
| ===== Das RGB System und Java ===== | ===== Das RGB System und Java ===== | ||
| + | Eine Farbe ist durch ihre Anteile an den drei Grundfarben rot, grün und blau definiert. Dieses sogenannte RGB-System (Rot-Grün-Blau-System) | ||
| + | |||
| + | Da jede der drei Grundfarben in 256 Stufen (0 - 255) dargestellt werden kann, lassen sich im RGB System ca. 16,7 Mio. verschiedene Farben definieren. | ||
| + | |||
| + | * 256 Rotwerte · 256 Grünwerte · 256 Blauwerte | ||
| + | |||
| + | |||
| + | Für Java gilt nun , dass jeder Bildpunkt ein Objekt (Variable) vom Typ Color ist. | ||
| + | Das folgende Codefragment erzeugt alle Farben die im Bild zu sehen sind: | ||
| + | |||
| + | |{{: | ||
| + | |||
| + | Color rot = Color(255, | ||
| + | Color green = Color(0, | ||
| + | Color blue = Color(0, | ||
| + | Color magenta = Color(255, | ||
| + | Color cyan = Color(0, | ||
| + | Color gelb = Color(255, | ||
| + | Color black = Color(0, | ||
| + | Color white = Color(255, | ||
| + | |||
| + | |||
| + | </ | ||
| + | |Im RGB-System erhält jede Farbe einen bestimmten Anteil an <color # | ||
| + | |||
| + | * '' | ||
| + | * Die Methoden: int< | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ==== Color-Objekt | ||
| + | |||
| + | Ein **Color-Objekt** ist 32 Bit groß. Das letzte Byte, der α-Wert, ist die Transparenz (Deckkraft). | ||
| + | |||
| + | |@red:< | ||
| + | |Aufbau **java.awt.Color-Objekt** |||| | ||
| + | |||
| + | ==== FSG-Bibliothek: | ||
| + | |||
| + | |||
| + | |||
| + | Das folgende Programm lädt ein Bild und zeigt es innerhalb eines Fensters an. | ||
| + | |||
| + | |||
| + | |||
| + | <Code Java linenums: | ||
| + | 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("/ | ||
| + | //Viewer verfügbar machen | ||
| + | PictureViewer viewer = new PictureViewer(pic.getPicture()); | ||
| + | //Bild anzeigen | ||
| + | viewer.show(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |{{ : | ||
| + | |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: | ||
| + | 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("/ | ||
| + | // leere Kopie erzeugen | ||
| + | Picture rotBild = new Picture(pic.widthX(), | ||
| + | // Farbe auslesen und neu erzeugen | ||
| + | Color farbe = pic.getColor(3, | ||
| + | // nur rote Komponente einfügen! | ||
| + | Color rot = new Color(farbe.getRed(), | ||
| + | // Farbe setzen | ||
| + | rotBild.setColor(3, | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 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 " | ||
| + | |||
| + | |{{ : | ||
| + | |<color # | ||
| ===== Histogramme ===== | ===== Histogramme ===== | ||
| + | |||
| + | Das Bild des roten Hundes besteht lediglich aus roten Farbwerten. | ||
| + | |||
| + | |||
| + | |{{ : | ||
| + | |Histogramm des roten und grünen Hundes (siehe vorherigen Abschnitt). | ||
| + | |||
| + | Ein Histogramm **h** eines Bildes **b** ist eine Abbildung von der Menge **W** des Farbbereichs auf das Intervall [0, | ||
| + | <note important> | ||
| + | **Definition**: | ||
| + | $$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}}$$ | ||
| + | </ | ||
grundlagen_der_bildverarbeitung.1705739177.txt.gz · Zuletzt geändert:  von torsten.roehl
                
                