Weitere Aufgabenvorschläge

Werbung
Aufgabenvorschlag:
Gegeben ist ein Malprogramm, mit dem weiße Felder mit
den Farben gelb, rot, blau oder grün gefärbt werden
können:
Das Bild wird als zweidimensionale Reihung von
Zeichen gespeichert:
char[][] bild = new char[breite][hoehe];
wobei folgende Zeichen abgespeichert werden: 'w' für
weiß, 'r' für rot, 'y' für gelb, 'g' für grün und 'b' für blau.
Aufgabe 1:
Das Bild soll ferner als Zeichenkette gespeichert werden, mittels Lauflängencodierung.
Lauflängencodierung meint folgendes: Statt jedes Zeichen einzeln in speichern, wird angegeben,
wie viele gleiche Zeichen folgen werden und anschließend das zugehörige Zeichen, unterbrochen
von Trennzeichen. Das obige Bild würde demnach als Zeichenkette folgendermaßen aussehen:
10:w|10:w|4:w,1:r,5:w|3:w,1:r,1:y,1:r,4:w|4:w,1:r,5:w|4:w,1:g,5:w|
3:w,2:g,5:w|4:w,2:g,4:w|4:w,1:g,5:w|4:w,1:g,5:w|
Wobei das Zeichen '|' die Zeilen im Bild trennt.
a) Geben Sie das nebenstehende Bild mittels Lauflängencodierung als Zeichenkette an.
b) Nehmen Sie das Attribut bild wie oben als
global definiert an und schreiben Sie eine Methode
public String Lauflaenge (char[][] bild)
{…}
die eine Lauflängencodierung
Definition durchführt.
nach
obiger
Aufgabe 2:
Eine Farbe kann auch als RGB-Wert angegeben werden.
(Zur Erinnerung: Ein RGB-Wert ist ein Tripel von Zahlen im
Bereich 0 bis 255, wobei die Farbe Rot = RGB(255, 0, 0),
Grün = RGB(0, 255, 0) und Blau = RGB (0, 0, 255).
Schwarz hingegen hat den RGB-Wert (0,0,0).)
Für die Farben cyan, mangenta, weiß und gelb ist folgender
Farbwürfel hilfreich:
Zu einer Farbe, z.B. RGB(124, 71, 0) gehört nun die Falschfarbe RGB(131, 184, 255), da
255-124=131,
255-71=184 und
255-0=255.
a) Geben Sie für das unten stehende Bild an, wie das zugehörige Bild in Falschfarbendarstellung
aussieht.
Lösung:
b) Das Attribut bild2 speichert das Bild des Malprogramms nun als zweidimensionale Reihung
von Objekten der Klasse Pixel.
Pixel[][] bild2 = new Pixel[breite][hoehe];
Zu der Klasse Pixel gehören folgende Methoden:
getRot():int
liefert einen Wert zwischen 0 und 255, die Rotkomponente im
RGB-Farbmodell
getGruen():int
liefert einen Wert zwischen 0 und 255, die Grünkomponente im
RGB-Farbmodell
getBlau():int
liefert einen Wert zwischen 0 und 255, die Blaukomponente im
RGB-Farbmodell
Pixel(int r, int g, int b)
Der Konstruktor kann mit den drei Farbwerten des RGBModells aufgerufen werden
Implementieren Sie ein Codefragment in Java, welches ein Falschfarbenbild von bild2 ebenfalls
als zweidimensionale Reihung erzeugt.
Aufgabe 3:
Zum Abspeichern des Bildes soll ein Format verwendet werden, dass „JPEG“ simulieren soll. JPEG
schränkt u.a. zur Kompression der Dateigröße den Farbraum eines Bildes ein, indem 8x8
Pixelblöcke gebildet werden. Die RGB-Werte der Farben in den 8x8 Pixelblöcken werden
„gemittelt“ und haben nach dem Speichern so alle dieselbe Farbe.
Das soll in diesem Malprogramm mit 2x2 Pixelblöcken simuliert werden.
a) Verwenden Sie die Definition von bild2, der zweidimensionalen Reihung der Klasse Pixel,
aus Aufgabe 2. Schreiben Sie ein Java-Codefragment, welches den RGB-Wert der unten gezeigten
2x2 Blöcke mittelt und das entstehende Bild ebenfalls als zweidimensionale Reihung speichert.
Zur Veranschaulichung: 2x2-er Blöcke
Zugehörige Unterlagen
Herunterladen