Digital Signal Processing Reference
In-Depth Information
6 Filter
p 0
Abbildung 6.19
Berechnung des gewichteten Median-
filters. Jeder Bildwert wird, abhangig
vom entsprechenden Gewicht in der
Gewichtsmatrix W ( i, j ), mehrfach in
die zu sortierende Wertefolge einge-
setzt. Zum Beispiel wird der Wert (0)
des zentralen Pixels dreimal einge-
setzt (weil W (0 , 0) = 3), der Wert 7
zweimal. Anschließend wird innerhalb
der erweiterten Folge durch Sortie-
ren der Medianwert (2) ermittelt.
p K 1
p K = gew. Median
p K +1
W ( i, j )
p 2 K
Im Unterschied zu linearen Filtern gibt es bei nichtlinearen Filtern
generell keine starke“ Theorie, die etwa den Zusammenhang zwischen
der Addition von Bildern und dem Medianfilter in ahnlicher Form be-
schreiben wurde wie bei einer linearen Faltung (Gl. 6.19). Meistens sind
auch keine allgemeinen Aussagen uber die Auswirkungen nichtlinearer
Filter im Frequenzbereich moglich.
6.5 Implementierung von Filtern
6.5.1 E zienz von Filterprogrammen
Die Berechnung von linearen Filtern ist in der Regel eine aufwendige An-
gelegenheit, speziell mit großen Bildern oder großen Filtern (im schlimm-
sten Fall beides). Fur ein Bild der Große M
×
N und einer Filtermatrix
der Große (2 K +1)
×
(2 L +1) benotigt eine direkte Implementierung
2 K · 2 L · M · N =4 KLMN
Operationen, d. h. Multiplikationen und Additionen. Wie wir in Abschn.
6.3.3 gesehen haben, sind substanzielle Einsparungen moglich, wenn Fil-
ter in kleinere, moglichst eindimensionale Filter separierbar sind.
Die Programmierbeispiele in diesem Kapitel wurden bewusst einfach
und verstandlich gehalten. Daher ist auch keine der bisher gezeigten
Losungen besonders e zient und es bleiben zahlreiche Moglichkeiten
zur Verbesserung. Insbesondere ist es wichtig, alle dort nicht unbedingt
benotigten Anweisungen aus den Schleifenkernen herauszunehmen und
moglichst weit nach außen“ zu bringen. Speziell trifft das fur teure“
Anweisungen wie Methodenaufrufe zu, die besonders in Java unverhalt-
nismaßig viel Rechenzeit verbrauchen konnen.
Wir haben mit den ImageJ-Methoden getPixel() und putPixel()
in den Beispielen auch bewusst die einfachste Art des Zugriffs auf Bild-
elemente benutzt, aber eben auch die langsamste. Wesentlich schneller
ist der direkte Zugriff auf Pixel als Array-Elemente (s. Anhang 3.6).
 
Search WWH ::




Custom Search