Forum: FPGA, VHDL & Co. StereoBildverarbeitung - Optical Flow


von Noob (Gast)


Lesenswert?

Guten Abend,

ich möchte ein kleines Projekt starten, habe aber mit FPGAs kaum 
Erfahrung. Daher mein Problem:

Ich plane eine 60-120fps-Echtzeit-Motion-Flow-Anwendung (3D-Scanner). 
Hierfür würde ich nun gern ein FPGA-Board nutzen. Mein Lattice 
ICEblink40LP1k ist hierfür vermutlich etwas schwachbrüstig :?. Ich 
schwanke nun zwischen 3 Platinen:

- Lattice ICE40HX8K-DRAGON-EVN
- Papilo Duo 2MB
- Terasic DE-0 Nano

Ich kann aber schwerlich die Leistungsfähigkeit abschätzen. Da man zum 
DE-0 Nano eine Tochterkarte zukaufen kann tendiere ich dazu. Jedoch 
würden mir 1,3 MP auch genügen. Der Fokus liegt auf der Geschwindigkeit.

Zudem sollte der ein oder andere Stepper angesprochen werden...

Ich bin mir darüber im klaren, dass es neben der Architektur auf mein 
konkretes Programm ankommt. Jedoch bin ich noch sehr unbedarft, und 
würde meine Anwendung dann ggf. an ein Beaglebone Black koppeln.

Welches Board würdet ihr empfehlen?

Wer mir sachdienliche Hinweise geben kann, dem ist mein ewiger Dank 
sicher ;)

von Noob (Gast)


Lesenswert?

Noob schrieb:
> Da man zum
> DE-0 Nano eine Tochterkarte zukaufen kann

Mit einer 5MP Kamera...

von Strubi (Gast)


Lesenswert?

Moin,

eine ähnlich komplexe Anwendung wurde hier mal mit einem Gigabee von 
Trenz (Spartan6 mit DDR-Memory) und einem Blackfin erschlagen. Faktisch 
ein Basisboard, wo man die beteiligten Module einfach ransteckt. Mit so 
einer Kombination aus DSP und FPGA kommt man meiner Meinung nach am 
schnellsten zu einer Demo. Alles gleich im FPGA ohne Vorkenntnisse zu 
machen, ist ziemlich illusorisch, da holen Dich gleich eine Menge 
Probleme ein.
Die aufgezählten Module oben reichen dafür zumindest was Lattice und 
Xilinx angeht, nicht aus, DE-0 kenn' ich nicht.
Die OMAP-basierte HW halte ich für Bilderfassung im Highspeed-Bereich 
nicht für geeignet (hat mit dem DMA-Handling zu tun).
Das ganze ist eine rechte Knacknuss, an der Du locker 5 Mannjahre 
verbraten kannst. (Der Kommentar kommt übrigens sehr oft bei 
ambitionierten Projektpostings :-) )

Trotzdem: Viel Erfolg,

- Strubi

von PittyJ (Gast)


Lesenswert?

Ich mache so etwas ähnliches.
Aber die Bildbearbeitung findet komplett im PC statt. Die Algorithmen 
dort zu entwickeln und dort in Bildbuffern zu arbeiten ist wesentlich 
angenehmer als mit VHDL.

von P. K. (pek)


Lesenswert?

PittyJ schrieb:
> Ich mache so etwas ähnliches.
> Aber die Bildbearbeitung findet komplett im PC statt.

Dito. Die Aufgabe des FPGAs beschränkt sich auch bei mir darauf, die HW 
(Sensor, etc.) zu steuern, die Datenflut entgegennehmen, 
zwischenspeichern und umpacken. Dann die Daten (optional) vorfiltern und 
geeignet komprimieren um sie über den vorhandenen Schlauch (USB2/3) in 
den PC zu kriegen. Alles andere ist Sache der CPU/GPU.

: Bearbeitet durch User
von Kest (Gast)


Lesenswert?

Ein DE0-nano ist aber fast für alles zu klein, hat zu wenig IOs und 5MP 
in 60 oder gar 120fps kannst Du damit gleich vergessen. Auch nur SDRAM 
Speicher ist zu langsam dafür.

Was Du brauchst ist sowas etwas wie Arrow/Terassic SoCKit, mit 
DDR3-Speicher und einer Erweiterungsmöglichkeit, wo Du die Kameras 
anschließen kannst. Das ist wohl die günstigste Variante von Altera. 
Andere Hersteller kenne ich nicht.

Im Prinzip musst Du wahrscheinlich die Daten einziehen (5MP bei 60 fps 
ist schon ordentlich, 120 fps ist auf dem Board mit dem Speicher nicht 
machbar) Und das noch in Stereo.

Nur als Richtwert: 5MP bei 8 Bit (Graustufen) x 60 fps = ca 286 MByte/s. 
2 Kameras -> 572 MBytes/s. DDR3 wird da am Anschlag sein (?). Musst Du 
die Daten also schon mal vorprozessieren: 9x9 Kernel ist wohl zu klein, 
also 15x15...

Es wird sicherlich kein "kleines Projekt" ;-) Mach mal einfach die 
Rechnung auf, dann siehst Du bald, was machbar ist und was nicht. 
Vielleicht ist fullHD ausreichend? Oder gar 720p? SVGA, VGA?

Schreib die Rechnung hier rein


Grüße
Kest

von Noob (Gast)


Lesenswert?

Vielen Dank für eure kritischen Stimmen. Ich muss gestehen, dass ich 
etwas blauäugig herangegangen bin.

Ich wollte nicht zwingend auf 5MP... der Nachtrag betraf nur die 
Tochterkarte für das DE-0 Nano.

Es war so angedacht, dass ich die einzelnen Pixel fraktioniere, und zu 
größeren Superpixeln zusammenfasse, jedoch auch in der Lage bin, die 
einzelnen Superpixel bei bedarf wieder aufzulösen. Unter diesem Aspekt 
kam ich erst auf die Idee ein FPGA zu nutzen.

Angesichts der Kosten, die mein vorgesehenes Budget sprengen, werde ich 
wohl nur die Vorverarbeitung auf einem "kleinen" FPGA-Board laufen 
lassen und erstmal auf 30fps runter gehen. Alles weitere werde ich auf 
dem Beaglebone black laufen lassen.

Ich werde mich dann langsam steigern und sehen was damit geht. 
Vielleicht klappt es ja auch bis 60fps.


Das Arrow/Terassic SoCKit sieht interessant aus. Ich werde es mir 
vormerken.


Allen beteiligten noch einmal einen recht herzlichen Dank! und 
insbesondere an Kest, der mit seiner Rechnung ein schlagkräftiges 
Argument hervorgebracht hat, das ich ganz verdrängt hatte.

von Micha (Gast)


Lesenswert?

Weiterhin kannst Du Dir mal die Arbeiten von Dan Strother anschauen, der 
partitioniert das schon ganz gut, macht aber auch keinen optical flow 
sondern semi-global block matching (was ähnlich bspw. auch in der 
Daimler Stereokamera, damals auf einem Spartan-3E sitzt, Paper dazu: 
http://www.6d-vision.com/9-literatur/gehrig_icvs09).

HTH, Micha.

von Micha (Gast)


Lesenswert?

Achso, Dan Strother Link habe ich vergessen:
http://danstrother.com/2011/01/24/fpga-stereo-vision-project/

von Noob (Gast)


Lesenswert?

Hallo Micha,

Danke für den Hinweis. Für mich war das neu.
Für mein Projekt stütze ich mich vorerst auf das Buch: 
http://www.amazon.de/Robotics-Vision-Control-Fundamental-Algorithms/dp/3642201431/ref=sr_1_5?ie=UTF8&qid=1426788175&sr=8-5&keywords=corke

von Paul B. (Gast)


Lesenswert?

Dan Strother, kannte ich noch gar nicht. Schaut ja vielversprechend aus 
- wofür die Leute doch Zeit haben ...

von K. L. (Gast)


Lesenswert?

guter Link, hat jemand noch mehr, zu dem Thema?

von Rolf S. (audiorolf)


Lesenswert?

Wir machen Stereobildverarbeitung für Industrieanwendungen. Das meiste 
läuft auf Grafikkarten, zumindest wenn die Auswertung ein wenig Zeit hat 
und nicht in Echtzeit erfolgen muss. In jüngster Zeit kommt aber immer 
mehr in FPGAs rein. Das erfordert aber Rechenpower ohne Ende, wenn es 
mit der vollen Pixeltaktgeschwindigkeit erfolgen soll. Mit Papillo ist 
da nix. Eher Stratix und Kintex.

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.