Reverse Spektrogramm A La Aphex Twin in MATLAB

8

Ich versuche, ein Bild in MATLAB in ein Audiosignal umzuwandeln, indem ich es wie ein Spektrogramm behandle, wie in Aphex Twins Lied auf < em> Windowlicker . Leider habe ich Probleme, ein Ergebnis zu bekommen.

Hier ist es, was ich gerade habe:

%Vor%

Also nehme ich Inverse Fourier-Transformationen auf Spalten meines Bildes und setze sie dann zusammen, um ein Signal zu bilden. Diese Funktion verwendet auch die Bildverarbeitungs-Toolbox für MATLAB zum Einlesen von Bildern. Das Ziel ist eine Variation von

zu haben %Vor%

Ergebnis in etwas, das wie das Originalbild aussieht. Ich würde jede Hilfe sehr schätzen! Ich lerne gerade die Signalverarbeitung, also sei nicht überrascht, wenn es ein offensichtliches Missverständnis gibt. Danke!

Bearbeiten : Danke Dave! Ich habe es funktioniert! Ich bin damit gelandet:

%Vor%

    
Scott 05.08.2009, 02:34
quelle

2 Antworten

6

Es gibt ein paar kleine Missverständnisse hier.

Ich werde die Probleme in der Reihenfolge des Auftretens, nicht der Schwere durchgehen:

1) Fehler bei der Berechnung von SpektrogrammWindow (Bild)

Der erste Array-Eintrag sollte die Komponente von 0 Hz sein, der nächste ist N Hz. Das letzte Element des Arrays sollte die Komponente -N Hz sein. Sie haben jedoch 0Hz berechnet.

Ich bin nicht sicher, Matlab-Syntax, aber wenn Sie das Bild wie Sie haben, und streichen Sie die obere und untere Zeile vor dem Anhängen an das Original, sollten Sie festgelegt werden.

Alternativ könnten Sie erwägen, das Bild nicht an sich selbst anzuhängen und nach dem Extrahieren von spectrogramWindow aus dem Bild eine Funktion anzuwenden, um es hermiteschen symmetrisch zu machen.

2) Nehmen Sie die Bauchmuskeln der IFT. Das ist nicht nötig. Mach das nicht.

Was Sie aus der iFFT herausholen, wenn die iFFT die richtige Eingabe erhält, ist völlig real.

Sie sehen komplexe Werte, da die Eingabe nicht wie oben beschrieben ACTUELL Hermiteschen Symmetrie ist. Benutze niemals Abs (). Wenn Sie schummeln müssen, extrahieren Sie den Real-Teil, der nicht Müll aus der imaginären Komponente faltet.

3) Du wirfst die zweite Hälfte des Signals weg.

Sobald Sie von der iFFT ausgegeben werden, entspricht dies dem von Ihnen gewünschten Signal. Denken Sie nicht daran in Bezug auf Frequenzen, es ist jetzt eine Audio-Zeitreihe. Behalte die ganze Sache.

So sehe ich es:

%Vor%     
Dave Gamble 05.08.2009, 03:29
quelle
1

Suche genau das gleiche Ding und fand dieses Perl-Skript. Dachte dir könnte der Link gefallen.

Ссылка

    
Nicolaj Schweitz 28.06.2010 21:24
quelle