Benutzer-Werkzeuge

Webseiten-Werkzeuge


digitale_filter_-_bildoperatoren

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
digitale_filter_-_bildoperatoren [2024/01/20 13:29] – [Die Faltung im Detail] torsten.roehldigitale_filter_-_bildoperatoren [2024/01/20 14:35] (aktuell) – [Die Faltung im Detail] torsten.roehl
Zeile 25: Zeile 25:
 |{{ :inf:java:punkt_a.png?200 |}}|  |{{ :inf:java:punkt_b.png?200 |}}||{{ :inf:java:punkt_c.png?200 |}}| |{{ :inf:java:punkt_a.png?200 |}}|  |{{ :inf:java:punkt_b.png?200 |}}||{{ :inf:java:punkt_c.png?200 |}}|
 | Orginal-Bild (Quelle, I = Input)  |**+**  |3x3 Filter-Matrix (M=Maske) |**=**  |Ziel-Bild (Senke, O = Output) | | Orginal-Bild (Quelle, I = Input)  |**+**  |3x3 Filter-Matrix (M=Maske) |**=**  |Ziel-Bild (Senke, O = Output) |
-|Der zu verändernde Bildpunkt befindet sich in der Mitte, umgeben von 8 Nachbarpixeln, welche auch ausgewertet werden müssen. Der zentrale Punkt mit seinen 8 Nachbarn werden wir mit "lokalen Bildbereich" bezeichnen.| | Der Filter besitzt 9 Werte. Filter und Orginalbild werden miteinander verknüpft. Die Verknüpfung bezeichnet man als Faltung. Die mathematischen Prinzipien, die der Faltung zu Grunde liegen, gehören nicht zur Schulmathematik und werden hier deshalb nicht aufgeführt.| |Der Original-Bildpunkt mit seinen Nachbarn wurde zusammen mit einem Filter kombiniert. Das Ergebnis ist der hier Rot dargestellte Bildpunkt.|+|Der zu verändernde Bildpunkt befindet sich in der Mitte, umgeben von 8 Nachbarpixeln, die ebenfalls ausgewertet werden müssen. Der zentrale Punkt mit seinen 8 Nachbarn wird als „lokaler Bildbereich“ bezeichnet.| | Der Filter besitzt 9 Werte. Filter und Orginalbild werden miteinander verknüpft. Die Verknüpfung bezeichnet man als Faltung. Die mathematischen Prinzipien, die der Faltung zu Grunde liegen, gehören nicht zur Schulmathematik und werden hier deshalb nicht aufgeführt.| |Der Original-Bildpunkt mit seinen Nachbarn wurde zusammen mit einem Filter kombiniert. Das Ergebnis ist der hier rot dargestellte Bildpunkt.|
  
  
 ===== O =  I * M  (Faltung) ===== ===== O =  I * M  (Faltung) =====
  
-$$ O = I * M \; \text{Faltung}$$+$$ O = I * M $$
  
   * O = Output (Ziel)   * O = Output (Ziel)
Zeile 40: Zeile 40:
 | @orange: lokale Operation  | Ein Filter ist ein lokaler Operator. Ein Bildbereich **I** und eine Maske **M** werden verknüpft, um den Wert eines neuen Pixels (Bildpunkt, **O** ) zu berechnen. Die Operation **O = I * M** bezeichnet man als Faltung. | | @orange: lokale Operation  | Ein Filter ist ein lokaler Operator. Ein Bildbereich **I** und eine Maske **M** werden verknüpft, um den Wert eines neuen Pixels (Bildpunkt, **O** ) zu berechnen. Die Operation **O = I * M** bezeichnet man als Faltung. |
 ==== Die Faltung im Detail ==== ==== Die Faltung im Detail ====
-Es wird jetzt gezeigt, wie, ausgehend von einem lokalen Bildbereich und einer Maske, ein neuer Bildpunkt berechnet wird. In späteren Abschnitten wird im wesentlichen nur noch die Maske verändert, die vorgehensweise bleibt aber immer dieselbe.+Es wird jetzt gezeigt, wie, ausgehend von einem lokalen Bildbereich und einer Maske, ein neuer Bildpunkt berechnet wird. In späteren Abschnitten wird im Wesentlichen nur noch die Maske verändert, die Vorgehensweise bleibt aber immer dieselbe.
  
   * Der Wert jedes Pixels im Bildbereich wird mit dem entsprechenden Wert der Maske multipliziert. Auf diese Weise ergeben sich 9 Terme.   * Der Wert jedes Pixels im Bildbereich wird mit dem entsprechenden Wert der Maske multipliziert. Auf diese Weise ergeben sich 9 Terme.
   * Alle 9 Terme werden addiert.   * Alle 9 Terme werden addiert.
   * Der so ermittelte Wert ist der Wert des neuen Bildpunktes.   * Der so ermittelte Wert ist der Wert des neuen Bildpunktes.
-=== Beispiel === 
  
-Dieses Beispiel berechnet für den Bildpunkt 5 einen neuen Wert:+<WRAP center  box 100%> 
 +{{:inf:sample.gif?|}} 
 +** 
 +Dieses Beispiel berechnet für den Bildpunkt mit dem Wert  einen neuen Wert.**
 \[ I= \begin{pmatrix} 1 & 2 &3 \\  4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix}\] \[ I= \begin{pmatrix} 1 & 2 &3 \\  4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix}\]
  
 \[ M= \begin{pmatrix} 1 & 2 & 1 \\  2 & 3 & 2 \\1 & 2 & 1 \end{pmatrix}\] \[ M= \begin{pmatrix} 1 & 2 & 1 \\  2 & 3 & 2 \\1 & 2 & 1 \end{pmatrix}\]
  
-==== Der selbe Formalismus ein wenig formaler :-) 0===+ 
 +  * I und M werden komponentenweise multipliziert: \[ I + M =\begin{pmatrix} 1 & 4 & 3 \\ 8 & 15 & 12 \\ 7 & 16 & 9 \end{pmatrix} \] 
 +  * Summe über alle Terme bilden:  1 +4 +3 +8 +15 +12 +7 +16 + 9 = 75 
 +  * Der neue Bildpunkt hat einen Wert von 75. 
 + 
 +</WRAP> 
 + 
 + 
 +==== Der selbe Formalismus ein wenig formaler :-) ==== 
 +{{:inf:hinweis.gif?|}} 
 +Der Umgang mit dem Summenzeichen ist im Artikel //Mathematische Grundlagen// ([[download_links|siehe Downloads]]) beschrieben. 
 + 
 +Ziel ist es, die folgende Formel herzuleiten, wie sie in jedem Buch über Digitale Bildverarbeitung zu finden ist. 
 + 
 +\begin{equation} O = I * M \end{equation} mit 
 + 
 +\begin{equation} O(i,j)  = \sum_{y=-1}^1 \sum_{x=-1}^1 M(x,y) \cdot I(i+x,j+y) \end{equation} 
 + 
 +=== Herleitung === 
 +Die Formel kann direkt aus dem Beispiel hergeleitet werden, indem statt konkreter Zahlen verallgemeinerte Koordinaten und Gewichte verwendet werden. O(i,j) bedeutet, dass der Filter M  auf den Bildpunkt mit den Koordinaten i,j angewandt wird. O(i,j) ist der neue Grauwert. Wir beschränken uns hier auf die Auswertung von Graubildern, d.h jeder Bildpunkt ist eindeutig durch eine Zahl beschrieben. 
 + 
 +  
 + 
 +\[ I(x,y) = \begin{pmatrix} w_1 & w_2 & w_3 \\  w_4 & w_5 & w_6 \\ w_7 & w_8 & w_9 \end{pmatrix}\] 
 + 
 +\[ M(x,y) = \begin{pmatrix} m_1 & m_2 & m_3 \\  m_4 & m_5 & m_6 \\ m_7 & m_8 & m_9 \end{pmatrix}\] 
 + 
 +<note>Matrix Einträge:\\ 
 + 
 +  * Während I(x,y) relative Angaben enthält, um verschiedene Bildpunkte zu repräsentieren, beschreibt M(x,y) konstante Werte. 
 + 
 +Wenn I(x,y) =$w_5$ den Wert an der Position x,y repräsentiert dann gilt (auf das Beispiel bezogen): 
 +  * I(x,y) = $w_5=5$ //(Wert an der Position x,y)// 
 +  * I(x-1,y-1) = $w_1=1$ //(Wert an der Position x-1,y-1)//  
 +Für die Matrix M gilt dann folgendes: 
 +  * $M(1,-1) = m_3=1$ //(Filterwert an der Stelle  x+1,y-1)// 
 +  * $M(0,0) m_5=3$ 
 +  * $M(1,1) m_9=1$ 
 +</note> 
 + 
 +Nach dem obigen Beispiel gilt dann: 
 + 
 + \[ \begin{split} O(i,j) =  m_1\cdot w_1 + m_2\cdot w_2 + m_3\cdot w_3\\ + m_4\cdot w_4 + m_5\cdot w_5 +  m_6\cdot w_6 \\+ m_7\cdot w_7 + m_8\cdot w_8 + m_9\cdot w_9 \end{split} \] 
 + 
 +(Die Werte für I werden eingesetzt) 
 + 
 +\[ \begin{split} = m_1\cdot I(i-1,j-1) + m_2\cdot I(i,j-1) + m_3\cdot I(i+1,j-1) \\+ m_4 \cdot I(i-1,j) + m_5\cdot I(i,j)+ m_6\cdot I(i+1,j) \\ + m_7\cdot I(i-1,j+1) + m_8\cdot I(i,j+1) + m_9\cdot I(i+1,j+1) \end{split} \] 
 + 
 +(Die Werte für M werden eingesetz) 
 + 
 +\[ \begin{split} = M(-1,-1) \cdot I(i-1,j-1) + M(0,-1)\cdot I(i,j-1) + M(1,-1)\cdot I(i+1,j-1) \\+ M(-1,0) \cdot I(i-1,j) + M(0,0)\cdot I(i,j)+ M(1,0)\cdot I(i+1,j) \\ + M(-1,1)\cdot I(i-1,j+1) + M(0,1)\cdot I(i,j+1) + M(1,1)\cdot I(i+1,j+1) \end{split} \] 
 + 
 +(Summenzeichen für die erste Komponente benutzen - Laufvariable heißt x) 
 + 
 +\[ \begin{split} = \sum_{x=-1}^1 \{ M(x,-1) \cdot I(i+x,j-1)  + M(x,0) \cdot I(i+x,j)  + M(x,1)\cdot I(i+x,j+1) \} \end{split} \] 
 + 
 +(Summenzeichen auch für die zweite Komponente benutzen - Laufvariable heißt y) 
 + 
 +\[ \begin{split} = \sum_{y=-1}^1  \sum_{x=-1}^1 M(x,y) \cdot I(i+x,j+y)  \end{split} \] 
 + 
 +Das war es, diese Formel ist mit der Eingangsformel identisch. 
 ===== Zusammenfassung ===== ===== Zusammenfassung =====
  
  
 Um einen digitalen Filter anzuwenden, sind folgende Schritte abzuarbeiten: Um einen digitalen Filter anzuwenden, sind folgende Schritte abzuarbeiten:
 +  - Ein digitaler 3x3-Filter muss zur Verfügung stehen
 +  - Der Filter wird über ein Bildbereich gelegt (Faltung) und ein neuer Bildpunkt wird berechnet.
 +        *  Dieser Bildpunkt wird zwischengespeichert bzw. in ein neues Bild geschrieben.
 +  - Der Filter wird über den nächsten Bildbereich gelegt, sodass der nächste Bildpunkt berechnet werden kann.
  
-  * Ein digitaler 3x3-Filter muss zur Verfügung stehen + Auf diese Weise werden alle neuen Bildpunkte berechnet und in ein neues Bild geschrieben.
-  * Der Filter wird über ein Bildbereich gelegt (Faltung) und ein neuer Bildpunkt wird berechnet. Dieser Bildpunkt wird zwischengespeichert bzw. in ein neues Bild geschrieben. +
-  * Der Filter wird über den nächsten Bildbereich gelegt, sodass der nächste Bildpunkt berechnet werden kann. Auf diese Weise werden alle neuen Bildpunkte berechnet und in ein neues Bild geschrieben.+
  
 <WRAP center round info 100%> <WRAP center round info 100%>
digitale_filter_-_bildoperatoren.1705757364.txt.gz · Zuletzt geändert: 2024/01/20 13:29 von torsten.roehl