Informatik

Dein eigener Filter

Auf dieser Seite gibt es keine Musterlösung und kein Zielbild. Du hast alles beisammen, was man braucht, um mit einem Bild zu machen, was man will: das Gitter, die Schleifen, die Nachbarn, die Filterklassen.

Such dir eine Idee aus – oder nimm eine eigene.

Die Regeln

  1. Dein Filter ist eine Klasse, die von Filter erbt. Er lässt sich damit in jede Kette stecken.
  2. Alles, was man einstellen kann, kommt als Parameter in den Konstruktor – nicht als feste Zahl in den Rumpf.
  3. Zeige am Ende mindestens drei Varianten nebeneinander: dasselbe Bild mit verschiedenen Einstellungen. Ein Filter, von dem man nur eine Einstellung sieht, ist kein Filter, sondern ein Effekt.

Ideen

Posterisieren. Erlaube nur noch wenige Helligkeitsstufen – etwa 4, 8 oder 16 statt 256. Alles dazwischen wird auf die nächstgelegene erlaubte Stufe gerundet. Das Bild bekommt dadurch flächige, plakatartige Bereiche.

Der Kern ist eine einzige Rechnung. Finde sie, indem du dir aufschreibst, welche Eingabewerte auf welchen Ausgabewert fallen sollen.

Pixeln. Fasse Blöcke von n × n Bildpunkten zusammen und gib allen den Durchschnitt des Blocks. Das ist die Verpixelung, mit der Gesichter unkenntlich gemacht werden.

Du brauchst vier geschachtelte Schleifen: zwei über die Blöcke, zwei innerhalb eines Blocks. Überlege dir vorher, was passiert, wenn 96 nicht durch n teilbar ist.

Vignette. Dunkle das Bild zum Rand hin ab – in der Mitte bleibt es hell, außen wird es fast schwarz. Der Faktor hängt vom Abstand zur Bildmitte ab.

Math.sqrt liefert den Abstand, aber du kannst ihn auch ohne Wurzel abschätzen. Der größte vorkommende Abstand ist der zur Ecke – den brauchst du, um zu normieren.

Rauschen. Addiere zu jedem Bildpunkt eine kleine Zufallszahl. Bei welcher Stärke sieht es nach altem Film aus, ab wann nach kaputtem Sensor?

Setze danach deinen Weichzeichner dahinter und sieh nach, wie viel er davon wieder wegbekommt. Das ist der ehrlichste Test für einen Glättungsfilter.

Medianfilter. Nimm nicht den Durchschnitt der neun Nachbarn, sondern den mittleren – sortiere sie und nimm den fünften.

Vergleiche ihn mit dem Weichzeichner an einem verrauschten Bild. Er entfernt einzelne Ausreißer vollständig, ohne Kanten zu verwischen. Warum kann der Durchschnitt das nicht?

Zwei Bilder mischen. Erzeuge dir ein zweites Bild – etwa ein Schachbrettmuster oder einen Farbverlauf – und mische es mit dem Foto: neu = (foto * p + muster * (100 - p)) / 100.

Mit einem Farbverlauf als zweitem Bild bekommst du einen Verlaufsfilter, wie ihn Fotoapps anbieten. Mit dem Ergebnis deines Kantenfilters als zweitem Bild bekommst du etwas ganz anderes – probiere es.

Die Werkbank

Hier ist alles beisammen: die Oberklasse Filter, vier fertige Filter zum Abgucken und eine leere Klasse MeinFilter, in der dein Filter entsteht.

staerke ist nur ein Vorschlag für den Namen und int nur ein Vorschlag für den Typ. Braucht dein Filter zwei Einstellungen, bekommt der Konstruktor eben zwei Parameter – dann musst du im Hauptprogramm auch die drei Zeilen mit new MeinFilter(...) anpassen.

Für einen Farbfilter rufst du anwenden dreimal auf, einmal je Kanal, und gibst der Leinwand alle drei Ergebnisse: leinwand.zeige(r2, g2, b2).

Zeigen

Stellt eure Filter nebeneinander. Für jeden gilt:

  • Wie heißt er, und was macht er in einem Satz?
  • Welche Einstellung gibt es, und was passiert an ihren beiden Enden?
  • An welchem Bild sieht man ihn gut – und an welchem sieht man nichts?

Die letzte Frage ist die interessanteste. Ein Filter, der auf jedem Bild gleich aussieht, hat meistens die Information weggeworfen, auf die es ankam.

Dein eigener Filter

Teilbare URL erstellen

Abschnitte auswählen