Ich habe nach dem großartigen Quellcode des OpenCV gesucht, um die Punktzahlberechnung zu verstehen. Wie Sie vielleicht bemerkt haben, kann die Bibliothek eine Vorlage in einem Bild mit einem Konfidenzwert finden. Die cvMatchTemplate-Funktion gibt die Wahrscheinlichkeit und den Speicherort der Vorlage im Bild an.Wo finde ich eine gute Informationsquelle, die FFT-Phasenkorrelationsscoring erklärt
Da DFT langsam ist, entschied ich mich, die FFTW-Bibliothek für die Phasenkorrelation zu verwenden. Ich bekomme das Bild, expandiert auf eine Größe, die eine Potenz von 2 ist, dann das gleiche wie bei der Vorlage, berechnet zunächst die FFT für beide, multipliziert die beiden Arrays, berechnet die inverse FFT, normalisiert schließlich das Ergebnis.
Wenn ich dieses Ergebnis auf einer Bitmap zeige, zeigt es deutlich die Position der Vorlage, aber ich habe Schwierigkeiten bei der Berechnung der Korrelation. Ich habe versucht, cvMatchTemplate Methode Zeile für Zeile unter Debugger zu laufen, es hat nicht geholfen, da die Bibliothek DFT und beliebige Bildgrößen verwendet. Alle Tabellen, die in dieser Methode verwendet werden (Summe, Quadrat usw.), die für entsprechende willkürliche Größen und FFT erzeugt werden, verwenden Zweierpotenzen.
Ich würde für jede Information dankbar sein, wie man die Kerbe von diesem Ergebnis der Phasenkorrelation berechnet. Es gibt viele Quellen, die beschreiben "nimm das, nimm das, multipliziere sie, du siehst den weißen Punkt auf dem Bild, ja du findest es". Ich brauche eine Punktzahl genau wie cvMatchTemplate.
Ich bitte Sie, mich auf eine Website oder auf ein Papier mit der Logik dieser Berechnung oder auf ein Buch zu verweisen. Der Quellcode wäre perfekt, aber darauf habe ich keine Hoffnung.
Vielen Dank für die schnelle Antwort. Ich benutze OpenCV, um kleine Bilder in größeren Bildern zu finden. Denkst du ich muss das Signal Fenster? Ich bin es in der Wave (Sound) Verarbeitung gewohnt. Aber das ist Bildverarbeitung. Übrigens weiß ich, dass FFTW eine beliebige FT-Größe berechnen kann, aber die Potenz von 2 ist schneller zu berechnen. Ich werde sowieso nach CPS suchen. –
Ja, Sie müssen das Bild in 2 Dimensionen Fenster, das ist grundlegende Signalverarbeitung vor dem Finden der FT. Denken Sie darüber nach: Wenn Sie kein Fenster haben, falten Sie Ihr Signal implizit mit einer Zylinderfunktion. Wenn Sie eine Stärke von 2 FT verwenden möchten, verwenden Sie einen zentrierten Block in dem Bild der gewünschten Dimensionen, nicht "erweitern". FFTW ist sehr schnell für Nicht-Power von 2 Bildern. – koan