Forum: Mikrocontroller und Digitale Elektronik Videoverarbeitung/-kompression: DSP und/oder FPGA?


von ImageProcessor (Gast)


Lesenswert?

Es geht um die Verarbeitung des Datenstroms direkt vom Bildsensor weg, 
also etwas Vorverarbeitung (Weißabgleich, Pixelkorrektur, 
Rauschreduktion, evtl. HDR) und Kompression auf handlebare Datenraten 
(<100MByte/s).
Bildsensoren haben oft beeindruckende Schittstellen >15Gb/s.
Consumer-Geräte haben dafür natürlich einen ASIC verbaut; sollen es aber 
nur wenige Stück werden, was verwendet man da am sinnvollsten?

Am fexibelsten ist sicher eine Kombination aus FPGA und DSP.
Mich würde interessieren, was da so in etwa geeignet wäre?
Die top DSPs sind alle ziemlich mit Funktionen überladen, die in der 
Anwendung nicht gebraucht werden wie Ethernet MACs, 
Kryptographie-Einheiten etc...
Dafür misse ich eine vernünftige Schnittstelle zum Sensor, die GPIOs 
sind zu langsam, andere Schittstellen meißt zu schmal (die Schittstellen 
sind oft 24bit breit). Mit dem FPGA kann man da sicher was hinhacken, 
aber da muss es doch elegantere Möglichkeiten geben?
DSPs scheinen ja ordentlich zu Buche zu schlagen und die größeren 
bewegen sich preislich locker oberhalb von top Desktop-CPUs.

Kurz: wie machen es Geräte wie Kino-Kameras oder im Bereich Machine 
Vision?

von Lars R. (lrs)


Lesenswert?

ImageProcessor schrieb:
> Consumer-Geräte haben dafür natürlich einen ASIC verbaut; sollen es aber
> nur wenige Stück werden, was verwendet man da am sinnvollsten?

FPGA. Die Schnittstellen von Bildsensoren sind individuell.

> Am fexibelsten ist sicher eine Kombination aus FPGA und DSP.
> Mich würde interessieren, was da so in etwa geeignet wäre?

Was genau sind Deine Anforderungen?

> Mit dem FPGA kann man da sicher was hinhacken,
> aber da muss es doch elegantere Möglichkeiten geben?

Hinhacken lassen. Helion Vision bietet für Lattice an. Es gibt 
Kamera-Kits für und von Xilinx und Altera. Allerdings weniger mit 
>15Gb/s.

> DSPs scheinen ja ordentlich zu Buche zu schlagen und die größeren
> bewegen sich preislich locker oberhalb von top Desktop-CPUs.

Wenn Du einerseits Bildsensoren mit Datenraten von >15Gb/s ansprichst 
und anderseits die Preisregion von top Desktop-CPUs als unpassend 
empfindest, dann verstehe ich das nicht. Welchen Bildsensor möchtest Du 
verwenden.

> Kurz: wie machen es Geräte wie Kino-Kameras oder im Bereich Machine
> Vision?

FPGA oder ASIC, wie Du schon festgestellt hast.

von ImageProcessor (Gast)


Lesenswert?

Dieser Bildsensor ist in Kameras in der 500€-Klasse (incl. Objektiv 
etc.) verbaut, kann also nicht so extrem viel kosten:
http://www.aptina.com/assets/downloadDocument.do?id=979

Auf FPGAs habe ich kaum was gefunden, das bis 1080p funktionieren würde; 
DSPs schienen mir da eher geeignet zu sein.
Allerdings müsste man da die Kameradaten erst in PCIe oder Ähnliches 
konvertieren, um sie in den DSP zu bekommen.

von Grendel (Gast)


Lesenswert?

ImageProcessor schrieb:
> Auf FPGAs habe ich kaum was gefunden, das bis 1080p funktionieren würde;

Kaum was kostenloses an IP Cores meinst Du sicher ;-)

von Jost .. (jojocp)


Lesenswert?

Hallo,

bei solchen Anwendungen ist eine Kombination aus FPGA oder ASIC und 
Prozessor nötig. Der FPGA / ASIC kümmert sich als aller erstes um das 
empfangen und richtgie mappen der empfangenen Daten. In ihm können auch 
direkt erste Bearbeitungen gemacht werden:
Korrekturen für tote Pixel
Debayering
Weißabgleich, Gamma etc.
Farbraumumwandlung

All diese Aufgaben geschehen unkomprimiert und in echtzeit. Datenraten 
von 300Mbit/s PRO LANE sind bei heutigen Bildsensoren nichts besonderes. 
Dann hast du meist noch mehrere Lanes parallel. Das packt selbst der 
beste DSP nicht.
Ein FPGA bewältigt sowas locker.

Die Kompression würde ich wahrscheinlich eher als Aufgabe für den 
Prozessor sehen.

Grüße, Jost

von Lars R. (lrs)


Lesenswert?

ImageProcessor schrieb:
> Dieser Bildsensor ist in Kameras in der 500€-Klasse (incl. Objektiv
> etc.) verbaut, kann also nicht so extrem viel kosten:
> http://www.aptina.com/assets/downloadDocument.do?id=979

Prinzipiell schon, weil der Hersteller der 500EUR-Kameras eine andere 
Stückzahl abnimmt als Du.

> Auf FPGAs habe ich kaum was gefunden, das bis 1080p funktionieren würde;
> DSPs schienen mir da eher geeignet zu sein.

Ob es einen aktuellen Xilinx-FPGA gibt, der den von Dir genannten 
4K-Sensor bedienen kann, weiß ich nicht (SLVS ?). Für 1080p gibt es 
Lösungen.

Edit: Wenn Du am Ende komprimierte Bilddaten haben möchstest, dann 
nimmst Du vielleicht doch gleich die 500EUR Consumer-Kamera und greifst 
die Daten an den Kontakten der Flashkarte ab.

von ImageProcessor (Gast)


Lesenswert?

Für 1080p60 Kompression mit H.264 finde ich für FPGAs Belegungen von > 
100k LUTs auf den neuesten Familien bei mehr oder weniger voller 
Ausnutzung der möglichen Speicherbandbreite. Dass das mit der ca. 
4-fachen Datenrate noch funktionieren soll bezweifle ich.
Und doch können immer mehr Consumer-Geräte wie Smartphones 4k-Video 
aufnehmen, d.h. die Kompression funktioniert problemlos auf einer 
"normalen" CPU.
Daher kommt die Frage, ob nicht eine Standard-CPU angemessener wäre?

von Lars R. (lrs)


Lesenswert?

Die Smartphones machen das mit der GPU. Ebenfalls die GPU nutzen 
Raspberry und Derivate über MIPI. Soweit 1080p.

Jost hat ja bereits geschrieben, dass für die (h264)-Kompression der 
FPGA vielleicht nicht die beste Wahl ist. Wenn Du aber keine andere Wahl 
hast, bleibt nur der FPGA mit der Brechstange (mehrere FPGAs parallel).

Es wäre günstig, wenn Du darlegen könntest, was Deine 
Selbstbau-Motivation ist und warum Du für 4K mit Kompression nicht 
einfach die Daten von einer gekauften Kamera (Flashinterface, 1-10GigE, 
Framegrabber usw.) abholst. Die Selbstbaulösung wird ein Vielfaches 
teurer.

von ImageProcessor (Gast)


Lesenswert?

Ok, das war sehr undeutlich ausgedrückt...
Natürlich übernimmt die Codierung ein Hardwarebeschleuniger mit am SoC, 
allerdings ist sowas ja mehr oder weniger auf jeder moderneren (PC)-CPU 
mit drauf.
Die Alternative zum dicken FPGA wäre doch, einen kleinen FPGA zu nehmen, 
der evtl. einfache Vorverarbeitung macht und ansonsten vor allem da ist 
die Daten vom Bildsensor z.B. auf PCIe zu wandeln, so dass man den rest 
auf einem gewöhnlichen PC machen könnte.

Klar ist das absolut nicht stromsparend etc., aber es scheint mir eher 
bezahlbar und machbar als die Alternative aus FPGA und evtl. DSP.

von ImageProcessor (Gast)


Lesenswert?

Das Ziel ist, die Möglichkeit zu haben, während interessanter Momente 
einige Sekunden die volle Datenmenge zwischenspeichern zu können, ohne 
dabei den kontinuierlichen Livestream zu unterbrechen; Das Video soll 
mehr oder weniger unkomprimiert (aber in geringerer Auflösung, z.B. 
1080p) live übertragen werden, gleichzeitig aber komprimiert 
weggespeichert werden.
Das ganze kommt einer Slow-Motion-Kamera mit zusätzlicher 
Liveübertragung ziemlich nahe.

von Lars R. (lrs)


Lesenswert?

Für 4K ist noch das noch nicht auf jeder CPU drauf. Dafür gibt es teure 
Kameras, die wie gesagt dennoch ein Vielfaches günstiger sind als eine 
Selbstbaulösung.

Und für 1080p kannst Du den Raspberry für 20EUR her nehmen und über 
Netzwerk h264 rausstreamen.

von Grendel (Gast)


Lesenswert?

Lars R. schrieb:
> Die Smartphones machen das mit der GPU. Ebenfalls die GPU nutzen
> Raspberry und Derivate

Umgangssprachlich sagen das zwar viele so, aber es ist natürlich nicht 
die GPU ansich (also nix OpenCL oder so), sondern ein fester dafür 
optimierter IP Core, der manchmal halt bei der GPU mit dabei ist.



4K, Selbstbau, Kostengünstig

Zwei von den Punkten kannst Du Dir aussuchen ;-)
Wobei es drauf ankommt was Du unter kostengünstig verstehst - aber wenn 
eine PC CPU für Dich teuer ist dann lass es lieber.

von Lars R. (lrs)


Lesenswert?

Ich baue keine 4K-Kameras. Aber vielleicht kaufe ich eine 10GigE ein und 
verkaufe die an den TE als Selbstbaukamera.

von ImageProcessor (Gast)


Lesenswert?

Klar, dass das Selbstbau nicht wirtschaftlich ist (wann ist er das 
schon, wenn man ehrlich ist?). Es geht viel mehr um den Weg und darum, 
am Ende die volle Kontrolle darüber zu haben. Auch wenn es dann schon 
veraltete Technik ist, wenn's mal fertig wird.
Aber wenn es so ein tolles, günstiges, voll kontrollierbares Kameramodul 
schon gibt finde ich auch eine andere Herausforderung.

von holger (Gast)


Lesenswert?

>Es geht viel mehr um den Weg

Bla, bla, bla. Rumgetrolle pur.

von Lars R. (lrs)


Lesenswert?

@ImageProcessor:
Ne, das wäre schon eine feine Sache, mach ruhig. Wir sind ja auf jede 
Deiner Fragen eingeganen. Hoffe das hilft Dir weiter. Halt uns auf dem 
Laufenden. Wenn Du's fertig hast, kauf Dir eventuell welche ab.

von Ingenieur (Gast)


Lesenswert?

Wer bietet denn solche H264 Encoder an?

von ImageProcessor (Gast)


Lesenswert?

https://www.google.de/search?q=h.264+ip+core
und du wirst regelrecht überflutet davon.

von Stephan (Gast)


Lesenswert?

Definitiv FPGA. Allerdings brauchst du dann auch ein großes FPGA mit 
viel Logik. Zum Vegleich wir haben mal für ein ähnliches Projekt ein 
FPGA verwendet, das bei einem Bestücker bei einer Abnahme von 1000 Stück 
pro Jahr gut 160 Euro gekostet hat.
Ein passendes Prototypen-Board kostet dich dann bestimmt nen 1000er, 
weil du dann ein Multilayer-Board brauchst, möglicherweise sogar HDI!

Wenn du über das Ganze nicht so bescheid weißt und das Projekt alleine 
durchziehen willst, dann kann ich dir davon nur abraten!
Du kannst mit Kosten von mindestens 1000 Euro rechnen und alleine das 
PCB-Design wird dich alleine für mehrere Monate beschäftigen und dann 
muß ja auch noch Code geschrieben werden, der dem System das Leben 
einhaucht.

Also mache es nicht!

von Grendel (Gast)


Lesenswert?

Stephan schrieb:
> Du kannst mit Kosten von mindestens 1000 Euro rechnen

Das reicht nicht mal ansatzweise wenn da wirklich H.264 @4K gemacht 
werden soll ;-)

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.