Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
folgendes Problem: Ich soll eine 3x3 Maske auf ein vorgegebenes Bild anwenden. Dabei entstehen Werte, die kleiner als null bzw. größer als 255 sind, also außerhalb des Farbraums liegen. Die errechneten Werte müssen also auf den Wertebereich des Farbraums normiert werden. Die einzige Idee die ich hatte, war, alle Werte die größer als 255 sind auf 255 zu setzen, und alle die kleiner als 0 sind, auf 0 zu setzen. Bin mir aber sicher, dass es auch bessere Lösungen gibt.
Wäre nett, wenn mir da jemand weiterhelfen könnte.
Viele Grüße
Matthias
Leider ist meine Glaskugel gerade in Reparatur ;-)
Wer hat das Wort "normierung" ausgesprochen? Genau derjenige sollte auch wissen was er erwartet.
Man kann, wie du ja schreibst, den Wertebereich beschneiden (das ist wohl keine besonders gute Idee, wenn es um Grafiken geht.)
Man könnte den max und den min Wert suchen, eine lineare Korrektur bestimmen und die anwenden
Man könnte statt der linearen Korrektur eine andere Funktion nehmen
oder eben - man könnte nachfragen was der Auftraggeber will ;-)
Ok, hier noch ein paar Infos, die ich hätte erwähnen sollen:
Man soll Minimum und Maximum des berechneten Bildes bestimmen, und auf den Wertebereich [0;255] abbilden.
Leider kann ich mir darunter nicht wirklich was vorstellen.
Dithering klingt da IMHO irgendwie nicht so passend ???:L Sowas wie
outputValue = Math.min(255, Math.max(0, inputValue));
sollte eigentlich passen, das wäre dann "Clamping". Wenn es wirklich um eine Normierung geht, müßte man erst alle Werte speichern (egal ob zu groß oder zu klein) und dann dan bereich zwischen minimalem und maximalem Wert auf den Bereich zwischen 0 und 255 abbilden...
Ok, hier noch ein paar Infos, die ich hätte erwähnen sollen:
Man soll Minimum und Maximum des berechneten Bildes bestimmen, und auf den Wertebereich [0;255] abbilden.
Leider kann ich mir darunter nicht wirklich was vorstellen.
Du hast dieselbe Frage schon einmal gestellt - ich kann nur mit der selben Gegenfrage reagieren
WIE soll man es abbilden - WIE. (Abbilden und normieren ist in dem fall ein Synonym.)
Der "Auftraggeber" hat doch gewisse erwartungen?
Abschneiden wie gesagt nein
Aber linear umnomieren könnte ein ansehnliches Resultat liefern
Brauchst du dazu eine Formel? (In Java umschreiben musst du sie aber selbst)
Wenn es wirklich um eine Normierung geht, müßte man erst alle Werte speichern (egal ob zu groß oder zu klein) und dann dan bereich zwischen minimalem und maximalem Wert auf den Bereich zwischen 0 und 255 abbilden...
Sorry, war jetzt auf die schnelle sehr missverständlich formuliert. Also, ich habe bisher alle berechneten Werte in einem Array gespeichert und Minimum und Maximum bestimmt. Ich krieg nur das mit dem abbilden nicht hin...
Da du mir ja meine Frage nie beantwortest (nach welchem Algorithums dein Aufraggeber Lehrer oder was auch immer) umnormiert haben will, hab ich dir oben die Formel für einen lineare Skalierung hingeschrieben.
Aber wie gesagt -> anwenden musst du sie selbst - du sollst ja Java lernen