Forum: Digitale Signalverarbeitung / DSP Image denoising mit Kalman Filter in Matlab


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jörg L. (scoobydoo)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

ich möchte ein digitales grauwertskaliertes Bild mit einem Kalman Filter 
entrauschen. Aus Testzwecken simuliere ich mir das Rauschen, das im Bild 
auftritt, selbst. Mit der Matlab Fkt.
imnoise(I,'gaussian',m,var_gauss)
 generiere ich ein mittelwertfreies (m=0) additives weißes Gaußsches 
Rauschen. Das verrauschte Bild möchte ich mit einem Kalman Filter 
entrauschen. Bei meiner bisherigen Methode arbeite ich mich hierbei 
pixelweise Zeile für Zeile vorwärts. Sprich, um die Intensität des 
aktuell interessierenden Pixels s(m,n) zu schätzen, dient die Intensität 
des vorherigen Pixels s(m,n-1) als prädiktiver Wert. Die bisherige 
Implementierung des genannten Ablaufs in Matlab ist mit angehähngt.

Nun meine Frage: Wie kann ich in die Schätzung der aktuellen 
Pixelintensität s(m,n) nicht nur einen prädiktiven Wert s(m,n-1), 
sondern mehrere, wie z.B. s(m,n-1), s(m-1,n+1),s(m-1,n), s(m-1,n-1), 
einfließen lassen?

Ich möchte die Voraussetzungen meiner angehängten bisherige 
Implementierung noch kurz beschreiben (falls hierbei schon Denkfehler, 
bzw. Unstimmigkeiten auftreten, würde ich mich sehr über Anmerkungen 
freuen):

Zur Anwendung des Kalman Filters muss das zu entrauschende Bild in eine 
Zustandsdarstellung

überführt werden.
Hierbei ist s der Zustandsvektor, welcher das originale (unverrauschte) 
Bild repräsentiert, r ist das verrauschte Bild, w das Prozessrauschen, v 
das (von mir eigens simulierte) Messrauschen. u ist der Eingangsvektor, 
wobei dieser im Folgenden gleich 0 gesetzt wird, da kein Eingangssignal 
existiert (B und D werden somit im Folgenden ebenfalls nicht weiter 
betrachtet). A und C sind System- und Ausgangsmatrix und G richtet sich 
danach welcher Pixel mit welchem Prozessrauschen behaftet ist. Da ich 
bisher nur jeweils einen Pixel betrachte, gilt im Folgenden A=C=G=1.

Im Weiteren wird vorausgesetzt, dass die Rauschvariablen w und v 
voneinander unabhängig sind und jeweils weißes normalverteiltes, und 
mittelwertfreies Rauschen reprästentieren (Voraussetzung für Anwendung 
des Kalman Filters). Die Varianzen der beiden Rauschsignale Q (zu w 
gehörig) und R (zu v gehörig) werden für die Gleichungen des Kalman 
Filters benötigt.

Alle weiteren Informationen sind den angehängen Matlab-Codeteilen zu 
entnehmen. Die Funktion kalmanFunc.m gibt die Gleichungen des Kalman 
Filters wieder, welche bei Bedarf z.B. auf Wikipedia oder anderweitigen 
Literaturquellen nachgesehen werden können.

Ich wäre äußerst erfreut, wenn mir jemand weiterhelfen kann, bzw. einen 
Denkanstoß geben kann.

: Bearbeitet durch User
von M. W. (elektrowagi78) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Was wäre denn jetzt die Frage? Das entscheidende ist die Kenntnis über 
das Bild und die realen Rauschfrequenzen und das ist eine reine Annahme, 
nach deren Massgabe dann frequenzmässig abgeschnitten wird. Interessant 
wird es dann, wenn man das Rauschen aus dem vorherigen Bild ermitteln 
kann. Dann muss aber in die Zeit hineingemessen werden.

von Jörg L. (scoobydoo)


Bewertung
0 lesenswert
nicht lesenswert
Markus W. schrieb:
> Was wäre denn jetzt die Frage?

Die Hauptfrage lautet: Wie kann ich in die Schätzung der aktuellen
Pixelintensität s(m,n) nicht nur einen prädiktiven Wert s(m,n-1),
sondern mehrere, wie z.B. s(m,n-1), s(m-1,n+1),s(m-1,n), s(m-1,n-1),
einfließen lassen?

Markus W. schrieb:
> Das entscheidende ist die Kenntnis über
> das Bild und die realen Rauschfrequenzen und das ist eine reine Annahme,
> nach deren Massgabe dann frequenzmässig abgeschnitten wird. Interessant
> wird es dann, wenn man das Rauschen aus dem vorherigen Bild ermitteln
> kann. Dann muss aber in die Zeit hineingemessen werden.

Im Realfall besteht keine Kenntnis über das originale Bild, 
beziehungsweise die realen Rauschfrequenzen. Es besteht auch kein 
vorhergehendes oder nachfolgendes Bild, sprich in die Zeit kann leider 
nicht hineingemessen werden. Grundlage ist also ein unbekanntes Bild, 
das mit Rauschen behaftet (im derzeitigen Modell wird von Gaußschem 
Rauschen ausgegangen).

Ich möchte allein aus mehreren Intensitätswerten umliegender Pixel sowie 
der (anfangs teils empirischen) Einstellung der Rauschvariablen Q und R 
die möglichst ursprüngliche Intensität des aktuell betrachteten Pixels 
bestimmen. Da ich mir derzeit das Rauschen selbst simuliere besteht in 
der Simulation bereits Kenntnis über die Varianz R.

: Bearbeitet durch User
von Rolf S. (audiorolf)


Bewertung
0 lesenswert
nicht lesenswert
Jörg L. schrieb:
> Im Realfall besteht keine Kenntnis über das originale Bild,
> beziehungsweise die realen Rauschfrequenzen.

Die Rauschfrequenzen sind im Bild normalerweise gleichförmig verteilt, 
weil das Photonenrauschen das Integral der eintreffenden statistischen 
Wellen ist und sich jeweils unabhängig von dem in den Nachbarpixeln 
darstellt. Das ist nicht wie eine Störwelle im zweidimensionalen, wo man 
das Rauschen über Pixel hinweg interpretieren könnte. Das gilt nur für 
geringe Störfrequenzen elektrischer Art.

Üblich wäre, sich einen Eindruck über die Bildfreuqenzen zu verschaffen 
und die "Angriffslustigkeit" des Rauschfilters zu steuern.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.