Sie sind auf Seite 1von 17

Bildverarbeitung: Filterung

D. Schlesinger () Bildverarbeitung: Filterung 1 / 17


Allgemeines

Klassische Anwendung: Entrauschung

(Fast) jeder Filter basiert auf einem Modell (Annahme): Signal + Rauschen

Pipeline: Modell Aufgabe Lsung Algorithmus (Programm)

Mittelwertfilter: Modell ... Lsung


Medianfilter: Aufgabe Lsung
Paar andere Filter, Beispiele

Lineare Filterung: Algorithmen

D. Schlesinger () Bildverarbeitung: Filterung 2 / 17


Mittelwertfilter
D Z2 Definitionsbereich (Gitter), r Pixel r = (i, j), r D

Bild ist eine Funktion x : D C (Farbraum), xr Farbe des Pixels r

Sei y das Ideale Signal (nicht verrauscht) und


x das verrauschte Signal (Beobachtung)

Aufgabe: Man sieht x, man berechne y.

Rauschmodell Gaussche Wahrscheinlichkeitsverteilung fr Abweichungen der Farben

kxr yr k2
h i
p(xr |yr ) = N (xr ; yr , ) exp
2 2
Weitere Annahme Pixel sind von einander unabhngig verrauscht:

kxr yr k2
Y h i
p(x|y) exp
2 2
r

Aufgabe nach dem Maximum Likelihood Prinzip: p(y|x) = p(y)p(x|y)/p(x) maxy


Ohne zustzlicher Annahmen ber p(y) ist die Lsung trivial: yr = xr fr alle r

Eine Annahme ber das Signal y ist notwendig!!!


D. Schlesinger () Bildverarbeitung: Filterung 3 / 17
Mittelwertfilter

Annahme:
In einer kleinen Umgebung W (r) D eines Pixels r ist y (fast) konstant yr

kxr 0 yr k2
Y h i
ML: exp max
2 2 yr
r 0 W (r)
X
ln ... : F(yr ) = kxr 0 yr k2 min
yr
r0
F X X
Ableiten: = (xr 0 yr ) = xr 0 |W | yr = 0
yr
r0 r0
1 X
yr = xr 0 (Mittelwert)
|W |
r0

D. Schlesinger () Bildverarbeitung: Filterung 4 / 17


Median Filter

Andere Zielfunktion entspricht einem anderen Rauschmodell


(Einfachheit halber C = R Grauwertbild):
X
F(yr ) = |xr 0 yr | min
yr
r0

Problem: nicht differenzierbar. Gute Neuigkeit konvex.

(Ableitung an der Tafel).

Lsung Medianfilter.

D. Schlesinger () Bildverarbeitung: Filterung 5 / 17


Vergleich: Gaussches Rauschen

(a) Original (b) Verrauscht

(c) Gaussche Glttung (d) Medianfilter

D. Schlesinger () Bildverarbeitung: Filterung 6 / 17


Vergleich: Salz und Pfeffer Rauschen
In manchen Pixeln ist der Farbwert zufllig gesetzt (gleichwahrscheinlich)

(e) Original (f) Verrauscht

(g) Gaussche Glttung (h) Medianfilter

D. Schlesinger () Bildverarbeitung: Filterung 7 / 17


Eine andere Aufgabe

Glttung des Hintergrunds verbessert die rumliche Wahrnehmung der Szene

(Xue Bai, Guillermo Sapiro)

Umgekehrte Aufgabe: Rekonstruiere 3D aus Unschrfe.

Konsequenz: Die Filter liefern keine Antworten,


sie geben ein lokales Ma fr die hheren Stufen der Verarbeitung.

D. Schlesinger () Bildverarbeitung: Filterung 8 / 17


Noch paar andere Aufgaben
Faltung: X
yr = xr 0 gr 0 r
r0

mit der Maske g : Z2 R


Beispiel Mittelwert:
n
1/|W | wenn r W (0)
gr =
0 sonst.

Welche weitere Masken sind denkbar (ntzlich, wofr etc.)?


 
Etwas zartere Glttungen, z.B. mit dem Gausschen Kern: gr exp krk2 /2 2
 
Kontrasterhhung: gr 1I(0) exp krk2 /2 2 (Unsharp Mask)

Kantendetektoren, etc.

D. Schlesinger () Bildverarbeitung: Filterung 9 / 17


Eine ganz andere Aufgabe

Salz und Pfeffer Rauschen mit 90%

Lokale Filterung ist offensichtlich kaum hilfreich

Explizite Modellierung des Signals ist notwendig (in diesem Fall MRF)

Das Modell entspricht dem Bild exakt. Dies macht genaue Rekonstruktion mglich.

D. Schlesinger () Bildverarbeitung: Filterung 10 / 17


Fazit

Explizite Annahmen ber das Signal (lokale Eigenschaften) lokale Filterung

Signal wird durch seine Autokorrelationen beschrieben Wiener Filter

Signal ist die berlagerung der Signale bestimmter Frequenzen Fourier Analyse

Signal wird durch eine Differentialgleichung beschrieben Variationelle Anstze

Explizite Modellierung statistischer Abhngigkeiten zwischen den Pixelwerten MRF

u.s.w.

Die Eigenschaften des Signals


(das Modell, die Annahmen, die Art der zu lsenden Aufgabe etc.)
sind ausschlaggebend fr die Wahl des Filters.

D. Schlesinger () Bildverarbeitung: Filterung 11 / 17


Lineare Filterung Algorithmen

Eindimensional: r N
r+w
1
P
Beispiel: Mittelwertfilter yr = |W |
xr 0 (|W | = 2w + 1)
r 0 =rw

Naiver Algorithmus (direkt nach der Formel):

for r = 0 bis n
sum = 0
for r 0 = r w bis r + w
sum = sum + xr 0
yr = sum/|W |

Zeitkomplexitt: n |W |

D. Schlesinger () Bildverarbeitung: Filterung 12 / 17


Lineare Filterung Algorithmen

Idee: (Bildchen)

r+w r+w rw1


X X X
xr 0 = xr 0 xr 0 = xr+w xrw1
r 0 =rw r 0 =0 r 0 =0

Besserer Algorithmus:

Berechne xr fr alle r:
for r = 0 bis n
xr = xr1 + xr
Berechne yr :
for r = 0 bis n
yr = (xr+w xrw1 )/|W |

Zeitkomplexitt: n

D. Schlesinger () Bildverarbeitung: Filterung 13 / 17


Lineare Filterung Algorithmen

Verallgemeinerung auf 2D:


Verwendung des Integralbildes x
Berechne xr :
for (i, j) = (0, 0) bis (m, n)
(zeilenweise)
xr = xi,j1 + xi1,j xi1,j1 + xr + -
Berechne yr :
- +
for (i, j) = (0, 0) bis (m, n)
yr = (xi+w,j+w xiw,j+w
xi+w,jw + xiw,jw )/|W |

D. Schlesinger () Bildverarbeitung: Filterung 14 / 17


Lineare Filterung Algorithmen

Ein etwas komplizierteres Beispiel (wieder 1D, Bildchen):


r
X
yr = (w r + r 0 ) xr 0
r 0 =rw

Man berlege, ob sich yr+1 aus dem yr effizient berechnen lsst:


r+1
X
yr+1 = (w r 1 + r 0 ) xr 0
r 0 =r+1w
r+1 r+1
X X
= (w r + r 0 ) xr 0 xr 0
r 0 =r+1w r 0 =r+1w
r
X r
X
= (w r + r 0 ) xr 0 + w xr+1 xr 0
r 0 =rw r 0 =rw
= yr + w xr+1 xr

xr kann mit linearer Zeitkomplexitt berechnet werden (Mittelwertfilter)


die gesamte Zeitkomplexitt ist linear.

D. Schlesinger () Bildverarbeitung: Filterung 15 / 17


Lineare Filterung Algorithmen

Faltungen allgemein:

y =x g

X
yi = xij gj
j=

Eigenschaften:
sind kommutativ, d.h. x g = g x;
sind assoziativ, d.h. (x g 1 ) g 2 = x (g 1 g 2 );
sind distributiv mit +, d.h. x (g 1 + g 2 ) = x g 1 + x g 2 .

Identische Faltung (ndert das Signal nicht): gjI = 1I(j = 0)

Inverse Faltungen: g g 1 = g I
Beispiel (j = 0 ist fett gekennzeichnet):

g diff = [. . . , 0, 0, 0, 1, 1, 0, . . .] Differential Operator


g int = [. . . , 0, 0, 0, 1, 1, 1, . . .] Integral Operator

D. Schlesinger () Bildverarbeitung: Filterung 16 / 17


Lineare Filterung Algorithmen

Der Trick zur effizienten Berechnung basiert auf der folgenden Umwandlung:

x g = x g I g = x g int g diff g = (x g int ) (g g diff )

oder sogar mehr

x g = (x g int . . . g int ) (g g diff . . . g diff )

Die Faltung x g int braucht lineare Zeitkomplexitt,


mit g = g g diff . . . g diff (Vorberechnung) wird erreicht, dass g schwach besetzt ist.

D. Schlesinger () Bildverarbeitung: Filterung 17 / 17

Das könnte Ihnen auch gefallen