Sunday 12 February 2017

Moving Average Filter Kernel

Die Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 14: Einführung in digitale Filter Hochpass-, Bandpass - und Bandsperrfilter Hochpass-, Bandpass - und Bandsperrfilter werden so entworfen, dass sie mit einem Tiefpassfilter beginnen und es dann in die gewünschte Antwort umwandeln . Aus diesem Grund geben die meisten Diskussionen zum Filterdesign nur Beispiele für Tiefpaßfilter. Es gibt zwei Verfahren für die Tiefpass-Hochpaßumwandlung: spektrale Inversion und spektrale Umkehrung. Beide sind gleich nützlich. Ein Beispiel der spektralen Inversion ist in 14-5 gezeigt. Abbildung (a) zeigt einen Tiefpaßfilterkern, der als windowed-sinc bezeichnet wird (das Thema von Kapitel 16). Dieser Filterkernel hat eine Länge von 51 Punkten, obwohl viele der Samples einen so kleinen Wert haben, dass sie in diesem Graphen Null zu sein scheinen. Der entsprechende Frequenzgang wird in (b) gezeigt, gefunden durch Hinzufügen von 13 Nullen zum Filterkern und unter Verwendung einer 64-Punkt-FFT. Zwei Dinge müssen getan werden, um den Tiefpaßfilterkernel in einen Hochpaßfilterkernel zu ändern. Zuerst ändern Sie das Vorzeichen der einzelnen Samples im Filterkernel. Zweitens, fügen Sie eine zur Probe in der Mitte der Symmetrie. Dies führt zu dem in (c) gezeigten Hochpaßfilterkern mit dem in (d) gezeigten Frequenzgang. Spektrale Inversion spiegelt den Frequenzgang von oben nach unten. Ändern der Passbänder in Stoppbänder und der Stoppbänder in Passbänder. Mit anderen Worten, er ändert einen Filter von Tiefpaß zu Hochpaß, Hochpaß zu Tiefpaß, Bandpaß zu Bandspur oder Bandspur zu Bandpaß. Abbildung 14-6 zeigt, warum diese zweistufige Modifikation des Zeitbereichs zu einem invertierten Frequenzspektrum führt. In (a) wird das Eingangssignal x n parallel an zwei Systeme angelegt. Eines dieser Systeme ist ein Tiefpassfilter mit einer Impulsantwort, die durch h n gegeben ist. Das andere System tut nichts für das Signal und hat daher eine Impulsantwort, die eine Delta-Funktion ist, delta n. Der Gesamtausgang y n ist gleich dem Ausgang des Allpass-Systems minus dem Ausgang des Tiefpaßsystems. Da die niederfrequenten Komponenten von dem ursprünglichen Signal subtrahiert werden, erscheinen nur die hochfrequenten Komponenten in dem Ausgang. Somit wird ein Hochpaßfilter gebildet. Dies könnte als ein zweistufiger Vorgang in einem Computerprogramm ausgeführt werden: Durchlaufen des Signals durch ein Tiefpassfilter und dann Subtrahieren des gefilterten Signals von dem Original. Jedoch kann der gesamte Vorgang in einer Signalstufe durch Kombinieren der beiden Filterkerne durchgeführt werden. Wie in Kapitel 7 beschrieben, können parallele Systeme mit addierten Ausgängen durch Hinzufügen ihrer Impulsantworten zu einer einzigen Stufe kombiniert werden. Wie in (b) gezeigt, ist der Filterkernel für den Hochpassfilter gegeben durch: delta n - h n. Das heißt, ändern Sie das Vorzeichen aller Proben, und fügen Sie dann ein, um die Probe in der Mitte der Symmetrie. Damit diese Technik funktioniert, müssen die Niederfrequenzkomponenten, die aus dem Tiefpassfilter austreten, dieselbe Phase wie die Niederfrequenzkomponenten haben, die das Allpass-System verlassen. Andernfalls kann keine vollständige Subtraktion erfolgen. Dies stellt zwei Einschränkungen für das Verfahren dar: (1) Der ursprüngliche Filterkernel muß eine Links-Rechts-Symmetrie haben (d. H. Eine Null - oder Linearphase), und (2) der Impuls muß in der Mitte der Symmetrie addiert werden. Das zweite Verfahren zur Tiefpaß - zu Hochpaßumwandlung, spektrale Umkehrung. Ist in Fig. 2 dargestellt. 14-7. Genau wie zuvor entspricht der Tiefpaßfilterkernel in (a) dem Frequenzgang in (b). Der Hochpaßfilterkernel (c) wird durch Ändern des Vorzeichens jeder zweiten Abtastung in (a) gebildet. Wie in (d) gezeigt, kippt dies den Frequenzbereich von links nach rechts. 0 zu 0,5 und 0,5 zu 0. Die Grenzfrequenz des Beispiel-Tiefpaßfilters beträgt 0,15, was dazu führt, daß die Grenzfrequenz des Hochpaßfilters 0,35 beträgt. Das Ändern des Vorzeichens jeder zweiten Abtastung ist äquivalent zum Multiplizieren des Filterkerns mit einer Sinuskurve mit einer Frequenz von 0,5. Wie in Kapitel 10 erörtert, hat dies die Wirkung, den Frequenzbereich um 0,5 zu verschieben. Betrachten Sie (b) und stellen Sie sich die negativen Frequenzen zwischen -0,5 und 0 vor, die ein Spiegelbild der Frequenzen zwischen 0 und 0,5 sind. Die in (d) auftretenden Frequenzen sind die negativen Frequenzen von (b), die um 0,5 verschoben sind. Schließlich zeigen Fig. 14-8 und 14-9 zeigen, wie Tiefpaß - und Hochpaßfilterkerne zu Bandpass - und Bandsperrfiltern kombiniert werden können. Kurz gesagt, das Hinzufügen der Filterkerne erzeugt ein Bandsperrfilter, während das Zusammenfalten der Filterkerne ein Bandpaßfilter erzeugt. Diese basieren auf der Art und Weise, wie kaskadierte und parallele Systeme kombiniert werden, wie in Kapitel 7 diskutiert wird. Es können auch mehrere Kombinationen dieser Techniken verwendet werden. Zum Beispiel kann ein Bandpassfilter konstruiert werden, indem die beiden Filterkerne zu einem Bandpaßfilter addiert werden und dann die spektrale Inversion oder spektrale Umkehrung, wie zuvor beschrieben, verwendet wird. Alle diese Techniken funktionieren sehr gut mit wenigen Überraschungen. Lodes Computer Graphics Tutorial Image Filtering Inhaltsverzeichnis Einleitung Bild-Filterung können Sie verschiedene Effekte auf Fotos anwenden. Die hier beschriebene Art der Bildfilterung verwendet ein 2D-Filter ähnlich dem, das in Paint Shop Pro als Benutzerdefinierter Filter und in Photoshop als Benutzerdefinierter Filter enthalten ist. Convolution Der Trick der Bildfilterung ist, dass Sie eine 2D-Filtermatrix und das 2D-Bild haben. Dann nehmen Sie für jedes Pixel des Bildes die Summe der Produkte. Jedes Produkt ist der Farbwert des aktuellen Bildpunktes oder eines Nachbarn davon mit dem entsprechenden Wert der Filtermatrix. Die Mitte der Filtermatrix muss mit dem aktuellen Pixel multipliziert werden, die anderen Elemente der Filtermatrix mit entsprechenden Nachbarpixeln. Diese Operation, bei der Sie die Summe der Produkte von Elementen aus zwei 2D-Funktionen nehmen, wobei Sie eine der beiden Funktionen über jedes Element der anderen Funktion bewegen, heißt Faltung oder Korrelation. Der Unterschied zwischen Faltung und Korrelation ist, dass für die Faltung müssen Sie die Filtermatrix spiegeln, aber in der Regel seine symmetrische sowieso so theres keinen Unterschied. Die Filter mit Faltung sind relativ einfach. Komplexere Filter, die mehr Phantasie-Funktionen verwenden können, sind ebenfalls vorhanden und können viel komplexere Dinge (zum Beispiel die Colored Pencil-Filter in Photoshop), aber solche Filter hier diskutiert werden. Der 2D-Faltungsvorgang erfordert eine 4-Doppel-Schleife, so dass es nicht extrem schnell ist, es sei denn, Sie verwenden kleine Filter. Hier in der Regel in der Regel mit 3x3 oder 5x5 Filter. Es gibt ein paar Regeln über den Filter: Seine Größe muss uneben sein, so dass es ein Zentrum hat, zum Beispiel 3x3, 5x5 und 7x7 sind ok. Es muss nicht, aber die Summe aller Elemente des Filters sollte 1 sein, wenn das resultierende Bild die gleiche Helligkeit wie das Original haben soll. Wenn die Summe der Elemente größer als 1 ist, wird das Ergebnis ein helleres Bild, und wenn es kleiner als 1 ist, ein dunkleres Bild. Wenn die Summe 0 ist, ist das resultierende Bild nicht unbedingt vollständig schwarz, aber es wird sehr dunkel. Das Bild hat endliche Dimensionen, und wenn Sie zum Beispiel ein Pixel auf der linken Seite berechnen, gibt es keine weiteren Pixel links davon, solange diese für die Faltung erforderlich sind. Sie können hier entweder den Wert 0 verwenden oder auf die andere Seite des Bildes wickeln. In diesem Tutorial wird die Umhüllung gewählt, da sie einfach mit einer Modulo-Division durchgeführt werden kann. Die resultierenden Pixelwerte nach dem Anlegen des Filters können negativ oder größer als 255 sein, wenn dies geschieht, können Sie sie abschneiden, so dass Werte kleiner als 0 sind 0 und Werte größer als 255 sind auf 255 gesetzt. Bei negativen Werten können Sie auch den absoluten Wert annehmen. In der Fourier Domain oder Frequency Domain wird die Faltungsoperation stattdessen zu einer Multiplikation, die schneller ist. In der Fourier-Domäne können viel leistungsfähigere und größere Filter schneller angewendet werden, besonders wenn Sie die Fast Fourier Transformation verwenden. Mehr dazu im Fourier Transform Artikel. In diesem Artikel, auch auf einige sehr typische kleine Filter, wie z. B. Unschärfe, Kanten-Erkennung und Prägung. Bild-Filter arent machbar für Echtzeit-Anwendungen und Spiele noch, aber theyre nützlich bei der Bildverarbeitung. Digitale Audio - und Elektronikfilter arbeiten auch mit Faltung, aber in 1D. Heres der Code thatll verwendet werden, um verschiedene Filter auszuprobieren. Neben der Verwendung einer Filtermatrix weist sie auch einen Multiplikatorfaktor und eine Vorspannung auf. Nach dem Anlegen des Filters wird der Faktor mit dem Ergebnis multipliziert und die Vorspannung addiert. Also, wenn Sie einen Filter mit einem Element 0,25 in sie haben, aber der Faktor ist auf 2 gesetzt, werden alle Elemente des Filters in der Theorie multipliziert mit zwei, so dass Element 0,25 tatsächlich 0,5 ist. Die Vorspannung kann verwendet werden, wenn Sie das resultierende Bild heller machen möchten. Das Ergebnis eines Pixels wird in Floats rot, grün und blau gespeichert, bevor es in den Integerwert im Ergebnispuffer konvertiert wird. Die Filterberechnung selbst ist eine 4-Doppelschleife, die durch jedes Pixel des Bildes und dann durch jedes Element der Filtermatrix gehen muss. Die Position imageX und imageY wird so berechnet, dass für das zentrale Element des Filters x, y, aber für die anderen Elemente ein Pixel vom Bild nach links, rechts, oben oder unten von x, y sein kann. Sein Modulo wird durch die Breite (w) oder die Höhe (h) des Bildes geteilt, so dass Pixel außerhalb des Bildes herumgewickelt werden. Bevor modulo dividing es, w oder h sind auch hinzugefügt, weil diese Modulo-Division funktioniert nicht richtig für negative Werte. Nun wird das Pixel (-1, -1) korrekt Pixel (w-1, h-1). Wenn Sie den Absolutwert von Werten kleiner als Null statt der Abkürzung verwenden möchten, verwenden Sie stattdessen diesen Code:


No comments:

Post a Comment