[Bildverarbeitung] Separierbarkeit von Filtern und warum ist sie vorteilhaft?

Neue Frage »

Don_Martinez Auf diesen Beitrag antworten »
[Bildverarbeitung] Separierbarkeit von Filtern und warum ist sie vorteilhaft?
Meine Frage:
Hey zusammen,
ich habe folgende Verständnisfrage: Bei der Separierung von linearen 2D-Filtern (https://de.wikipedia.org/wiki/Separierbarkeit) wird ein (meist 3x3) Matrix-Filter in 2 1-D Filter aufgeteilt. Ich kann nachvollziehen, dass die 1D-Filter AUFEINANDER angewandet zusammen wieder den 2D-Filter ergeben. Allerdings liest man überall, dass aufgrund der Assoziativität von linearen Filtern das Ergebnis eines Pixels multipliziert mit erst dem einen 1-D Filter und danach mit dem anderen dasselbe Ergebnis liefrt wie eine Multiplikation des Pixels mit dem 2D-Filter. Dadurch sinkt die Anzahl der Rechenoperationen von n^2 für die 2D-Matrix auf 2n Operationen für die 2 1-D Matrizen (was ja auch der Sinn hinter der Separierung ist). Was mir nicht in den Kopf will, ist, inwiefern die Hintereinanderausführung der 2 1-D Matrizen alle Pixel abdeckt, die die 2-D Matrix in das Ergebnis mit einfließen lassen würde. Wenn man nur einmal einen vertikalen und einmal einen horizontalen Vektor auf die Pixel "legt", ist das Ergebnis doch nicht identisch mit dem einer flächendeckenden Matrix die alle benachbarten Pixel miteinfließen lässt?
Ich hab das Problem im Anhang nochmal visualisiert.


Danke schonmal!

Meine Ideen:
Die einzige logische Erklärung scheint mit, dass wir z.B für jede Reihe des einen 1-D Vektors den anderen 1-D Vektor ausrechen, aber dann haben wir ja wieder unsere n^2 Matrix.
URL Auf diesen Beitrag antworten »
RE: [Bildverarbeitung] Separierbarkeit von Filtern und warum ist sie vorteilhaft?
Was ist denn eine flächendeckende Matrix? verwirrt
Und warum sollen die angegebenen Matrixprodukte nicht gleich sein?
Don_Martinez Auf diesen Beitrag antworten »
RE: [Bildverarbeitung] Separierbarkeit von Filtern und warum ist sie vorteilhaft?
Zitat:
Was ist denn eine flächendeckende Matrix?

Ja, vllt etwas unpräzise, ich meinte zb den 3x3 Gauß-Filter in der Abbildung, also ein Nachbarschaftsoperator der eine "Fläche" an Pixeln mit einbezieht im Gegensatz zu einem eindimensionalen Reihen/Zeilen Filter.

Zitat:
Und warum sollen die angegebenen Matrixprodukte nicht gleich sein?


Hier hanelt es sich nicht um ein Matrixprodukt sondern eine nacheinanderausführung von Filtern auf den mittleren Pixel mit dem Wert 4.

Für die 1-dimensionalen Filter in meinem Bild (oberer Teil) wäre das:
Der erste, vertikale Filter auf das Bild direkt angewandt ergibt für den mittleren Pixel : ((1*2+1*4+1*2)/3)=2.6
Daraufhin den 2., horizontalen Filter auf das Ergebnis angewandt (das ist nach meinem Verständnis der Vorteil aus dem Prinzip der Separierbarkeit):
((1*2+1*2.6+1*2)/3)=2.2


Wendet man den 2D-Filter an, würde das für den mittleren Pixel:

((1*1+1*2+1*1+1*2+1*4+1*2+1*1+1*2+1*1)/9) =1.7 ergeben. Die Werte in der Matrix sind hier nur Gewichtungen der jeweiligen Nachbarpixel, im Fall von Gauss eben 1/9.


Obwohl es relativ offensichtlich ist, dass bei beidem nicht dasselbe rauskommen kann, sagt die Fachliteratur /Wikipedia (wikipedia[dot]org/wiki/Separierbarkeit) etwas anderes. Es geht darum, die Anzahl der Rechenoperationen für den Filter zu minimieren. Laut Wiki wären es also hier bei der Nutzung von 1D-Filter 3+3 Operationen im vergleich zu 3*3. Allerdings decken beide Filtertypen bei meiner Version nicht dieselbe Anzahl Pixel ab/liefern andere Pixelwerte als Ergebnis, deswegen verstehe ich wohl irgendwas falsch?
005 Auf diesen Beitrag antworten »
RE: [Bildverarbeitung] Separierbarkeit von Filtern und warum ist sie vorteilhaft?
Du musst den ersten 1D-Filter schon auf alle Pixel loslassen, bevor Du den zweiten drueberlaufen laesst.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »