PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : convolution matrix Verhalten an "Ecken" und "Kanten"


liquid
2003-09-13, 14:17:07
Hi Leute,

Problem:
Ich hab hier ein Datenarray das ich mit einer convolution matrix (kernel) preprocessen will. Das Array stellt ne ganz normale Bitmap dar. Jetzt tritt das Problem auf, dass an den Ecken des Arrays der Filterkernel auf Bereichen ausserhalb des Arrays liegt. Wie sollte sich ein "guter Filter" in diesen Fällen verhalten?

Ich habe das bisher so gemacht, dass ich die äußeren Daten (pixels) einfach mal nicht beachtet habe (bei 3x3 kernels) und bei 5x5 kernels noch ein "Pixelrahmen". Aber da hat man natürlich ein ungutes Gefühl, da einige Bereiche ja überhaupt net gefiltert werden.
Was meint ihr dazu? Wie sollte man es richtig machen? Den kernel einfach nur für die Daten auswerten, die momentan unter ihm liegen? Also wenn ich an einer Ecke des Arrays ein 3x3 kernel drauflege und nur 4 Elemente unterm Kernel liegen, dann nur die Berechnung mit diesen Werten durchführen?

cya
liquid

ScottManDeath
2003-09-13, 15:06:12
einen rand ringsrum hinzufügen von halber breite des kernels und auf 0 setzen oder die kantenwerte der originalen daten replizieren

liquid
2003-09-13, 15:50:05
Hi scott,

meinst du diese Methode?
bei Tutorials auf Convolutions tutorial gehen (http://www.levp.de/3d/index.html)
Zitat: "Duplicate egde pixels, so that pixel at coordinate (2, n), where n is nonpositive, will have the value of (2, 1)."

cya
liquid

ScottManDeath
2003-09-13, 18:18:37
jupp, diese methode

liquid
2003-09-13, 18:37:00
OK thx!
Dann werde ich mich mal daran machen.

cya
liquid

liquid
2003-09-14, 16:21:18
Nachtrag:

Die Filterklasse ist fertig und beherrscht jetzt alle möglichen "Kantenmethoden" (wrapping, border padding, ignore).
Ich wollte jetzt mal einen sobel filter damit bauen.
Frage: Stimmt es dass ich bei dem horizontalen und vertikalen kernel durch 1 teilen muss (die kernel Werte zusammenaddiert ergeben ja Null - nen bissel dumm dadurch zu teilen)?

Achja, in welchem Zusammenhang stehen eigentlich bump mapping und der sobel filter? Ich meine da mal irgendwas gelesen zu haben, finde das aber nicht mehr.

cya
liquid