0 Daumen
5,1k Aufrufe
Es geht um digitale Filter zur Bildbearbeitungen. Die lassen sich durch Matrizen darstellen. Da gibt es zum Beispiel Tief-, Hoch- und Bandpassfilter. Jetzt stehe ich vor einer Aufgabe, deren Lösung mir nicht einleuchtet. Es geht darum, zwei Filtermatrizen, die nacheinander auf ein Bild angewendet werden [durch Faltung] mit nur einer Filtermatrix auszudrücken. Der erste Filter ist 1/9 {{-1, -1, -1}, {-1, 8, -1}, {-1, -1, -1}}, der zweite 1/4 {1, 2, 1}
Avatar von

1 Antwort

0 Daumen

Mir ist nicht ganz klar, was genau dein Problem ist. Ich schreibe deshalb einfach mal was zu diesem Thema ... :

 

Sei B die Matrix, die das Bild darstellt und seien F1 und F2 die beiden Filter.

Dann gilt aufgrund der Assoziativität der Matrizenmultiplikation:

( B * F1 ) * F2 = B * ( F1 * F2 )

(sofern Zeilen- und Spaltenanzahl der beteiligten Matrizen jeweils zueinander passen).

Statt also zunächst Filter 1 auf das Bild anzuwenden und auf das Ergebnis dann den Filter 2, kann man also auch zunächst Filter 1 und Filter 2 nach den Regeln der Matrizenmultiplikation miteinander multiplizieren und das Ergebnis dann auf B anwenden. Auf beiden Wegen ergibt sich dieselbe Ergebnismatrix.

Beispiel (mit einer von mir erdachten Bildmatrix B und den von dir vorgegebenen Filtern F1 und F2):

 

 Filtermultiplikation

Wie man sieht (und wenn man mir die Korrektheit der dargestellten Ergebnisse glaubt), sind die Ergebnisse in beiden Fällen gleich.

Löst das dein Problem?

Avatar von 32 k

Da die Filterung des Bildsignals einer Faltung mit dem Filterkern entspricht, müssten die Matrizen nicht multipliziert, sondern (2-dimensional) gefaltet werden. Auch hier gilt die Assoziativität, deshalb kann ein kombinierter Filterkern (F1 * F2) berechnet werden, allerdings nicht durch Multiplikation, sondern durch Faltung. Der kombinierte Kern enthält dann nicht weniger, sondern mehr Koeffizienten als jeder der einzelnen Filter.

Kann es sein das das so nicht stimmt oder versteh ich die Prinzipien der Filteranwendung falsch? Ich bekomme das hier raus.

blob.png

Text erkannt:

printMat (filterAnwenden (matrix))
\( 1.33 \quad 2.44 \quad 5.33 \)
printMat (filterAnwenden (mat
\( \begin{array}{ccc}1.33 & 2.44 & 5.33 \\ 2.56 & -2.22 & -2.22 \\ -0.56 & 3.44 & 6.11\end{array} \)
\( 2.56-2.22-2.22 \)
\( -0.56 \quad 3.44 \quad 6.11 \)

für das Zwischenegebnis B*F1

LG Georg

Hm,

aus Interesse ich hab mir ein Faltungsfilter gestrickt nach

https://www.mathematik.uni-marburg.de/~thormae/lectures/mmk/mmk_6_1_ger_web.html#6

Faltung Bild a[x,y]  mit einem Kernel b[x,y] 

\( \mathrm{f}[x, y]=\mathrm{a}[x, y] * \mathrm{~b}[x, y]=\sum \limits_{j=x-1}^{x+1} \sum \limits_{k=y-1}^{y+1} \mathrm{a}[j, k] \mathrm{b}[x-j, y-k] \)

und erhalte Dein Ergebnis

\(\small \left(\begin{array}{rrr}\frac{4}{3}&\frac{22}{9}&\frac{16}{3}\\\frac{23}{9}&\frac{-20}{9}&\frac{-20}{9}\\\frac{-5}{9}&\frac{31}{9}&\frac{55}{9}\\\end{array}\right)\)

F1 ein Weichzeichner?

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community