a) Repräsentation von Bilddaten im ComputerAufgabestellung: Es soll eine Klasse (C++/Java) entworfen werden mit der sich Grauwert- und Farbbilder beliebiger Größe im Computerspeicher repräsentieren lassen.
Informationen:
Bilddaten werden in der Regel als Matrix bzw. zweidimensionales Array im Computer repräsentiert. Obige Abbildung zeigt ein Grauwertbild und einen Ausschnitt des Bildes in Matrixdarstellung. Jede Zahl der Matrix repräsentiert dabei das korrespondierende Pixel im Bild. Bei Grauwertbildern verwendet man einen Wertebereich von 0-255: 0 entspricht dabei der Farbe "schwarz", während 255 für "weiss" steht.
Die Repräsentation von Farbbildern unterscheidet sich nur dadurch, daß mehrere Kanäle gespeichert werden müssen. D.h. man verwendet bei RGB-Farbbildern drei Matrizen (R, G, B). Auch hier umfasst der Wertebereich der einzelnen Matrixelemente 0-255.
b) Bildformate
Aufgabenstellung: Die unter a) entworfene Klasse soll um Routinen zum Einlesen und zur Abspeicherung von Bilddaten im PGM- und PPM-Format erweitert werden.
Informationen:
PGM (portable graymap file format) ist ein einfaches Dateiformat für Grauwertbilder. Im wesentlichen werden die Anzahl der Grauwerte, die Größe des Bildes sowie die einzelnen Pixelwerte in einer Datei abgelegt. Genaue Angaben zu PGM finden sich hier.
PPM (portable pixmap file format) ist ein einfaches Dateiformat für Farbbilder. Im Unterschied zu PGM wird nicht ein einzelner Wert pro Pixel abgelegt, sondern es werden die Werte der verschiedenen Kanäle (R, G, B) aufeinanderfolgend gespeichert. Genaue Angaben zu PPM finden sich hier.
Hinweise:
- Eure Implementierung soll lediglich die binären Versionen (P5 bzw. P6) der beiden Formate unterstützen.
- Zur Anzeige von PGM-/PPM-Bildern auf dem Bildschirm können unter Unix die Programme xv und ImageMagick verwendet werden. Für Windows9x ist mit Iview ein entsprechendes Programm verfügbar.
- Testdaten: lenna.pgm und lenna.ppm