Saturday 18 November 2017

Gleitend Durchschnittlich Fft


Die Wissenschaftler und Ingenieure Leitfaden zur digitalen Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 24: Lineare Bildverarbeitung Obwohl die Fourier-Transformation langsam ist, ist es immer noch der schnellste Weg, um ein Bild mit einem großen Filterkernel zu falten. Zum Beispiel ist das Falten eines 512times512 Bildes mit einem 50times50 PSF etwa 20 mal schneller mit der FFT im Vergleich zu herkömmlicher Faltung. In Kapitel 18 wird diskutiert, wie die FFT-Faltung für eindimensionale Signale funktioniert. Die zweidimensionale Version ist eine einfache Erweiterung. Wir zeigen die FFT-Faltung mit einem Beispiel, einem Algorithmus, um ein vorbestimmtes Muster in einem Bild zu lokalisieren. Angenommen, wir bauen ein System für die Inspektion von Ein-Dollar-Scheine, wie zum Beispiel für den Druck Qualitätskontrolle, Fälschung Erkennung oder Zahlungsüberprüfung in einem Automaten verwendet werden könnte. Wie in Fig. 24-11, ein 100times100 Pixel Bild wird von der Rechnung, zentriert auf das Porträt von George Washington erworben. Das Ziel ist es, dieses Bild für ein bekanntes Muster zu suchen, in diesem Beispiel das 29times29 Pixelbild des Gesichts. Das Problem ist das: Wenn man ein erworbenes Bild und ein bekanntes Muster hat, was ist der effektivste Weg, um zu lokalisieren, wo (oder wenn) das Muster im Bild erscheint Wenn Sie in Kapitel 6 beachtet haben, wissen Sie, dass die Lösung für dieses Problem ist Korrelation (ein angepasstes Filter) und dass es durch die Verwendung von Faltung implementiert werden kann. Bevor Sie die eigentliche Faltung durchführen, gibt es zwei Modifikationen, die gemacht werden müssen, um das Zielbild in eine PSF zu verwandeln. Diese sind in Abb. 24-12 Abbildung (a) zeigt das Zielsignal, das Muster, das wir zu erkennen versuchen. In (b) wurde das Bild um 180 ° gedreht, das Gleiche, das von links nach rechts umgedreht wurde und dann nach oben geklappt wurde. Wie in Kapitel 7 diskutiert, bei der Korrelation durch die Verwendung von Faltung. Muss das Zielsignal umgekehrt werden, um der Umkehrung entgegenzuwirken, die während der Faltung auftritt. Wir werden in Kürze auf dieses Thema zurückkommen. Die zweite Modifikation ist ein Trick zur Verbesserung der Wirksamkeit des Algorithmus. Anstatt zu versuchen, das Gesicht im Originalbild zu erkennen, ist es effektiver, die Kanten des Gesichts in den Kanten des Originalbildes zu erkennen. Dies liegt daran, dass die Kanten schärfer sind als die ursprünglichen Merkmale, wodurch die Korrelation einen schärferen Peak hat. Dieser Schritt ist nicht erforderlich, aber es macht die Ergebnisse deutlich besser. In der einfachsten Form wird ein 3 × 3-Kantenerfassungsfilter sowohl auf das Originalbild als auch auf das Zielsignal angewendet, bevor die Korrelation durchgeführt wird. Aus der assoziativen Eigenschaft der Faltung ist dies die gleiche wie die Anwendung des Kantenerfassungsfilters auf das Zielsignal zweimal. Und das Originalbild allein lassen In der Praxis ist die Anwendung des Kantenerfassungs-3-mal3-Kerns nur einmal im Allgemeinen ausreichend. Dies ist, wie (b) in (c) in Fig. 24-12 Dies macht (c) die PSF, die in der Faltung verwendet werden soll. Abbildung 24-13 zeigt die Details der FFT-Faltung. In diesem Beispiel werden wir das Bild (a) mit dem Bild (b) falten, um das Bild (c) zu erzeugen. Die Tatsache, dass diese Bilder ausgewählt und vorverarbeitet wurden, um eine Korrelation zu implementieren, ist irrelevant, dies ist ein Flussdiagramm der Faltung. Der erste Schritt ist, dass beide Signale mit genügend Nullen gefaltet werden, um ihnen eine Macht von zwei in Größe zu machen, und groß genug, um das endgültige Bild zu halten. Das heißt, wenn Bilder von 100 × 100 und 29 × 29 Pixeln gefaltet werden, beträgt das resultierende Bild 128 × 128 Pixel. Daher müssen genügend Nullen zu (a) und (b) hinzugefügt werden, um sie jeweils 128 × 128 Pixel in der Größe zu machen. Wenn dies nicht geschieht, findet eine kreisförmige Faltung statt und das endgültige Bild wird verzerrt. Wenn Sie Schwierigkeiten haben, diese Konzepte zu verstehen, gehen Sie zurück und überprüfen Sie Kapitel 18, wo der eindimensionale Fall ausführlicher diskutiert wird. Der FFT-Algorithmus wird verwendet, um (a) und (b) in den Frequenzbereich zu transformieren. Dies führt zu vier 128times128 Arrays, wobei die Real - und Imaginärteile der beiden Bilder gefaltet werden. Das Multiplizieren der realen und imaginären Teile von (a) mit den realen und imaginären Teilen von (b) erzeugt die Real - und Imaginärteile von (c). (Wenn Sie daran erinnert werden müssen, wie dies geschieht, siehe Gleichung 9-1). Die Inverse FFT schließt den Algorithmus ab, indem er das endgültige gefaltete Bild erzeugt. Der Wert jedes Pixels in einem Korrelationsbild ist ein Maß dafür, wie gut das Zielbild dem gesuchten Bild an diesem Punkt entspricht. In diesem speziellen Beispiel besteht das Korrelationsbild in (c) aus Rauschen plus einem einzelnen hellen Peak, was eine gute Übereinstimmung mit dem Zielsignal anzeigt. Das einfachste Auffinden des hellsten Bildpunktes in diesem Bild würde die erkannten Koordinaten des Gesichts angeben. Wenn wir die Kantenerkennungsmodifikation auf dem Zielsignal nicht verwendet hätten, wäre der Peak noch vorhanden, aber viel weniger deutlich. Während die Korrelation ein mächtiges Werkzeug in der Bildverarbeitung ist, leidet sie unter einer signifikanten Einschränkung: Das Zielbild muss genau die gleiche Größe und Rotationsorientierung haben wie der entsprechende Bereich im gesuchten Bild. Lärm und andere Variationen in der Amplitude jedes Pixels sind relativ unwichtig, aber eine exakte räumliche Übereinstimmung ist kritisch. Zum Beispiel macht dies die Methode fast unbrauchbar für die Suche nach feindlichen Panzern in militärischen Aufklärungsfotos, Tumoren in medizinischen Bildern und Pistolen in Flughafen Gepäck Scans. Ein Ansatz besteht darin, das Bild mehrmals mit einer Vielzahl von Formen und Rotationen des Zielbildes zu korrelieren. Dies funktioniert im Prinzip, aber die Ausführungszeit wird Sie verlieren Interesse in einer Eile. Der Wissenschaftler und Ingenieure Leitfaden für digitale Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 12: Die Fast-Fourier-Transformation Wie die FFT funktioniert Die FFT ist ein komplizierter Algorithmus, und ihre Details sind in der Regel denen, die sich auf solche Dinge spezialisiert. Dieser Abschnitt beschreibt den allgemeinen Betrieb der FFT, aber Röcke ein zentrales Thema: die Verwendung von komplexen Zahlen. Wenn Sie einen Hintergrund in komplexen Mathematik haben, können Sie zwischen den Zeilen lesen, um die wahre Natur des Algorithmus zu verstehen. Dont Sorge, wenn die Details entziehen Sie wenigen Wissenschaftler und Ingenieure, die die FFT verwenden könnte das Programm von Grund auf neu schreiben. In komplexer Notation enthalten die Zeit - und Frequenzdomänen jeweils ein Signal aus N komplexen Punkten. Jeder dieser komplexen Punkte besteht aus zwei Zahlen, dem Realteil und dem Imaginärteil. Zum Beispiel, wenn wir über komplexe Stichprobe X 42 sprechen, bezieht sie sich auf die Kombination von ReX 42 und ImX 42. Mit anderen Worten, jede komplexe Variable enthält zwei Zahlen. Wenn zwei komplexe Variablen multipliziert werden, müssen die vier Einzelkomponenten zu den beiden Komponenten des Produkts zusammengefasst werden (wie in Gleichung 9-1). Die folgende Diskussion über die Funktionsweise der FFT nutzt diesen Jargon der komplexen Notation. Das heißt, die singulären Begriffe: Signal, Punkt, Probe. Und Wert. Beziehen sich auf die Kombination des Realteils und des Imaginärteils. Die FFT arbeitet durch Zerlegen eines N-Punkt-Zeitbereichssignals in N Zeitbereichssignale, die jeweils aus einem einzigen Punkt bestehen. Der zweite Schritt besteht darin, die N Frequenzspektren zu berechnen, die diesen N Zeitbereichssignalen entsprechen. Schließlich werden die N Spektren zu einem einzigen Frequenzspektrum synthetisiert. Abbildung 12-2 zeigt ein Beispiel für die in der FFT verwendete Zeitbereichszerlegung. In diesem Beispiel wird ein 16-Punkt-Signal durch vier getrennte Stufen zerlegt. Die erste Stufe bricht das 16-Punkt-Signal in zwei Signale, die jeweils aus 8 Punkten bestehen. Die zweite Stufe zerlegt die Daten in vier Signale von 4 Punkten. Dieses Muster setzt sich fort, bis es N Signale gibt, die aus einem einzigen Punkt bestehen. Eine verschachtelte Zerlegung wird jedes Mal verwendet, wenn ein Signal in zwei Teile gebrochen wird, dh das Signal wird in seine geraden und ungeradzahligen Abtastwerte getrennt. Der beste Weg, dies zu verstehen, ist durch die Inspektion von Abb. 12-2 bis du das Muster fassst. Bei dieser Zerlegung sind Log-2-N-Stufen erforderlich, dh ein 16-Punkt-Signal (2 4) benötigt 4 Stufen, ein 512-Punkt-Signal (2 7) benötigt 7 Stufen, ein 4096-Punkt-Signal (2 12) benötigt 12 Stufen usw. Denken Sie daran, diesen Wert, Log 2 N wird es in diesem Kapitel vielfach referenziert. Nun, da Sie die Struktur der Zersetzung verstehen, kann es sehr vereinfacht werden. Die Zerlegung ist nichts weiter als eine Neuordnung der Samples im Signal. Abbildung 12-3 zeigt das erforderliche Umordnungsmuster. Auf der linken Seite werden die Probennummern des Originalsignals zusammen mit ihren Binäquivalenten aufgelistet. Auf der rechten Seite sind die umgeordneten Musterzahlen aufgeführt, auch zusammen mit ihren binären Äquivalenten. Die wichtige Idee ist, dass die Binärzahlen die Umkehrungen voneinander sind. Beispielsweise wird die Probe 3 (0011) mit der Probennummer 12 (1100) ausgetauscht. Ebenso wird die Probennummer 14 (1110) mit der Probennummer 7 (0111) vertauscht und so weiter. Die FFT-Zeitbereichszerlegung wird üblicherweise durch einen Bitumkehr-Sortieralgorithmus durchgeführt. Dies beinhaltet das Umordnen der Reihenfolge der N Zeitdomänenproben durch Zählen im Binär mit den Bits, die nach rechts gerichtet sind (wie in der rechten rechten Spalte in Fig. 12-3). Der nächste Schritt im FFT-Algorithmus besteht darin, die Frequenzspektren der 1-Punkt-Zeitbereichssignale zu finden. Nichts könnte einfacher sein, das Frequenzspektrum eines 1-Punkt-Signals ist gleich zu sich selbst. Dies bedeutet, dass hier nichts erforderlich ist. Obwohl es keine Arbeit gibt, vergessen Sie nicht, dass jedes der 1-Punkt-Signale jetzt ein Frequenzspektrum ist und nicht ein Zeitbereichssignal. Der letzte Schritt in der FFT besteht darin, die N Frequenzspektren in der exakten umgekehrten Reihenfolge zu kombinieren, in der die Zeitbereichszerlegung stattfand. Hier wird der Algorithmus unordentlich. Leider ist die Bitumkehrverknüpfung nicht anwendbar, und wir müssen eine Bühne zu einer Zeit zurückkehren. In der ersten Stufe werden 16 Frequenzspektren (jeweils 1 Punkt) in 8 Frequenzspektren (jeweils 2 Punkte) synthetisiert. In der zweiten Stufe werden die 8 Frequenzspektren (jeweils 2 Punkte) in 4 Frequenzspektren (jeweils 4 Punkte) und so weiter synthetisiert. Die letzte Stufe ergibt die Ausgabe des FFT, ein 16-Punkt-Frequenzspektrum. Abbildung 12-4 zeigt, wie zwei Frequenzspektren, die jeweils aus 4 Punkten bestehen, zu einem einzigen Frequenzspektrum von 8 Punkten zusammengefasst sind. Diese Synthese muss die verschachtelte Zerlegung im Zeitbereich rückgängig machen. Mit anderen Worten, die Frequenzbereichsoperation muss dem Zeitbereichsverfahren entsprechen, zwei Taktsignale durch Interlacing zu kombinieren. Betrachten Sie zwei Zeitbereichssignale, abcd und efgh. Ein 8-Punkt-Zeitbereichssignal kann durch zwei Schritte gebildet werden: Verdünnen Sie jedes 4-Punkt-Signal mit Nullen, um es zu einem 8-Punkt-Signal zu machen, und fügen Sie dann die Signale zusammen. Das heißt, abcd wird a0b0c0d0. Und efgh wird 0e0f0g0h. Das Hinzufügen dieser beiden 8-Punkt-Signale erzeugt aebfcgdh. Wie in Fig. 12-4, das Verdünnen des Zeitbereichs mit Nullen entspricht einer Duplizierung des Frequenzspektrums. Daher werden die Frequenzspektren in der FFT durch Duplizieren derselben kombiniert und dann die duplizierten Spektren zusammen addiert. Um sich bei der Addition anzupassen, werden die beiden Zeitbereichssignale mit Nullen etwas anders verdünnt. In einem Signal sind die ungeraden Punkte null, während im anderen Signal die geraden Punkte null sind. Mit anderen Worten wird eines der Zeitbereichssignale (0e0f0g0h in Fig. 12-4) um eine Probe nach rechts verschoben. Diese Zeitbereichsverschiebung entspricht dem Multiplizieren des Spektrums mit einer Sinuskurve. Um dies zu sehen, ist zu erinnern, dass eine Verschiebung im Zeitbereich gleichbedeutend ist, um das Signal mit einer verschobenen Delta-Funktion zu falten. Dies multipliziert das Signalspektrum mit dem Spektrum der verschobenen Delta-Funktion. Das Spektrum einer verschobenen Delta-Funktion ist ein Sinusoid (siehe Abb. 11-2). Abbildung 12-5 zeigt ein Flussdiagramm zur Kombination von zwei 4-Punkt-Spektren zu einem einzigen 8-Punkt-Spektrum. Um die Situation noch weiter zu reduzieren, beachten Sie, dass Abb. 12-5 wird aus dem Grundmuster in Fig. 12-6 wiederholt, das immer wieder wiederholt wird. Dieses einfache Flußdiagramm wird wegen seines geflügelten Aussehens als Schmetterling bezeichnet. Der Schmetterling ist das grundlegende rechnerische Element der FFT und verwandelt zwei komplexe Punkte in zwei weitere komplexe Punkte. Abbildung 12-7 zeigt die Struktur der gesamten FFT. Die Zeitdomänen-Zerlegung wird mit einem Bitumkehr-Sortieralgorithmus durchgeführt. Die Umwandlung der zerlegten Daten in den Frequenzbereich beinhaltet nichts und erscheint daher nicht in der Figur. Die Frequenzbereichssynthese erfordert drei Schleifen. Die äußere Schleife durchläuft die Log 2 N Stufen (d. h. jede Ebene in Abb. 12-2, beginnend von unten und nach oben). Die mittlere Schleife bewegt sich durch jedes der einzelnen Frequenzspektren in der zu bearbeitenden Stufe (d. h. jede der Kästen auf irgendeiner Ebene in Fig. 12-2). Die innerste Schleife verwendet den Schmetterling, um die Punkte in jedem Frequenzspektrum zu berechnen (d. h. durchschleifen die Proben innerhalb eines jeden Kastens in Fig. 12-2). Die Overhead-Boxen in Abb. 12-7 bestimmen die Anfangs - und Endindizes für die Schleifen sowie die Berechnung der Sinusoide, die in den Schmetterlingen benötigt werden. Jetzt kommen wir in das Herz dieses Kapitels, die eigentlichen FFT-Programme. Ich habe ein 30-stündiges Sprachsignal, das bei 44,1 kHz abgetastet wurde. Nun möchte ich zeigen, welche Frequenzen die Rede hat. Allerdings bin ich nicht sicher, was wäre der beste Weg, um das zu tun. Es scheint manchmal man berechnet den absoluten Wert einer Fourier-Transformation und manchmal Leistungsspektraldichte. Wenn ich es richtig verstehe, arbeitet das letztere so, dass ich mein Signal in Teile teile, FFT Teilweise mache und irgendwie summiere. Fensterfunktionen sind irgendwie beteiligt. Kannst du das ein bisschen klären für mich Im neu bei DSP. Fragte am 25. Juli um 16:30 Uhr Nun möchte ich zeigen, welche Frequenzen die Rede hat. Allerdings bin ich nicht sicher, was wäre der beste Weg, um das zu tun. Es scheint manchmal man berechnet den absoluten Wert einer Fourier-Transformation und manchmal Leistungsspektraldichte. Wenn du deiner Analyse physikalische Bedeutung verleihen willst, dann geh mit der Leistungsspektraldichte (PSD). Dies ist, weil dies einfach geben Sie die Macht Ihres Signals, in jedem Frequenzband. Auf der anderen Seite, wenn Sie nicht wollen, Pflege über eine physische Bedeutung, aber wollen wissen, wie die Fourier Amplituden jeder Band variieren relativ zueinander, können Sie sich auf absolute Größe. In der Praxis können Sie die PSD als einfach die absolute Größe der Fourier-Transformation quadriert berechnen. Wenn beispielsweise Ihr Signal xn ist und seine DFT X (f) ist, dann ist die absolute Größe der DFT X (f), während die PSD X (f) 2 ist. Wenn ich es richtig verstehe, arbeitet das letztere so, dass ich mein Signal in Teile teile, FFT Teilweise mache und irgendwie summiere. Fensterfunktionen sind irgendwie beteiligt. Kannst du das ein bisschen klären für mich Im neu bei DSP. Nein, das ist nicht wahr. Was du hier redest, bezieht sich auf die Kurzzeit-Fourier-Transformation. (STFT). Dies ist einfach hacken Sie Ihre Zeit Domain-Signal, Witwe es, und dann die vierer trnasform. Am Ende des Tages aber wirst du noch eine komplexe Matrix haben. Wenn Sie sich entscheiden, seine absolute Größe zu nehmen, haben Sie eine absolute Größe Fourier Transformation Matrix. Wenn Sie seine absolute Größe quadriert nehmen, haben Sie eine Leistungsspektraldichte Matrix. Antwortete am 25. Juli um 17:28

No comments:

Post a Comment