FFT zur Leitungserkennung

  • Ich versuche, die FFT auf eine andere Weise zu verwenden, als die meisten Leute danach fragen. Ich möchte in der Lage sein, ein Bild mit regelmäßigen, sich wiederholenden vertikalen Linien aufzunehmen und das Bild zu verarbeiten, um zu bestimmen, wie weit die Linien im Durchschnitt in Pixel voneinander entfernt sind. Ich habe Canny Edge Detection und Hough Line Detection ausprobiert und glaube nicht, dass ich die Bilder ausreichend optimieren kann, um nur die Zeilen zu erkennen, die mich interessieren.

    Also, mein Versuch ist das Abtasten von 10 Zeilen des Bildes und das Akkumulieren der Pixelwerte in Bins entsprechend der Pixelspalte. Was ergibt sich, wenn Sie eine Grafik erstellen, ist dies eine sehr schön erscheinende Wellenform. Wenn ich dazu eine DFT oder FFT durchführe, kann ich einen Peak finden, von dem ich glaube, dass er die Häufigkeit der Zeilenwiederholung sein sollte. (Dies kann eine fehlerhafte Annahme sein.)

    Meine Frage ist, was entspricht dieser Nummer? Ich denke, ich bin verwirrt mit meiner Abtastrate, weil sie in Pixel liegt. Ich denke, dass dies eine gültige Anwendung der FFT ist, aber ich falle genau hier an dem Punkt, an dem ich glaube, dass ich erfolgreich sein sollte.

    Als Beispiel. Ich habe ein Bild mit einer Breite von 300 Pixel erstellt. Es gibt 1 Pixel breite Linien, die in genau 30 Pixelintervallen gezeichnet werden. Ich fand 2 Peaks, einen bei 75 und einen bei 225 (die symmetrisch erscheinen) für die reale Komponente. (Ich glaube nicht, dass die imaginäre Komponente spielen soll ??) Ich weiß, dass die Zeilen 30 Pixel voneinander entfernt sind. Wie beziehen sich die 75 und oder 225?

    Ich bemühe mich sehr, dies zu erreichen, und ich bin dankbar für jede Hilfe, die Sie empfehlen könnten. An dieser Stelle gebe ich die Kantenerkennung auf und möchte diesen Ansatz ausprobieren.

    Vielen Dank im Voraus.

    15 May 2012
2 answers
  • Wenn sich in Ihrem Bild 10 vertikale Linien befinden, sollte eine FFT aus einer vollständigen horizontalen Scanlinie (300 Pixel) einen Größeninhalt um die Ablage 10 oder die Ablage 11 zeigen. Die Ablage 75 von 300 weist darauf hin, dass etwas vorliegt Dies geschieht etwa bei jedem 4. Pixel.

    Sie müssen sich wirklich die Größe des FFT-Ergebnisses ansehen, nicht nur die "echte" Komponente (wirklich die gerade Komponente) Ihre Rasterlinien sind nicht zentriert, der spektrale Inhalt könnte als ungerade erscheinen (daher im FFT-Ergebnis "imaginär").

    Bei einer echten Eingabe in eine FFT werden die Ergebnisblöcke angezeigt über N / 2 (in Ihrem Fall über 150) enthalten Sie nur Wiederholungen derselben Daten, mit Ausnahme von konjugierten Komplexen. Sie können sie also ignorieren.

    15 May 2012
    Leigh Riffel
  • Ich habe keine große Idee, aber um $ FFT $ visuell intuitiv zu machen, könnten Sie versuchen, $ FFT $ zu zentrieren (indem Sie jeden Wert in $ FFT $ mit $ (-1) multiplizieren) {(x + y)} $. Sobald Sie dies getan haben, wird Ihre DC-Komponente in der Mitte angezeigt, wobei der gesamte $ FFT $ symmetrisch ist.

    Ich bin mir dessen nicht ganz sicher, aber etwas sagt mir, dass der Abstand (in Pixeln) zwischen dem Peak und der Mitte dann die Periodizität anzeigen würde. Sobald Sie die Periodizität haben, können Sie leicht die Entfernung zwischen den einzelnen Objekten erreichen.

    08 June 2012
    Jav_Rockrounak