Frage

Ich habe ein bisschen auf Anti-Aliasing zu lesen und es scheint sinnvoll zu sein, aber es ist eine Sache, die ich nicht so sicher bin. Wie genau finden Sie die maximale Frequenz eines Signals (im Zusammenhang mit der Grafik).

ich erkennen, dass es mehr als einen Fall ist, damit ich es annehmen, ist mehr als eine Antwort. Aber lassen Sie mich zuerst einen einfachen Algorithmus angeben, dass ich denke, würde maximale Frequenz darstellen, so jemand kann mir sagen, wenn ich es in die falsche Art und Weise bin Konzeptualisierung.

Lassen Sie uns sagen, dass es für eine 1 dimensional, endlich, und Graustufen-Bild (in Pixeln). Bin ich richtig in der Annahme, Sie einfach die gesamte Pixelzeile scannen konnte (im räumlichen Bereich) für ein für die minimale Schwingung und die Umkehrung dieser kleinsten Schwingung sucht die maximale Frequenz wäre?

Ex-Wert {23,26,28,22,48,49,51,49}

Frequenz: Bezieht sich auf Set {}

(1/2) = 0,5: {28,22}

(1/4) = 0,25: {22,48,49,51}

So würde 0,5 sein die maximale Frequenz?

Und was wäre der ideale Weg, um dies für eine ähnliche Pixelzeile wie die oben zu berechnen?

Und auf einer theoretischen Kenntnis, was passiert, wenn Ihr Sampling-Eingang unendlich (mehr wie die reale Welt) war? Würde ein gültiger Prozess Art wie:

Predetermine a decent interval for point sampling
Determine max frequency from point sampling
while(2*maxFrequency >  pointSamplingInterval)
{
pointSamplingInterval*=2
Redetermine maxFrequency from point sampling (with new interval)
}

Ich weiß, dass diese Algorithmen mit Ineffizienz behaftet sind, so was sind einige der bevorzugten Art und Weise? (Nicht auf der Suche nach etwas verrückt optimierte, nur wesentlich bessere Konzepte)

War es hilfreich?

Lösung

Der richtige Weg, um diesen Ansatz wird unter Verwendung eines Fourier-Transformation (in der Praxis eine FFT oder schnelle Fourier-Transformation )

Die Theorie funktioniert wie folgt: Wenn Sie eine Gruppe von Pixeln mit Farbe / Graustufen haben, dann können wir sagen, dass das Bild durch Pixel in dem „Raumbereich“ dargestellt wird; das heißt, jede einzelne Nummer des Bildes an einer bestimmten räumlichen Stelle angibt.

Aber was wir wirklich wollen, ist eine Darstellung des Bildes in dem „Frequenzbereich“. Anstatt jede einzelne Nummer jedes Pixel spezifiziert, wobei jede Zahl stellt die Amplitude einer bestimmten Frequenz in dem Bild als Ganzes.

das Werkzeug, das aus der „spatial domain“ zu der „frequency domain“ umwandelt, ist die Fourier-Transformation. Der Ausgang des FT wird eine Folge von Zahlen, den relativen Beitrag der verschiedenen Frequenzen spezifiziert sein.

Um die maximale Frequenz zu finden, führen Sie die FT, und schauen Sie sich die Amplituden, die Sie für die hohen Frequenzen erhalten - dann ist es nur eine Frage der von der höchsten Frequenz der Suche nach unten, bis Sie Ihre „Mindest signifikante Amplitude getroffen "Schwelle.

Sie können Ihre eigenen FFT-Code, aber es ist viel einfacher, in der Praxis eine abgepackte Bibliothek wie

Andere Tipps

Sie scannen kein Signal für die höchste Frequenz und dann Abtastfrequenz wählen: Sie wählen eine Abtastfrequenz, die die Dinge zu erfassen, die hoch genug ist, das Sie aufnehmen möchten, und dann Sie Filter die Signal an entfernen hohe Frequenzen. Sie werfen alles weg höher als die Hälfte der Abtastrate vor Sie es probieren.

  

Bin ich richtig in der Annahme konnte man   Scannen einfach die gesamte Pixelzeile (in   die räumliche Domäne) für eine Suche   die minimalen und die Schwingungs   Inverse jener kleinste Schwingungs   würde die maximale Frequenz sein?

Wenn Sie eine Zeile von Pixeln haben, dann wird der Sampling bereits getan. Es ist zu spät ein Anti-Aliasing-Filter anzuwenden. Die höchste Frequenz, die vorhanden sein könnte, ist die halbe Abtastfrequenz ( „1 / 2px“, glaube ich).

  

Und auf einer theoretischen Kenntnis, was   wenn Ihr Abtasteingang war unendlich   (Mehr wie die reale Welt)?

Ja, das ist, wenn Sie die Filter verwenden. Zuerst müssen Sie eine kontinuierliche Funktion, wie eine reale Bild (unendliche Abtastrate). Dann sind Sie es filtern alles über fs entfernen / 2, dann probieren Sie es bei fs (digitalisieren das Bild in Pixel). Kameras machen eigentlich keine Filterung, weshalb Sie Moiré-Muster erhalten wenn Sie fotografieren Ziegel, etc.

alt text

Wenn Sie Anti-Aliasing-Computergrafik sind, haben Sie von der idealen kontinuierlichen mathematischen Funktion zuerst denken und zu durchdenken, wie Sie es filtern würden und digitalisieren sie die Ausgabe auf dem Bildschirm zu erzeugen.

Zum Beispiel, wenn Sie wollen eine Rechteckwelle mit einem Computer zu erzeugen, kann man nicht nur naiv wechseln zwischen Maximal- und Minimalwerten. Das wäre wie ein richtiges Leben Signal Abtasten ohne erste Filterung. Die höheren Harmonischen in das Basisband einwickeln zurück und verursachen viele unechte Spitzen im Spektrum. Sie müssen Punkte erzeugen, als ob sie aus einer gefilterten kontinuierlichen mathematischen Funktion abgetastet wurden:

alt text

Ich denke, dieser Artikel von der O'Reilly-Website auch für Sie nützlich sein könnte ... http://www.onlamp.com/pub/a/python/2001/01/31/numerically.html ... da sie mit Bezug auf Frequenz Analyse von Sound-Dateien, aber sie gibt es Ihnen die Idee.

Ich denke, was Sie brauchen eine Anwendung der Fourier-Analyse ist ( http://en.wikipedia.org / wiki / Fourier_analysis ). Ich habe das studiert, aber nie benutzt es dauern, so dass es mit einer Prise Salz, aber ich glaube, wenn Sie es richtig an den Satz von Zahlen gelten Sie eine Reihe von Frequenzen erhalten, die Komponenten der Reihe sind und dann können Sie pflücken die höchste.

Ich kann Sie nicht an einem Stück Code zeigen, der dies tut, aber ich bin sicher, dass es irgendwo da draußen sein würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top