www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Computergraphik" - Gauss Filter
Gauss Filter < Computergraphik < Praktische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Computergraphik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Gauss Filter: Verständnis
Status: (Frage) beantwortet Status 
Datum: 13:14 Do 13.02.2014
Autor: starki

Ich hab mich in das Thema Gauss Filter eingearbeitet, jedoch habe ich noch eine Frage, deren Antwort ich irgendwie nicht finden kann.

Ich nehm jetzt mal als Beispiel eine 3 x 3 Matrix:
1 2 1
2 4 2
1 2 1

Was hat diese Matrix mit der Formel zu tun:

G(x, y) = [mm] \frac{1}{2 \pi \sigma^2} e^{\frac{x^2 * y^2}{2 \sigma^2}} [/mm]

Berechne ich erst G(x,y), lege dann die 3x3-Matrix drauf und wende dann die neu berechnete Matrix auf das Bild an? Oder was haben die beiden Matrizen eigentlich miteinander zu tun? Ich bin da leider noch nicht ganz dahinter gekommen ... :-/

        
Bezug
Gauss Filter: Antwort
Status: (Antwort) fertig Status 
Datum: 15:38 Do 13.02.2014
Autor: Event_Horizon

Hallo!

Stell dir ein schwarz-weiß bild vor, das  nur einen einzelnen weißen Pixel (Helligkeit [mm] B_0=1) [/mm] an der Stelle [mm] (x_0;y_0) [/mm] hat, der Rest soll schwarz (Helligkeit =0) sein.


Der Gaußfilter wird das Bild so verschmieren, daß der weiße Pixel etwas dunkler wird, und die Nachbarpixel etwas heller.

Rechnerisch machst du dir nun ein neues, völlig schwarzes Bild mit genau den gleichen Ausmaßen, und addierst zu jedem einzelnen Pixel mit den Koordinaten (x;y) den Wert [mm] B_0*G(x-x_0;y-y_0) [/mm]  . Also: jeder Pixel bekommt eine Helligkeit, die vom Abstand zu dem ursprünglich weißen Pixel abhängt, wobei das Abstandsgesetz von der Gaußfunktion beschrieben wird.

Beispiel mit [mm] \sigma=\sqrt{\frac{2}{\pi}} [/mm] : Die Gaußfunktion liefert für den Pixel selbst den Wert 1/4 , für die direkten Nachbarpixel links, rechts, drüber  und drunter (Abstand 1 zu dem mittleren Pixel) jeweils den Wert 1/8, und für die direkten diagonalen Nachbarpixel (Abstand [mm] \sqrt{2} [/mm] ) den Wert 1/16. Betrachtet man die nächsten Nachbarn, so bekommen die übernächsten Pixel in horizontaler/vertikaler Richtung (Abstand 2) einen Wert von ca 1/100. und so weiter.

Du siehst, für den einen Pixel des Ursprungsbildes mußt du die Gaußfunktion so oft ausrechnen, wie das Bild Pixel hat.
Schlimmer noch: Hat das Bild nicht nur einen weißen Pixel, mußt du für jeden Pixel des urpsrünglichen Bildes jeweils (!) die  Gaußfunktion für JEDEN Pixel des neuen Bildes ausrechnen. Das ist ein enormer Rechenaufwand.

Aber es gibt zwei Vereinfachungen:
1.: Im Prinzip mußt du nur die acht direkten Nachbarn betrachten, alle Pixel, die weiter entfernt sind, bekommen fast nix mehr ab.
2.: Du weißt jetzt, welcher Anteil der Helligkeit des ursprünglichen Pixels wie auf die Nachbarpixel übertragen wird. Dieser Anteil wird eben m´durch [mm] {\frac {1}{16}}{\begin{bmatrix}1&2&1\\2&4&2\\1&2&1\end{bmatrix}} [/mm] beschrieben: Der Pixel mit den gleichen Koordinaten wie im Ursprungsbild erhält 4/16=1/4 der Helligkeit, die rechts und links daneben 2/16=1/8 und so weiter.


Tatsächlich kann man sich das noch einfacher machen:

Nimm eine Kopie des Urprungbildes, und multipliziere die Helligkeit jedes Pixels mit 1/4. Das ist dein(unfertiges) neues Bild. Dann multipliziere eine Kopie des Urpsungsbildes mit 1/8, und addiere diese Bild auf das neue. Und zwar einmal um 1 Pixel nach links, einmal um 1 Pixel nach rechts, ... oben...unten verschoben. Und dann das gleiche nochmal mit 1/16 und jeweils diagonal verschoben. Sowas geht rasend schnell!


Bezug
                
Bezug
Gauss Filter: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:22 Do 13.02.2014
Autor: starki

OK, mir ist jetzt einiges klarer geworden. Danke :)

Nun will ich mal ein eigenes Beispiel machen, um zu zeigen, was ich kapiert habe:

also ich habe folgende Bildmatrix:

5 3 8
2 1 7
6 9 9

Nun will ich ja den Gaußfilter darauf anwenden. Wenn ich also die Formel G(x, y) anwenden will, müsste ich quasi 9 neue Bilder ausrechnen, und jedes Bild hat eine Laufzeit von 9 Einheiten => Laufzeit $ [mm] O(n^n) [/mm] $.

Aber man kann es sich einfacher machen, wie du ja schon erklärt hast, da je weiter ein Punkt vom Ursprung entfernt ist, desto geringer fällt der Summand auf, der zu dem Pixel hinzuaddiert wird.

D.h. wir verwenden nun die Matrix:

1 2 1
2 4 2
1 2 1

(In diesem Fall nur dir 3x3-Matrix, wie die anderen Matrizen aussehen, das weiß ich ;)).

Aber d.h. nun, ich berechne diese wie einen normalen Filter, d.h. meine Matrix mit den Rändern sieht nun so aus:

5 5 3 8 8
5 5 3 8 8
2 2 1 7 7
6 6 9 9 9
6 6 9 9 9

Also ich hab die Ränder jetzt so gewählt. Nun Berechne ich den Punkt (0, 0):

1 * 5 + 2 * 5 + 1 * 3 +
2 * 5 + 4 * 5 + 2 * 3 +
1 * 2 + 2 * 2 + 1 * 1 = 62

Und diesen Wert teilen wir durch 16 => ergibt 3,875, also ungefähr 4. D.h. meine neue Matrix nach der ersten Berechnung sieht so aus:

5 5 3 8 8
5 4 3 8 8
2 2 1 7 7
6 6 9 9 9
6 6 9 9 9

Das es auch einfacher geht, hab ich auch gelesen, aber ich wollte auch wissen, ob der Weg, den ich eingeschlagen habe, auch richtig ist ...

EDIT:
Noch eine Frage. Jetzt hab ich im Internet gelesen, man kann aus der G(x,y)-Formel auch eine 3x3-Matrix erstellen. Kann ich die nicht auch auf die Weise auf meine Bildmatrix anwenden wie ich das gerade eben auch getan hab?

Bezug
                        
Bezug
Gauss Filter: Antwort
Status: (Antwort) fertig Status 
Datum: 17:58 Do 13.02.2014
Autor: Event_Horizon

Hallo!

ich würde sagen, du hast es verstanden.
Nur, um sicher zu gehen: Für diese längere Rechnung  "...=62" verwendest du natürlich immer die Werte aus dem ursprünglichen Bild


Zu deinem EDIT: Man kann nicht nur, sondern diese Matrix hier IST bereits die Matrix aus der Funktion G(x;y). man hat quasi für x und y die Werte -1, 0 und +1 eingesetzt, und diese Werte als Tabelle aufgeschrieben. Setzt man [mm] \sigma [/mm] auf den Wert, den ich oben benutzt habe, kommt das recht genau hin.

Ganz genau genommen sind die Zahlen in deiner Matrix nicht exakt die, die bei der Berechnung von G(x,y) 'raus kommen, aber der Unterschied ist gering, und diese Werte sind schön glatt.



Für andere [mm] \sigma [/mm] sieht die Matrix auch anders aus. Für ein extrem keines Sigma erhälst du irgendwann [mm] \pmat{0&0&0 \\ 0&1&0 \\ 0&0&0} [/mm] , womit der Filter keinen Effekt hat. Für große [mm] \sigma [/mm] dagegen kann es sein, daß ein Pixel nicht nur seine direkten Nachbarn beeinflusst, sondern daß auch die übernächsten Nachbarn was abbekommen. In dem Fall reicht eine 3x3-Matrix nicht mehr, du brauchst 5x5 oder gar 7x7.

Übrigens, eine wichtige Eigenschaft sollte sein, daß der Filter das Bild nicht heller oder dunkler macht. Die Helligkeit eines ursprünglichen Pixels wird zwar in seiner Umgebung verteilt, die Summe soll aber gleich bleiben. Vor deiner Matrix steht [mm] \frac{1}{16}. [/mm] Das bedeutet, daß auf die verschiedenen Pixel eben 4/16, 2/16 und 1/16 der Helligkeit des ursprünglichen Pixels addiert wird. In der Summe ist das =1, wie es sein sollte.

Ich hab mal ein Bild für verschiedene [mm] \sigma [/mm] gemacht. Die blauen Werte sind die Funktionswerte G(x,y). Die Farbe stellt die Helligkeit dar, allerdings anhand einer logarithmischen Skala. Im ersten Bild ist [mm] \sigma [/mm] klein, es gibt nur eine geringe Verschmierung. Im mittleren habe ich für [mm] \sigma [/mm] den Wert von oben genommen, daher erkennst du halbwegs die Zahlenwerte der Matrix wieder (den Faktor 1/16 nicht vergessen!)

Im letzten Fall ist [mm] \sigma [/mm] recht groß, hier siehst du, daß ggf eine 5x5-Matrix besser wäre.

[Dateianhang nicht öffentlich]

Dateianhänge:
Anhang Nr. 1 (Typ: png) [nicht öffentlich]
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Computergraphik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de