Forum: FPGA, VHDL & Co. Was ist schneller auf einem FPGA für die Bildverarbeitung: Faltung oder FFT?


von Dito (Gast)


Lesenswert?

Hallo!

Ich möchte auf einem FPGA ein Bild falten. Der Faltungskern ist 7 
Elemente hoch und 1 Element breit.

Eigentlich sollte dies keine schwere Sache sein: Das Bild wird (in 
diesem Fall über sechs) Zeilenpuffer gespeichert und - nach einer 
gewissen Latenzzeit - wird mit jedem Takt ein Pixel als Resultat 
ausgespuckt (so wie in Figur 5 gezeigt ( 
http://www.cs.qub.ac.uk/~D.Crookes/HardwareSkeletons.htm  ).

Ein wenig Rechnerche hat ergeben, dass falls so eine Faltung auf einer 
CPU berechnet werden soll, man sich recht häufig der schnellen 
Fouriertransforamtion (FFT) bedient, um Bererchnungen einzusparen.

Ich kenne mich mit der FFT leider nicht aus. Könnte mir daher jemand 
sagen, ob die FFT in Hardware noch schneller ist als der zuerst 
genannete Ansatz? Ich kanns mir eigentlich nicht vorstellen, da im 
obigen Ansatz mit bereits jedem Takt ein Ergebnis erzeugt wird und 
auch sonst nicht viel Overhead erzeugt wird.

Stimmt meine Vermutung, dass die FFT nur auf (seriellen) CPU's einen 
Geschwindigkeitsvorteil bringt (da man sich ja dort keine Zeilenpuffer 
bauen kann ;-) )?

Vielen Dank & Grüße,
Dito

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Das Dokument scheint doch shcon auf die Implementierung in FPGAs 
einzugehen... Ne FFT kann schneller sein, aber im zweifel mußt du das 
ganze nach der Berechnung auch wieder rücktransformieren.
Ne FFT läßt sich wenn die Rahmenbedingungen bekannt sind in Hardware 
sehr schön parralellisieren, aber wenn dein Verfahren shcon gut so 
funktioniert warum die Sache dann komplizierter machen als nötig?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Bei einer Länge von 7 lohnt sich eine Faltung mit FFT garantiert nicht, 
egal ob FPGA oder CPU.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.