grundlagen_der_bildverarbeitung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
grundlagen_der_bildverarbeitung [2024/01/20 08:18] – angelegt torsten.roehl | grundlagen_der_bildverarbeitung [2024/01/21 17:06] (aktuell) – [Pixelzahl eines Bildes] torsten.roehl | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
Als erste Anwendung werden aus einem gegebenen Farbbild <color # | Als erste Anwendung werden aus einem gegebenen Farbbild <color # | ||
+ | ==== Pixelzahl eines Bildes ==== | ||
+ | |||
+ | Jedes Bild (z.B. PNG oder JPEG) besitzt eine bestimmte Breite | ||
+ | |||
+ | < | ||
+ | oder\\ | ||
+ | **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 ===== | ||
+ | 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 ===== | ||
+ | |||
+ | 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 ===== | ||
+ | |||
+ | |||
+ | 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.1705738694.txt.gz · Zuletzt geändert: 2024/01/20 08:18 von torsten.roehl