Phasenkorrelation vs. normalisierte Kreuzkorrelation


8

Ich habe dies bei Mathematics Stack Exchange gestellt, aber da diese Art von an der Grenze der Fragen liegt, die normalerweise dort gestellt werden, und der Fragen, die Sie hier sehen, werde ich sie auch hier stellen. (Bis jetzt gab es dort keine Aktivität zu meiner Frage.)

In der zweidimensionalen diskreten Signalanalyse (insbesondere Bildverarbeitung) fand ich eine Definition für die normalisierte Kreuzkorrelation zwischen zwei Bildern, beide von Größe M×N g1(x,y) und g2(x,y) ist:

r1=(g1g2)(x,y)Normalized=m=0M1n=0N1[g1(m,n)g1¯][g2(x+m,y+n)g2¯]m=0M1n=0N1[g1(m,n)g1¯]2[g2(x+m,y+n)g2¯]2

Dies wird angeblich von der Funktion normxcorr2in der Signal Processing Toolbox in MATLAB ausgeführt, obwohl der Fast Normalized Cross-Correlation-Algorithmus von JP Lewis verwendet wird. Im Vergleich zu der von Kuglin und Hines vorgeschlagenen Phasenkorrelationsmethode (mit normalisiertem Kreuzleistungsspektrum):

G1(u,v)=F{g1(x,y)}G2(u,v)=F{g2(x,y)}r2=F1{G1(u,v)G2(u,v)|G1(u,v)G2(u,v)|}

Ohne die elementweise Normalisierung vor der inversen Fourier-Transformation r2ist dasselbe wie eine nicht normalisierte Kreuzkorrelation, mit der Ausnahme, dass die Fourier-Transformation davon ausgeht, dass sich das Signal im räumlichen Bereich wiederholt. Es ist klar, dassr1r2 durch Betrachten der resultierenden Korrelation "Bilder" in MATLAB, die ich aber erwartet hatte r2 scheint fast diskontinuierlich von den Bildern, auf denen ich die Methode teste, während r1 fällt immer viel glatter aus (das Ergebnis r2 Bilder sind immer "fleckig", r1sind nicht). Warum ist das? Ich nehme an, es hat etwas mit der elementweisen Normalisierung im Fourier-Bereich zu tun, was im Grunde genommen so ist, als würde man das Signal auf eine Art und Weise beschneiden, aber ich weiß nicht, wie ich dies aus bekannten Eigenschaften des (inversen) schließen kann. Fourier-Transformation, wenn dies überhaupt eine korrekte Annahme ist.

Hier sind Beispiele für die Unterschiede (r2wurde verstärkt, um den Unterschied in den Eigenschaften der Bilder deutlicher darzustellen). Sie werden an denselben 2 Bildern ausgeführt.

  • r1: Normalisierte Kreuzkorrelation

Geben Sie hier die Bildbeschreibung ein

  • r2: Phasenkorrelation

Geben Sie hier die Bildbeschreibung ein

Zusammenfassend meine Frage: Warum ist r2 so "fleckig", während r1 ist nicht?


1
Stellen Sie Ihre Frage auf einer Website, da Cross-Posting bei SE nicht gut ankommt. Lesen Sie hier
Gilles

Vielen Dank, dass Sie darauf hingewiesen haben. Ich wusste nicht, dass dies hier verpönt ist. Ich bin jedoch in Konflikt geraten. Ich weiß nicht, welche Seite (von beiden) am besten geeignet wäre. In Ihrem Link lautet die Top-Antwort: "Viele Fragen, die von Personen als standortübergreifend als zutreffend gekennzeichnet wurden, haben sich auf einer einzelnen Website als gültig erwiesen, wenn sie richtig geschrieben und durchdacht wurden." Ich weiß nicht, wie ich meine Frage für die eine oder andere Site passender machen kann, ohne einfach Informationen zurückzuhalten. Die einzige Möglichkeit, die ich mir vorstellen kann, besteht darin, sie von einer Site zu löschen und zur anderen zu wechseln, was wie eine seltsame Lösung erscheint.
Eric

für r2, versuchen Sie zu erniedrigen g1und g2wenden Sie dann zuerst die fft. r1und r2sollte gleich sein. eine für den Raumbereich und die andere für den Frequenzbereich, aber äquivalent bis auf eine Normalisierung durch die Normen.
Lee

Antworten:


1

Ich bin auf dieses Rätsel in einem eindimensionalen Fall gestoßen, und so werde ich es präsentieren. Betrachten Sie zwei Signale, die Sie korrelieren möchten. Signal 1 (Abbildung Tafel a) ist eine gedämpfte Sinuswelle und Signal 2 (Abbildung Tafel b) ist zwei Instanzen von Signal 1, jedoch mit leicht unterschiedlichen Amplituden.

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie nun eine normalisierte Kreuzkorrelation, wie Sie sie in Ihrer Frage definiert haben (Abbildung c). Das Ergebnis ist eine sanft oszillierende Funktion, die eine Spitzenamplitude aufweist, wenn die Spitze von Signal 1 und die Spitze von Signal 2 ausgerichtet sind. Umgekehrt weist die normalisierte Kreuzkorrelationsfunktion Täler auf, wenn die Spitze von Signal 1 mit den Tälern von Signal 2 übereinstimmt .

Verwenden Sie dann eine Phasenkorrelation, wie Sie sie in Ihrer Frage definiert haben (Abbildung d). Eine Phasenkorrelation beinhaltet eine Division des Absolutwerts (oder der Amplitude) der beiden Signale. In einem 1D-Fall ist das ein Vektor und in einem 2d-Fall, wie Ihre Frage lautet, ist das eine Matrix. In beiden Fällen können die Werte in diesem Divisor sehr nahe bei Null liegen, und wenn Sie durch etwas nahe Null dividieren, erhalten Sie Spitzen oder Diskontinuitäten .

Es gibt verschiedene Strategien, die eine Tiefpassfilterung der Eingangssignale oder der phasenkorrelierten Funktion umfassen. Diese Seite zum Stapelüberlauf kann hilfreich sein: /programming/30630632/performing-a-phase-correlation-with-fft-in-r

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.