Moin,
ich muss für ein Projekt ein 1080i=720p 25fps Signal in Echtzeit
Filtern,
z.B. Kantendetektion, Hochpassfilter... Kriegt das ein FPGA hin? Welches
bräuchte ich da? Ich kann nur schwer einschätzen, wie leistungsstark der
FPGA sein muss.
EchtzeitMuss schrieb:> Ich kann nur schwer einschätzen, wie leistungsstark der> FPGA sein muss.
Und hier kann keiner hellsehen, solange du nicht mehr Infos bringst
Moin,
So ganz allgemein:
> Kriegt das ein FPGA hin?
Ja.
> Welches bräuchte ich da?
Kein ganz kleines.
> Ich kann nur schwer einschätzen, wie leistungsstark der FPGA sein muss.
Unterschaetze nicht den Aufwand, dein Signal in's FPGA zu bringen und
wieder raus. Also alles ausser Filtern.
Gruss
WK
EchtzeitMuss schrieb:> Moin,>> ich muss für ein Projekt ein 1080i=720p 25fps Signal in Echtzeit> Filtern,> z.B. Kantendetektion, Hochpassfilter... Kriegt das ein FPGA hin? Welches> bräuchte ich da? Ich kann nur schwer einschätzen, wie leistungsstark der> FPGA sein muss.
Das bekommen moderne FPGAs locker hin. Mein Tipp: Erst die Algorithmen
Entwickeln, durch Simulation verifizieren, dann das FPGA Projekt mit der
Hersteller Toolchain aufsetzen und dort kannst du dann munter die
verschiedenen FPGAs durchprobieren und schauen ob sie das Design packen.
In der Xilinx Welt werden das alle modernen Typen hinbekommen, von
Spartan 7 bis Virtex 7, haengt nur davon ab wieviele Algorithmen du hast
und wie gross die sind. 1080i @ 25fps sind weit unter 74,25 MHz
(abhaengig davon wie du das interlaced vorher prozessierst und
bufferst), das erzeugt heutzutage nur ein muedes Laecheln. ;-)
Das solltest du mit nem PC machen. Capture Card rein, und dann gängige
Libs wie OpenCV etc. nutzen.
Da du scheinbar mit nem FPGA noch nicht wirklich was gemacht hast, wirst
du kein HDMI und auch keine Filter für Bildsignale in absehbarer Zeit
hinbekommen.
Außerdem kannst du alles mit Videodateien testen, bevor du dich um HDMI
Capture kümmerst.
Der Elgato CamLink wäre perfekt dafür geeignet. Der sollte mit OpenCV
gehen.
Donni D. schrieb:> Da du scheinbar mit nem FPGA noch nicht wirklich was gemacht hast, wirst> du kein HDMI und auch keine Filter für Bildsignale in absehbarer Zeit> hinbekommen.
Ist ja nicht so dass die gaengigen FPGA Hersteller eine Klicki-Bunti
Anwendung anbieten, in der man fertige IPs einfach zusammenklicken kann.
Und selbst einfachste Filter haben bei uns schon die Praktikanten
hinbekommen. Man muss halt einfach mal anfangen und machen, dann merkt
man auch dass alles nur halb so tragisch ist.
Das mag vielleicht sein. Aber ein gesamtes System mit HDMI, Filtern,
Ausgabe etc. wird nicht mal eben aus IPs klicki bunti zusammen gesteckt.
Zumal je nachdem auch Lizenzkosten fällig werden.
Klar, wenn die Zeit da ist, leg los. Aber warum, wenn es sehr viel
einfacher, schneller und kostengünstiger am PC geht? Zumal, wenn man mit
einem FPGA noch nie was zu tun hatte, und es keine Voraussetzung ist,
einen zu nutzen.
Ganz oben steht als Anforderung FPGA. Warum es diese Forderung gibt ist
doch erstmal Wurst. Woher nimmst du allerdings an, dass sich der FPGA
einfach durch einen PC mit Processing Kette ersetzen laesst? Vielleicht
spielen noch andere Bedingungen eine Rolle, warum ein FPGA gewaehlt
wurde.
Auch weisst du noch nichts ueber den Video in und Output. Vielleicht
bekommt er die Video Daten schon parallel, vll. hat er entsprechende
Konverter Chips die HDMI nach parallel machen.
Die Frage ist: Kann ein FPGA die Beispiel Filter bereitstellen und wie
leistungsstark muss er sein?
Und die Antwort ist: Ja kann er, sogar relativ einfach und daher muss
das FPGA nichtmal sehr gross sein sondern ist eher in der unteren Klasse
zu finden. Die Groesse haengt dann letztendlich von der genauen Aufgabe
ab.
Ich sehe hier noch 0 Grund einen Systemwechsel vorzuschlagen. Lass doch
den TO einfach seine Erfahrungen machen.
Der TE fragt, ob es mit einem FPGA möglich ist. Nicht, dass es mit einem
FPGA gemacht werden muss. Wenn dem so ist, dann ja, ist es eben so. Ich
habe lediglich einen Vorschlag gemacht, wie das ganze im Handumdrehen zu
erledigen ist, halt ohne FPGA. Wenn der TE schreibt es muss ein FPGA
sein ist doch gut, ich hab lediglich eine zweite Option geäußert.
Und da der Anfangspost danach klang, dass noch wenig Erfahrung mit einem
FPGA vorhanden ist, ist ein System mit HDMI Eingang nicht der einfachste
Einstieg.
Da ich nun alles meinerseits zum Thema geäußert hab, bin ich damit erst
mal raus.
Der Knackpunkt sind die Interfaces, nicht das FPGA ansich.
Es gibt einige Boards mit denen man das machen kann.
Die Frage ist aber allgemein zu schwammig und riecht für mich nach
Trollerei.
Frei nach Hallervorden: Brauchen mehr Details.
Ingo L. schrieb:> EchtzeitMuss schrieb:>> Ich kann nur schwer einschätzen, wie leistungsstark der>> FPGA sein muss.> Und hier kann keiner hellsehen, solange du nicht mehr Infos bringst
Wie will er denn den Bildfilter bauen, wenn er nicht weiß wie so was
aussieht? Und wenn er weiß wie sowas aussieht, kann man die Elemente
zählen. Manchmal weiß ich wirklich nicht, wen Firmen an ihre Aufgaben
dranstellen. Ingenieure können das nicht sein ... denn die wissen sich
zu helfen.
Donni D. schrieb:> Das solltest du mit nem PC machen. Capture Card rein, und dann gängige> Libs wie OpenCV etc. nutzen.
Welchen DSP will man da nehmen? Wie schnell kannst du mit open CV in
Echtzeit arbeiten?
Und welche Capture Card? Die komprimieren doch das Signal, das aber wäre
doch gerade Aufgabe des FPGA, das vorher zu machen, bevor komprimiert
wird.
Kantenfilter auf MPG-Kanten ist nicht so prickelig.
Da nimmt man gar keinen DSP, sondern die CPU oder eben GPU, je nachdem
ob und wie die Filter unterstützt werden. Und ja, die Capture Card
komprimiert das ganze ein bisschen, aber bei einem 720p Signal, bzw.
generell, wirst du bei einer Datenrate von bis zu 30MBit/s keinen
Qualitätsverlust wahrnehmen. Und in Echtzeit bekommst du das mit
moderner Hardware locker hin.
Donni D. schrieb:> Da nimmt man gar keinen DSP, sondern die CPU oder eben GPU, je nachdem> ob und wie die Filter unterstützt werden.
Diese Pauschalitaet ist absoluter Unfug. Ein FPGA ist hier genau das
Mass aller Dinge (nebst spezialisierten ASICs in Bildsensoren die oft
auch einen ISP entahlten) um Video Signale in Echtzeit zu verarbeiten,
weil du nur hier das auch wirklich kannst.
Schau dir doch einfach mal den Signal Pfad in einem GPU basierten System
an. Der erste Frame wird im Speicher gebuffert, dann wendest du einen
Filter darauf an und wird vor der Ausgabe wieder gebuffert. Da hast du
schonmal 2 Frames Latenz ohne ueberhaupt etwas weltbewegendes erreicht
zu haben. Bei einem FPGA hast du das nicht. Deine Latenz ist hier
begrenzt durch das Pipelining und die liegt in der Regel im Bereich von
ein paar Pixel, respektive Zeilen wenn du Algorithmen auf vertikaler
ebene hast.
Ein Hochpassfilter ist da ein super Beispiel. Hochpassfilter die rein
horizontal arbeiten haben sogut wie keine Latenz. Wenn du dann noch die
vertikale Ebene dazu nimmst, dann musst du entsprechend Zeilen buffern
damit dir die Information aus mehreren Zeilen vorliegt.
Ein Beispiel dazu aus meiner taeglichen Praxis sind Endoskop Systeme wo
Hochpass Filter gerne eingesetzt werden um feinste Adern oder Nerven
hervorzuheben, damit der Arzt nicht ausversehen mit dem Skalpel da
reinschneidet. Hier werden bei allen grossen Herstellern FPGAs fuer das
Video Processing verwendet um die Latenz moeglichst gering zu halten.
Nichts ist ekliger als Latenz bei der Fuehrung des Endoskops, aehnlich
wie ein Keyboard Spieler der zuviel Delay zwischen Tastendruck und der
Wahrnehmunng des Tons im Ohr hat.
Ich habe garn ichts pauschalisiert, meine Antwort bezieht sich auf den
Text darüber, und da wird gefragt, welchen DSP ich einsetzen würde um
mit OpenCV etc. die Daten zu Verarbeiten. Und da ist ganz klar die
Antwort: gar keinen.
Wenn der TE 100% Echtzeit / Vorhersehbarkeit bei einer Verarbeitung
haben möchte, kann er ja den FPGA nehmen. Ich habe, wie aber auch schon
10 mal erwähnt, lediglich eine Möglichkeit aufgezeigt, wie es einfach,
schnell und kostengünstig mit dem PC funktioniert.
Wenn du im medizinischen Bereicht arbeitest, wo du die von mir
vorgestellte Möglichkeit nicht nutzen kannst, ist das ja Ok. Ich
bezweifle aber, dass der TE das hier auch benötigt. Und wie groß die
Latenz in wirklichkeit ist, wenn man es mit einem GPU basiertem
Processing macht, kann ich nicht sagen, wenn du da Infos zu hast wäre
ich sehr interessiert daran, ich bezweifle aber, sie liegt weit
unterhalb der Wahrnehmungsgrenze. Alles was ich auf Anhieb so beim
schnellen Googlen gefunden habe, zeigt eine Processingzeit von <3ms,
meist je nach Filter <1ms. Wenn einem das nicht reicht, kann man immer
noch zum FPGA greifen.
Wie gesagt, ich will das Processing mit dem FPGA in keinster weise
schlecht reden, ich nutze auch FPGAs für Breitbandige Ethernet
Processings, aber wo es geht probiere ich eher auf Software / Pc zu
setzen, weil es "einfacher", schneller und günstiger ist.
Donni D. schrieb:> Ich habe, wie aber auch schon> 10 mal erwähnt, lediglich eine Möglichkeit aufgezeigt, wie es einfach,> schnell und kostengünstig mit dem PC funktioniert.
Bei einem FPGA bist du ebenfalls schnell und kostenguenstig unterwegs.
Vor allem wenns um Stueckzahlen geht. Auch die Entwicklung ist kein
Hexenwerk, ob man sich da in die PC Programmierung einarbeitet oder in
moderne FPGA Enwicklungsmethoden macht kein Unterschied.
Donni D. schrieb:> Und wie groß die> Latenz in wirklichkeit ist, wenn man es mit einem GPU basiertem> Processing macht, kann ich nicht sagen, wenn du da Infos zu hast wäre> ich sehr interessiert daran, ich bezweifle aber, sie liegt weit> unterhalb der Wahrnehmungsgrenze. Alles was ich auf Anhieb so beim> schnellen Googlen gefunden habe, zeigt eine Processingzeit von <3ms,> meist je nach Filter <1ms. Wenn einem das nicht reicht, kann man immer> noch zum FPGA greifen.
Das haengt davon ab was du machen willst. Nimmst du z.B. die
Bildverarbeitung um die Video Daten von einem Bildsensor zu verarbeiten.
Dann hast du eine relativ grosse Verarbeitungskette (DeBayering,
Farbkorrektur, Noise Reduction, Gamma Korrektur und in der Regel noch
weitere Farbanpassungen, z.B. Saettigung, und Format Anpassungen um den
Monitor zu Speisen).
Das Problem bei einem GPU bsiertem System ist nun, dass mit jedem
weiterem Filter das ganze anfaengt nicht mehr zu funktionieren und
Frames gedroppt werden mussen. Das System skaliert einfach unglaublich
schlecht. Bei einem FPGA hast du das Problem nicht, der skaliert rein
mit seiner groesse.
Die Angabe von der Processing Time ist natuerlich so erstmal sinnlos.
Aber ja, es gibt Systeme in denen sind 3ms schon gefaehrlich. Man denke
an autonomes Fahren. Deshalb kommen hier auch FPGAs zum Einsatz und
nicht wenig. Ebenso sind die 3ms nur die Verarbeitungszeit. Dazu kommt
noch das Capturen des Eingangs und das Buffern fuer die Ausgabe. Da bist
du dann schon bei 2 Frames, macht bei 60 Hz ueber 32 ms. Mit speziellen
Capture Karten kann man auch hier optimieren, z.B. wenn man eine nimmt
die nicht komprimiert, dann kann man direkt mit dem RAW Processing
beginnen sobald die Daten da sind. Das OS mit seinem Scheduler
verhindert aber auch hier, dass das ein Echtzeit Processing ist.
Donni D. schrieb:> Wie gesagt, ich will das Processing mit dem FPGA in keinster weise> schlecht reden, ich nutze auch FPGAs für Breitbandige Ethernet> Processings, aber wo es geht probiere ich eher auf Software / Pc zu> setzen, weil es "einfacher", schneller und günstiger ist.
Passt halt in keinster Weise zu den Anforderungen des TO. Und die
Empfehlung das mit einem PC zu machen zeugt nicht gerade von
Professionalitaet. Daher sollte man wenn man in dem Bereich nicht
arbeitet sich vielleicht ein bisschen zurueckhalten und nicht erklaeren
was jemand machen soll sondern wie man es selbst machen wuerde. Ds
wuerde auch die eigene Kompetenz auf dem Gebiet klarstellen was wiederum
hilft die Qualitaet der vorgeschlagenen Loesung zu bewerten. ;-)
Tobias B. schrieb:> Auch die Entwicklung ist kein> Hexenwerk, ob man sich da in die PC Programmierung einarbeitet oder in> moderne FPGA Enwicklungsmethoden macht kein Unterschied.
Soso. Ich kann diese Einschätzung nicht teilen.
> Und die> Empfehlung das mit einem PC zu machen zeugt nicht gerade von> Professionalitaet.
Eigentlich schon. Erstens sind die Dinger billig und weit verbreitet,
zweitens weiß der TO doch noch gar nicht, welche Filterung er genau
will. Man kann erst dann optimieren, wenn die Verarbeitungskette klar
ist.
Natürlich kann ein FPGA die richtige Lösung sein. Aber möglicherweise
sitzt der auf einer Grabberkarte oder es kümmert sich doch eine GPU oder
eine CPU um die Bilddaten.
Und Echtzeitfähigkeit geht auch mit Windows. Man muß Windows in eine
eigene Task stecken, so wie es Beckhoff bei seiner SPS macht.
Duke
Duke Scarring schrieb:> Tobias B. schrieb:>> Auch die Entwicklung ist kein>> Hexenwerk, ob man sich da in die PC Programmierung einarbeitet oder in>> moderne FPGA Enwicklungsmethoden macht kein Unterschied.> Soso. Ich kann diese Einschätzung nicht teilen.
Dann hast du dich auch noch nicht wirklich damit befasst. Ich bin imemr
wiede beeindruckt was selbst Bacheloranten in relativ kurzer Zeit
hinbekommen. MAn muss sich halt mit den modernen Methoden befassen, dann
kommt man auch in kuerzester Zeit an sein Ziel.
Beispiel zum Thema:
https://shop.trenz-electronic.de/de/28871-Zybo-Z7-20-akademisch-Zynq-7000-ARM/FPGA-SoC-Plattform-SDSoC-Voucher
Dazu gibt es ein HDMI BEeispiel:
https://github.com/Digilent/Zybo-Z7-20-hdmi
Wenn man das als Startpunkt nimmt, dann bekommt selbst ein Anfaenger in
ein paar Tagen seinen ersten Video Filter zum laufen. Der Rest ist wie
bei allem auch Uebungssache. Man muss halt einfach mal furchtlos an die
Sache rangehen und FPGAs nicht als etwas Komplexes betrachten. Wenn ich
mir da ein PC System anschaue, mit all seinen HW Komponenten, nemm OS,
der Application, dann ist das doch deutlich komplizierter als etwas was
bare-metal auf nemm FPGA laeuft.
Duke Scarring schrieb:> Und Echtzeitfähigkeit geht auch mit Windows. Man muß Windows in eine> eigene Task stecken, so wie es Beckhoff bei seiner SPS macht.
Sorry, das ist aber alles andere als Echtzeit (allein Windows ist
nichtmal ansatzweise ein Echtzeit Betriebssystem). Und genau daher
widerspreche ich dem, dass man via PC an die Aufgabe rangehen sollte.
Du redest von Anforderungen des TE, der hat aber bis auf: Filter, HDMI
und 720p NICHTS gesagt. Seine Anforderung Echtzeit kann da vieles
Bedeuten, erstmal heißt es Latenz 0ms und das geht so eh nicht. Also
gehe ich erst mal davon aus, der will es nicht aufzeichnen und
Bearbeiten, sondern direkt wieder ausgeben. Und gemeldet hat er sich
seit dem Startposting auch nicht mehr. Und das die Einarbeitung in einen
FPGA genau so einfach sein soll wie für PC Software, würde ich wie Duke
Scarring auch anzweifeln. Gerade wenn es ans Timing geht kann es recht
knifflig werden. Muss nicht, aber kann. Wenn er schon Erfahrung hat mit
FPGAs kann es alles schneller gehen.
Und wieso du dauernd von 2 Frames minimale Letenz redest ist mir auch
nicht ganz klar. Capturecard Bild rein, Kopieren auf die GPU per DMA, da
setze ich mal Frech 0ms an, ok 1ms, Bearbeitung 3ms, und das Teil kann
schon in die Ausgabe.
Wie gesagt, ich kenne mich auch mit FPGAs aus und nutze sie selber, aber
solang der TE nicht seine Echtzeitfähigkeit und von Latenz <1ms redet,
bleibe ich dabei, PC ist die bessere Wahl.
Sorry, dass ist störe, aber Echtzeit bedeutet nur, dass das System
innerhalb einer vorher definierten Zeit garantiert ein Ergebnis liefert.
Da kann man die Zeit auch auf einen Tag festsetzen, wenn das System das
erfüllt ist es ein Echtzeitsystem.
Donni D. schrieb:> Du redest von Anforderungen des TE, der hat aber bis auf: Filter, HDMI> und 720p NICHTS gesagt. Seine Anforderung Echtzeit kann da vieles> Bedeuten, erstmal heißt es Latenz 0ms und das geht so eh nicht.
Genau und all diese sind mit einem FPGA easy abgedeckt. Ich seh da nicht
ansatzweise ein Problem. Auch seine Beispiel Algorithmen sind einfache
Beispiele die sich super implementieren lassen, mittels HLS sogar
einfacher und schneller als man denkt.
Und 0ms nicht, aber Pixel wird verarbeitet im naechsten Taktzyklus nach
dem Eintakten. Und das ist nicht 0 ns Latenz, aber im Bereich von ein
paar Pixel Clockzyklen, also im ns Bereich. Da darf man dann schon von
wirklicher Echtzeit sprechen, zumal ein FPGA da rein deterministisch ist
und die Latenz konstant bleibt.
Donni D. schrieb:> Und das die Einarbeitung in einen> FPGA genau so einfach sein soll wie für PC Software, würde ich wie Duke> Scarring auch anzweifeln. Gerade wenn es ans Timing geht kann es recht> knifflig werden. Muss nicht, aber kann. Wenn er schon Erfahrung hat mit> FPGAs kann es alles schneller gehen.
Das haben frueher meine Praktikanten schon hinbekommen und selbst die
Studenten wenn wir einen Versuchsaufbau bei irgendwelchen Hochschultagen
hatten. FPGA Entwicklung ist weder etwas Komplexes noch ein Hexenwerk.
Man muss halt einfach mal ran und anpacken. Hilfe gibts im Netz mehr als
genug.
Donni D. schrieb:> Und wieso du dauernd von 2 Frames minimale Letenz redest ist mir auch> nicht ganz klar. Capturecard Bild rein, Kopieren auf die GPU per DMA, da> setze ich mal Frech 0ms an, ok 1ms, Bearbeitung 3ms, und das Teil kann> schon in die Ausgabe.
Weil die Capture Karte das Bild erstmal dekomprimieren muss. Mit dem
komprimierten Bild kannst du im Processing nichts anfangen, das muss raw
vorliegen. Und falls du das Bild wieder ausgeben moechtest (dazu hat der
TO wie du schon schreibst nichts angegeben), dann muss er das Bild in
einen Framebuffer schreiben zum ausgeben. Da braucht er mindestens einen
Doublebuffer damit er keine Artefakte in der Ausgabe hat. Da kommt dann
nochmal ein Frame Latenz drauf.
Eine Uebersicht was Framegrabber fuer Latenzen haben, siehst du hier:
https://techwatch.de/testreihen/capture-card-test/
Das ist sogar im Bereich von 10 Frames aufwaerts.
Hier mal noch ein Whitepaper zu dem Thema was ich auf die Schnelle
finden konnte:
http://www.bertendsp.com/pdf/whitepaper/BWP001_GPU_vs_FPGA_Performance_Comparison_v1.0.pdfDonni D. schrieb:> Wie gesagt, ich kenne mich auch mit FPGAs aus und nutze sie selber, aber> solang der TE nicht seine Echtzeitfähigkeit und von Latenz <1ms redet,> bleibe ich dabei, PC ist die bessere Wahl.
Und das ist das Problem, es ist keineswegs die bessere Wahl. Evtl. fuer
dich weil du mit FPGAs nicht so bewandert bist und dir das nicht
zutrauen wuerdest. Aber selbst Anfaenger koennen heute schon schnell
Erfolge erzielen (vorallem im Bereich Videoverarbeitung), man muss sich
halt nur mal trauen.
Gustl B. schrieb:> Sorry, dass ist störe, aber Echtzeit bedeutet nur, dass das System> innerhalb einer vorher definierten Zeit garantiert ein Ergebnis liefert.> Da kann man die Zeit auch auf einen Tag festsetzen, wenn das System das> erfüllt ist es ein Echtzeitsystem.
Das stimmt allerdings. Und genau deshalb wuerde ich niemals auf ein
System setzen dass die Latenz schon nach unten beschraenkt (zumal bei
einem FPGA die Latenz deterministisch und kosnattn ist, das erreicht ein
GPU System allein schon durch das OS nicht). Sonst merkt man evtl. viel
zu spaet dass man aufs falsche Pferd gesetzt hat und darf erstmal nenn
Technologie Wechsel durchfuehren. Und dann wirds richtig ineffektiv. ;-)
Du kannst ja schreiben so viel du willst, von Latenzen und und und.
Ändert trotzdem nichts daran, das auch du die Anforderungen des TEs
nicht kennst. Vielleicht bist auch einfach du zu sehr auf deine FPGAs
eingefahren, weil du dich mit Software nicht auskennst? Ich hatte schon
geschrieben, dass ich auch selbst mit FPGAs arbeite, auch an komplexeren
Projekten (10G Ethernet etc.).
Scheinbar möchtest du es ja nicht verstehen, dass ich den FPGAs nicht
abgeneigt bin, aber eben auch Software hier sehr wahrscheinlich
ausreichend ist, der TE äußert sich ja nicht mehr. Du scheinst dagegen
zu glauben das Software nie zu gebrauchen ist und für alles, wo man ein
FPGA einsetzen kann, also quasi alles, auch einen nehmen sollte.
Damit bin ich nun endgültig raus, du scheinst wohl zu festgefahren in
deiner Meinung zu sein.
Tobias B. schrieb:> Und 0ms nicht, aber Pixel wird verarbeitet im naechsten Taktzyklus nach> dem Eintakten. Und das ist nicht 0 ns Latenz, aber im Bereich von ein> paar Pixel Clockzyklen, also im ns Bereich.
Was in so ziemlich allen Anwendungsfällen irrelevant ist.
Du bist die Ausnahme, nicht die Regel.
> Da darf man dann schon von wirklicher Echtzeit sprechen,> zumal ein FPGA da rein deterministisch ist> und die Latenz konstant bleibt.
Auch das ist normalerweise komplett irrelevant, solange der Jitter
unterhalb einer Framedauer bleibt.
> Das haben frueher meine Praktikanten schon hinbekommen und> selbst die Studenten wenn wir einen Versuchsaufbau bei> irgendwelchen Hochschultagen hatten.
Üblicherweise haben Studenten bei sowas aber mindestens ein Vierteljahr,
wenn nicht sogar ein Dreivierteljahr Tiefenbespaßung mit FPGAs und HDL.
> FPGA Entwicklung ist weder etwas Komplexes noch ein Hexenwerk.> Man muss halt einfach mal ran und anpacken.> Hilfe gibts im Netz mehr als genug.
Für OpenCV mit GPUs gibt es wesentlich mehr.
> Weil die Capture Karte das Bild erstmal dekomprimieren muss.
Blödsinn. HDMI schiebt in aller Regel RGB oder YUV422 raus, da muss nix
"dekomprimiert" werden (außer "jeweils zwei Pixel verrechnen"). Das ist
nicht die gleiche Hausnummer wie ein Debayer mit PDAF-Pixelkorrektur.
> Und das ist das Problem, es [PC] ist keineswegs die bessere Wahl.
Für die meisten Anwendungsfälle, wenn es um Entwicklung und nicht um
Stückzahlen geht, doch.
> Das stimmt allerdings. Und genau deshalb wuerde ich niemals auf ein> System setzen dass die Latenz schon nach unten beschraenkt
...du bezahlst also lieber im Voraus für Anforderungen, die
möglicherweise garnicht existieren. Machst du auch alle anderen
Datenverarbeitungen im FPGA, auch für den Hobbygebrauch? Weil könnte ja
sein, dass die UART- oder SD-Kommunikation im ns-Bereich exakt sein
muss... oder übertreibe ich gerade etwas?
Mit einer PC-Loesung sind durchaus Latenzen im Sub-Frame-Bereich
moeglich, es gibt eine Menge industrielle Framegrabber, die das machen,
und da wird nichts komprimiert.
Nur ist HDMI da nicht gerade Usus.
Da der Fragessteller aber keine Details zu seinen
'Echtzeitanforderungen' liefert und offenbar auch kein Interesse an
einer dahingehenden Diskussion hat, ist es wohl auch weiterhin muessig,
sich darueber zu streiten.
Eine spezifische FPGA-Loesung einzusetzen lohnt sich nur, wenn das
System embedded/ohne Linux laufen soll/muss
(Stromsparend/Sicherheitsaspekte usw.) oder eben gerade ein
Bilderfassungsgeraet ist, was HDMI/GigE ausgibt (und weniger
latenzbehaftet sein muss als z.B. eine GoPro).
Solange die klassische Frage 'wo sollen die Daten hin' nicht mal
eroertert wird, macht's auch so gar keinen Sinn, Komplexitaeten a la
ZynQ reinzubringen.
So, jetzt zu Effekten und Rechenlast:
Ich habe jetzt als Spaß mal den OpenShot Editor installiert und ein
1080p Video geladen. Darüber einen Effekt gelegt und das läuft auf
meiner CPU, 8550U noch fast flüssig. Also ohne das vorher rendern zu
lassen sondern das wird direkt berechnet. Ohne Nvidia/AMD GPU. Wenn ihr
einen Videoeditor habt der Kantenerkennung als Effekt bietet dann
probiert das einfach mal aus.
Aber auch der VLC kann Effekte. Das funktioniert wunderbar flüssig, man
kann sogar mehrere Effekte gleichzeitig verwendet nur bei zu vielen
ruckelt das Video dann. Jedenfalls glaube ich dass Kantenerkennung auf
einer aktuellen CPU oder GPU ohne Probleme läuft. Und bei 1080i/720p
wunderbar flüssig.
S. R. schrieb:> Tobias B. schrieb:>> Und 0ms nicht, aber Pixel wird verarbeitet im naechsten Taktzyklus nach>> dem Eintakten. Und das ist nicht 0 ns Latenz, aber im Bereich von ein>> paar Pixel Clockzyklen, also im ns Bereich.>> Was in so ziemlich allen Anwendungsfällen irrelevant ist.> Du bist die Ausnahme, nicht die Regel.
Dann wird es schleunigst Zeit mal in der Branche ein Praktikum zu
machen. Deine Aussage ist aber mal sowas von falsch. Kannst ja z.B. mal
bei Basler nachfragen, einfach mal bei der naechsten Messe an deren
Stand gehen. Die werden dir sicher gerne erzaehlen wo ueberall ein FPGA
eingesetzt wird.
S. R. schrieb:>> Da darf man dann schon von wirklicher Echtzeit sprechen,>> zumal ein FPGA da rein deterministisch ist>> und die Latenz konstant bleibt.>> Auch das ist normalerweise komplett irrelevant, solange der Jitter> unterhalb einer Framedauer bleibt.
Auch das ist eine Verallgemeinerung die voellig Praxis fern ist.
Endoskopie, autonomes Fahren, Broadcasting, Highspeed Imaging zur QS
(z.B. Sortieranlagen) sind ganz prominente Beispiele in denen das nicht
toleriert werden kann. Auch die Jitter Grenze von unterhalb einem Frame
ist absolut willkuerlich dahin geplappert und zeugt von keinerlei
Fachkompetenz.
S. R. schrieb:>> Das haben frueher meine Praktikanten schon hinbekommen und>> selbst die Studenten wenn wir einen Versuchsaufbau bei>> irgendwelchen Hochschultagen hatten.>> Üblicherweise haben Studenten bei sowas aber mindestens ein Vierteljahr,> wenn nicht sogar ein Dreivierteljahr Tiefenbespaßung mit FPGAs und HDL.
Und in OpenCV etc. muss man sich nicht einarbeiten? Was ist denn dein
Argument warum du glaubst dass die FPGA Entwicklung komplexer sein soll
als z.B. mit OpenCV zu arbeiten?
S. R. schrieb:>> FPGA Entwicklung ist weder etwas Komplexes noch ein Hexenwerk.>> Man muss halt einfach mal ran und anpacken.>> Hilfe gibts im Netz mehr als genug.>> Für OpenCV mit GPUs gibt es wesentlich mehr
Es gibt auch mehr Salzwasser als Suesswasser auf der Welt, trotzdem bin
ich froh dass aus meinem Wasserhahn nicht ersteres kommt. ;-) Mehr ist
keine Metrik fuer besser, wieder durchgefallen.
S. R. schrieb:> Blödsinn. HDMI schiebt in aller Regel RGB oder YUV422 raus, da muss nix> "dekomprimiert" werden (außer "jeweils zwei Pixel verrechnen"). Das ist> nicht die gleiche Hausnummer wie ein Debayer mit PDAF-Pixelkorrektur.
Genau und eine gewoehnliche Grabber Karte, z.B. mit USB Anschluss macht
dann eine Komprimierung auf das Signal und jagt es z.B. via USB in den
PC. Klar kannst du auch professionelle Grabberkarten nehmen die dir die
Daten raw praesentieren. Dann bist du aber auf keinenfall kostenguenstig
unterwegs. Und Funfact am Rande: Was steckt in diesen KArten drin? Ein
FPGA, welch Wunder.
S. R. schrieb:>> Und das ist das Problem, es [PC] ist keineswegs die bessere Wahl.>> Für die meisten Anwendungsfälle, wenn es um Entwicklung und nicht um> Stückzahlen geht, doch.
Bisher hast du nicht einen genannt und redest von den meisten. Auch hier
ist 0 Inhalt. Ja, auch ich kenne viele Anwendungen in denen ich ein PC
System bevorzugen wuerde und kann daher sehr wohl abschaetzen wann was
am besten geeignet ist. Und hier faellt die Wahl ganz klar auf den FPGA.
S. R. schrieb:>> Das stimmt allerdings. Und genau deshalb wuerde ich niemals auf ein>> System setzen dass die Latenz schon nach unten beschraenkt>> ...du bezahlst also lieber im Voraus für Anforderungen, die> möglicherweise garnicht existieren. Machst du auch alle anderen> Datenverarbeitungen im FPGA, auch für den Hobbygebrauch? Weil könnte ja> sein, dass die UART- oder SD-Kommunikation im ns-Bereich exakt sein> muss... oder übertreibe ich gerade etwas?
Du machst den gleichen Denkfehler wie Donni, weil du glaubst dass die
Entwicklung aufwendig ist. Die Beschaffungskosten sind erstmal hoeher
als beim FPGA. Ein Evalboard mit HDMI In/Out liegt bei ca. 200€. Dafuer
bezahlst du alleine die Grabberkarte.
Und um sich in die FPGA Toolchain einarbeiten geht wahrscheinlich sogar
schneller, als sich in die unzaehligen PC basierten Video
Bearbeitungsframeworks einzuarbeiten.
Dazu kommt noch dass du ein System hast mit OS, einer Treiberschicht,
dem SDK fuer die Grabberkarte und erst dann kommt eine Applikation. Und
jetzt meinst du ernsthaft dass ist weniger komplex als ein FPGA? Sorry,
dann wuerde ich ernsthaft mal anfangen ein Praktikum in der
Bildverarbeitungsbranche zu machen, man lernt nie aus. ;-)
Gustl B. schrieb:> Aber auch der VLC kann Effekte. Das funktioniert wunderbar flüssig, man> kann sogar mehrere Effekte gleichzeitig verwendet nur bei zu vielen> ruckelt das Video dann. Jedenfalls glaube ich dass Kantenerkennung auf> einer aktuellen CPU oder GPU ohne Probleme läuft. Und bei 1080i/720p> wunderbar flüssig.
Fluessig und geringe Latenz sind zwei unterschiedliche paar Schuhe. Was
hier passiert ist, dass ein paar Frame gebuffert werden um immer einen
nachschieben zu koennen damit nichts rueckelt. Je groesser der Buffer,
desto geringer die Wahrscheinlichkeit fuer einen Ruckler, jedoch
erkaufst du dir damit eine groessere Latenz.
Strubi schrieb:> Mit einer PC-Loesung sind durchaus Latenzen im Sub-Frame-Bereich> moeglich, es gibt eine Menge industrielle Framegrabber, die das machen,> und da wird nichts komprimiert.> Nur ist HDMI da nicht gerade Usus.
Jep Full ACK. Aber dann ist die Loesung auch nicht mehr Easy Peasy
sondern man muss sich mit dem SDK des Grabbers auseinandersetzen (oft
hat man da auch spezielle Grabberkarten mit einem FPGA drauf die dann
relativ easy mit der Hersteller Software programmiert werden koennen um
das Processing zu uebernehmen). Das ist dann in etwa der gleiche Aufwand
wie sich mit einer FPGA Toolchain zu befassen, wobei man evtl. noch
Gefahr laeuft als Privatanwender da nichtmal Zugriff darauf zu bekommen.
Aber beide Loesungen haben definitiv ihre Daseins Berechtigung.
Strubi schrieb:> Da der Fragessteller aber keine Details zu seinen> 'Echtzeitanforderungen' liefert und offenbar auch kein Interesse an> einer dahingehenden Diskussion hat, ist es wohl auch weiterhin muessig,> sich darueber zu streiten.
Da wird wohl auch nichts mehr kommen. Aber immerhin dient der Thread
dazu Wissen zum Thema FPGA vs CPU/GPU zu eroertern.
Strubi schrieb:> Eine spezifische FPGA-Loesung einzusetzen lohnt sich nur, wenn das> System embedded/ohne Linux laufen soll/muss> (Stromsparend/Sicherheitsaspekte usw.) oder eben gerade ein> Bilderfassungsgeraet ist, was HDMI/GigE ausgibt (und weniger> latenzbehaftet sein muss als z.B. eine GoPro).
Nicht unbedingt. Auch hier ist Medizintechnik ein gutes Beispiel. FPGA
macht die Bildverarbeitung Linux System verarbeitet die Patientendaten,
speichert Bilder und Videos, etc.
Jede Anwendung hat halt eine bestmoegliche Loesung. Und die
Argumentation das FPGA komplizierter als PC ist, ist halt leider an den
Haaren herbeigezogen. Gerade die Ganze HLS Geschichte hat die
Entwicklung von einfachen Videofilter so unfassbar einfach gemacht, dass
es kein Unterschied mehr ist ob ich da irgendwelchen C Code reinhacke
oder ein SDK von einer Grabberkarte verwende.
Man sollte einfach aufhoeren den Leuten abzusprechen dass sie Dinge
nicht hinbekommen, nur weil man selber an seiner Grenze ist. Getreu dem
Motto: "Wenn ich das kann, kann das jeder" statt "Wenn ich das nicht
kann, dann du auch nicht". ;-)
Gustl B. schrieb:> Tobias B. schrieb:>> jedoch>> erkaufst du dir damit eine groessere Latenz.>> Exakt. Da wäre es mal interessant was die Anwendung am Ende können soll.
Und wenn man das nicht weiss, waehlt man im Zweifel immer die Loesung
die einen nicht beschraenkt und die Gefahr laeuft dass ein
Technologiewechsel noetig ist (ganz klassisches Projektrisko
Management). Kuenstlich Latenz ins System Pumpen kann man am Ende immer
noch. ;-)
Tobias B. schrieb:> Und um sich in die FPGA Toolchain einarbeiten geht wahrscheinlich sogar> schneller, als sich in die unzaehligen PC basierten Video> Bearbeitungsframeworks einzuarbeiten.>> Dazu kommt noch dass du ein System hast mit OS, einer Treiberschicht,> dem SDK fuer die Grabberkarte und erst dann kommt eine Applikation. Und> jetzt meinst du ernsthaft dass ist weniger komplex als ein FPGA? Sorry,> dann wuerde ich ernsthaft mal anfangen ein Praktikum in der> Bildverarbeitungsbranche zu machen, man lernt nie aus. ;-)
So langsam glaube ich, du hast noch nie etwas mit Bildbearbeitung /
Videoprocessing am PC in Software erledigt.
In die Toolchain schneller einarbeiten, als in die am PC? Was benötigst
du für die Softwarelösung? Genau, einen Texteditor, wenn es angenehm
sein soll Atom, VSCode etc. Fertig. Du installierst dir Python und
OpenCV, übrigens in einem Command im Terminal erledigt. Und in welche
unzähligen Frameworks willst du dich einarbeiten? Hier wird NUR von
OpenCV gesprochen, dem quasi Standard. Hier mal ein paar Beispiele, wie
wenig Zeilen es braucht, Filter auf ein Bild anzuwenden, die Adaption
auf ein Video ist dann ein Witz.
https://pythonexamples.org/python-opencv-image-filter-convolution-cv2-filter2d/
Allein für das Constraint File wirst du mehr Zeilen brauchen, als du bei
der Softwarelösung insgesamt brauchst.
Ja, natürlich hat man ein System mit OS, Treibern, SDK etc. Darum
kümmert sich aber KOMPLETT die Library OpenCV. Vielleicht solltest du
mal ein Praktikum bei einer Softwarebude machen, denn dann wirst du
sehen, man lernt nie aus.
OhGott schrieb:> Ja, natürlich hat man ein System mit OS, Treibern, SDK etc. Darum> kümmert sich aber KOMPLETT die Library OpenCV. Vielleicht solltest du> mal ein Praktikum bei einer Softwarebude machen, denn dann wirst du> sehen, man lernt nie aus.
Ich behaupte auch nicht das man mit OpenCV langsam ist, sondern dass man
mit einer FPGA Loesung genauso schnell ans Ziel kommt. Hier kuemmert
sich auch das SDK um den HDMI In- und Output und den HLS Code fuer einen
Videofilter schreibst du auch in einem Texteditor und fertig. Und wenn
man mag auch direkt als HDL, ist etwas aufwendiger aber nicht dass man
gleich in ganz andere Zeitskalen vorrueckt.
Ich seh nicht was daran so schwer verstaendlich ist. Wo sind den jetzt
exakt die Knackpunkte warum das mit einem FPGA so unfassbar viel laenger
dauern soll? Die ganzen FPGA Hersteller arbeiten immer mehr und mehr
dahin, dass Rapid Prototyping zu optimieren. Und da hat sich in den
letzten Jahren eine Menge getan. Einfach mal ausprobieren und dann eine
Meinung bilden.
OhGott schrieb:> Allein für das Constraint File wirst du mehr Zeilen brauchen, als du bei> der Softwarelösung insgesamt brauchst
In der Xilinx Welt uebernimmt das Vivado z.B. komplett fuer dich sofern
der Hersteller wie z.B. beim Zybo Board ein entsprechendes Board Design
mitliefert:
https://it.mathworks.com/help/hdlcoder/examples/define-and-register-custom-board-and-reference-design-for-zynq-workflow.html#d120e20791
Du waehlst im Block Design Creator einfach aus welche Features du nutzen
willst und die Constraints werden automatisch erzeugt.
Vor 10+ Jahre waere die Umsetzung auf einem FPGA in der Tat noch
wirklich mit Arbeit verbunden gewesen. Aber mittlerweile nehmen die
Tools einem genausoviel Arbeit ab, wie es die ganzen Software basierten
Frameworks machen. Man muss sich halt man ransetzen. Ich traue das auch
einem Anfaenger zu in wenigen Tagen etwas auf die Beine zu stellen.
Aber im Allgemeinen gebe ich da allen recht, dass man mit Software
schneller ans Ziel kommt. Jedoch auf welchen Zeitskalen wird hier
diskutiert? Was ich in Software an einem Tag schaffe brauch ich mit
einem FPGA ja nicht gleich 10 Tage. Man muss sich halt modernen Methoden
bedienen und dann ist man da ebenfalls flott unterwegs.
Ich rede hier von 5 Minuten Installation und 5 Minuten Code
zusammensuchen, wohl gemerkt, für einen Anfänger mit ein wenig Erfahrung
im Developer Umfeld. Da du ja scheinbar die Fähigkeiten an deinen misst
bezüglich Einfachheit etc., kann ich dir sagen, ich schaffe es in unter
10 Minuten. Da ist wahrscheinlich beim FPGA nicht mal der Fitter durch
gelaufen.
Niemand hat gesagt, dass ein FPGA in speziellen Scenarios wie Medizin,
Automotive etc. ersetzt werden sollte. Nur, dass man eben nicht immer
direkt ein riesen FPGA rankarren sollte, wenn es die Anforderungen nicht
erwarten.
Zeig doch mal, wie du es in 30 Minuten schaffst, ein System mit HDMI
Eingang, Ausgang, Hochpassfilterung mit anpassbaren Koeffizienten etc.
hinzubasteln. Testbenches für Komponenten die nicht vom Hersteller
kommen natürlich nicht vergessen. Natürlich dann noch schnell
erweiterbar, falls andere Filter zum Einsatz kommen sollen, ist bei
Software nämlich nur fix ein Funktionsaufruf. Wenn du all das unter 30
Minuten schaffst sage ich Respekt, aber zweifle dann trotzdem an, dass
es jeder andere mit weniger Erfahrung schafft.
OhGott schrieb:> Ich rede hier von 5 Minuten Installation und 5 Minuten Code> zusammensuchen, wohl gemerkt, für einen Anfänger mit ein wenig Erfahrung> im Developer Umfeld. Da du ja scheinbar die Fähigkeiten an deinen misst> bezüglich Einfachheit etc., kann ich dir sagen, ich schaffe es in unter> 10 Minuten. Da ist wahrscheinlich beim FPGA nicht mal der Fitter durch> gelaufen.
Framegrabber Karte einbauen, Treiber installieren, evtl. noch das
passende SDK. Auch hier kommt einiges an Arbeit zusammen. Und wenn man
ein System from scratch aufzieht und ein abgeschlossenes embedded System
will kommt sogar noch die OS Installation und Konfiguration hinzu.
Auch hier wird das eine unter- und das andere ueberschaetzt.
OhGott schrieb:> Niemand hat gesagt, dass ein FPGA in speziellen Scenarios wie Medizin,> Automotive etc. ersetzt werden sollte. Nur, dass man eben nicht immer> direkt ein riesen FPGA rankarren sollte, wenn es die Anforderungen nicht> erwarten.
Und ich habe nirgens behauptet dass ueberall FPGAs eingesetzt werden
muessen. Aber das setzt ein Mindestmass an Textverstaendnis vorraus.
OhGott schrieb:> Zeig doch mal, wie du es in 30 Minuten schaffst, ein System mit HDMI> Eingang, Ausgang, Hochpassfilterung mit anpassbaren Koeffizienten etc.> hinzubasteln. Testbenches für Komponenten die nicht vom Hersteller> kommen natürlich nicht vergessen. Natürlich dann noch schnell> erweiterbar, falls andere Filter zum Einsatz kommen sollen, ist bei> Software nämlich nur fix ein Funktionsaufruf. Wenn du all das unter 30> Minuten schaffst sage ich Respekt, aber zweifle dann trotzdem an, dass> es jeder andere mit weniger Erfahrung schafft.
30 Minuten sind unmoeglich, an einem halben Tag kommt man da aber schon
richtig weit. Und du willst jetzt ernsthaft wegen den paar Stunden
Mehraufwand die bzgl. Echtzeit Verabreitung schlechtere Technologie
bevorzugen? Und wenn jemand keine Erfahrung hat, dann schafft er es auch
nicht einen OpenCV Filter in Python in 5 Minuten zum laufen zu bringen
und schon gar nicht seinen eigenen zu schreiben.
Testbenches sind dann natuerlich auch keine geschrieben, aber du
schreibst auch in 5 Minuten nicht deine Unit Tests. Und Unit Tests fuer
OpenCV sparst du dir wahrsheinlich auch komplett. von daher hinkt der
Vergleich hier gewaltig.
Durch das AXI Subsystem ist auch eine Erweiterung ueberhaupt kein
Problem. Mit dem Vorteil dass ein FPGA seine Echtzeitfaehigkeit behaelt
wenn die Rechenlast waechst. Auch hier wuerde ich also erstmal auf einen
FPGA setzen solange die Requirements nicht naeher bekannt sind um mich
nicht im Vorfeld schon in die Brennesseln zu setzen. Sobald diese naeher
spezifiziert sind und eine Softwareloesung Sinn macht, wuerde ich auch
ohne zu zoegern wechseln. Wenn diese aber unbekannt bleiben, muss man
erstmal pessimistisch an die Sache rangehen, sonst faengt man naemlich
wieder von vorne an wenn der Projektumfang waechst.
Und mehr habe ich in dieser ganzen Diskussion auch nie behauptet.
Und ich denke nicht dass ich hier irgendjemanden irgendeinen Beweis
schuldig bin. Du darfst mich aber gerne fuer einen Tagessatz buchen,
dann siehst du ja was man im Stande ist an einem Tag zu schaffen. ;-)
Achso, du brauchst also kein OS um Mit dem FPGA zu arbeiten. Treiber
scheinbar auch nicht. Sehr interessant. Testbench nur für selbst
geschriebene Module, die IPs der Hersteller sollten ja gehen. Für so
etwas simples wie Videoinput, Filter drauf und Ausgabe ist ja nicht mal
ein UnitTest erforderlich, das sind ja nur 10 Zeilen testbarer Code. Und
doch, der OpenCV Filter läuft in 5 Minuten, hab doch ein Beispiel link
gegeben. Copy and Paste und fertig.
Alles in allem hast du prima dargelegt, dass du scheinbar wenig Ahnung
von Softwareentwicklung und deren Möglichkeiten hast. Wenn du einen
halben Tag benötigst für diese simple Aufgabe und dann scheinbar nur
‚weit gekommen bist’, statt fertig, es jemand anders aber in wegen mir
30 Minuten macht, fällt mir die Wahl leicht.
Auch im Automotive Bereich wird viel in Software erledigt, kannst ja mal
bei nVidia vorbei schauen, wie deren Produkte für autonomes fahren etc.
aussehen.
OhGott schrieb:> Alles in allem hast du prima dargelegt, dass du scheinbar wenig Ahnung> von Softwareentwicklung und deren Möglichkeiten hast.
Und du wie wenig Ahnung du von Embedded Systems hast. Ich habe oben doch
extra den Kontext erlaeutert. Aber im Allgemeinen hast du ein gewaltiges
Textverstaendnis Problem. Ich meine mich zu erinnern dass es dazu auch
VHS Kurse zu dem Thema gibt, vielleicht da mal anfragen?
Tobias B. schrieb:>>> Und 0ms nicht, aber Pixel wird verarbeitet im naechsten>>> Taktzyklus nach dem Eintakten. Und das ist nicht 0 ns>>> Latenz, aber im Bereich von ein paar Pixel Clockzyklen,>>> also im ns Bereich.>>>> Was in so ziemlich allen Anwendungsfällen irrelevant ist.>> Du bist die Ausnahme, nicht die Regel.>> Dann wird es schleunigst Zeit mal in der Branche> ein Praktikum zu machen.
Bei uns liegt zwischen Sensor und dem fertigen Bild grundsätzlich eine
Latenz von 8 Frames. Im Highspeed-Modus nutzen wir eine etwas verkürzte
Pipeline und arbeiten mit 4 Frames. Das ist für uns völlig ausreichend.
Die meisten Anwendungsfälle benötigen keine maximale Latenz im
einstelligen ns-Bereich.
> S. R. schrieb:> Endoskopie, autonomes Fahren, Broadcasting, Highspeed> Imaging zur QS (z.B. Sortieranlagen) sind ganz prominente> Beispiele in denen das [Jitter] nicht toleriert werden kann.
Wir hantieren mit Videos, und (etwas weiter gefasst) auch mit
Broadcasts. Solange der Jitter unterhalb einer Framelänge bleibt, gibt
es auf der Ausgabeseite keinerlei messbare Effekte.
Vorne kommen 30-120 fps rein, hinten kommen 30-120 fps raus, die
Framerate ist auf beiden Seiten absolut stabil. Erkläre mir mal, warum
die Verarbeitung dazwischen (die Black Box) jetzt auch noch
pixeltaktgenaue Latenzen haben muss.
> Auch die Jitter Grenze von unterhalb einem Frame ist absolut> willkuerlich dahin geplappert und zeugt von keinerlei Fachkompetenz.
Nun, wahrscheinlich ist meine Fachkompetenz einfach an anderer Stelle
als deine Fachkompetenz. Ich sage ja nicht, dass du Unrecht hast -
sondern dass du ziemlich enge Scheuklappen trägst.
> Und in OpenCV etc. muss man sich nicht einarbeiten?> Was ist denn dein Argument warum du glaubst dass die FPGA> Entwicklung komplexer sein soll als z.B. mit OpenCV zu arbeiten?
Ich habe sowohl mit OpenCV als auch mit FPGAs gearbeitet, und die
letzten Jahre dann mit Kamerasystemen. Diese Erfahrungen - und auch die
Erfahrungen vieler Studenten, mit denen ich sowohl lernend als auch
lehrend zu tun hatte, sprechen dafür.
> Genau und eine gewoehnliche Grabber Karte, z.B. mit USB Anschluss> macht dann eine Komprimierung auf das Signal und jagt es z.B. via> USB in den PC.
Ich wüsste jetzt nicht, von was für komischem Unfug du da faselst.
So ziemlich jede billige Webcam kann einen YUV-Datenstrom schicken, in
der Regel ist das NV12. Unsere Lösung schiebt UYVV via MIPI-CSI in den
SoC.
Klar kannst du dich auch doof anstellen und MJPG anfordern. Dann
bekommst du einen komprimierten Datenstrom mit recht unbekannter Latenz
- aber hey, dann hast du dich doof angestellt. Habe ich mich mit meiner
Bachelorarbeit auch, bis mir das irgendwann aufgefallen ist und ich das
ordentlich gemacht habe.
> Klar kannst du auch professionelle Grabberkarten nehmen> die dir die Daten raw praesentieren.
Ich habe hier eine recht antike Microsoft-Webcam, eine etwas bessere
Logiech-Webcam, und im Büro steht ein professioneller
HDMI-auf-USB3-Konverter rum. Da kommt überall YUV raus.
> Dann bist du aber auf keinenfall kostenguenstig unterwegs.
Ab 3€ auf dem Grabbeltisch bist du dabei...
> Und Funfact am Rande: Was steckt in diesen KArten drin?> Ein FPGA, welch Wunder.
Ich bin mir ganz sicher, dass in den Webcams kein FPGA drin ist, viel zu
teuer und zu energieintensiv. Die eine Cam hat schon gute 10 Jahre auf
dem Buckel.
Im Framegrabber steckt sicherlich ein FPGA, aber der kann auch 4k30 über
USB3 und 4k60 in MJPEG in Echtzeit. Aber nur, weil da ein FPGA verbaut
ist, muss ich für meinen Anwendungsfall keinen verbauen.
Millionen Fliegen fressen Scheiße, deswegen muss das für mich nicht die
bevorzugte Nahrungsquelle sein.
> Bisher hast du nicht einen genannt und redest von den meisten.
Ich hab ein paar umgesetzt, kann aber darüber nicht reden.
Das, womit ich die letzten Jahre verbracht habe, läuft auf
Embedded-Systemen. Das sind keine PCs, aber im hier relevanten
Betrachtungswinkel unterscheiden sie sich nicht besonders.
> Und hier faellt die Wahl ganz klar auf den FPGA.
"Hier" gibt es nichtmal klare Anforderungen. :-)
> Du machst den gleichen Denkfehler wie Donni, weil du glaubst> dass die Entwicklung aufwendig ist.
Oh, das ist sie. Dein Denkfehler ist zu behaupten, dass FPGA-Entwicklung
ähnlich einfach und effizient ist wie Programmierung.
> Die Beschaffungskosten sind erstmal hoeher als beim FPGA.> Ein Evalboard mit HDMI In/Out liegt bei ca. 200€. Dafuer> bezahlst du alleine die Grabberkarte.
Aber für die entsprechenden FPGAs sind da die Lizenzkosten für
Vivado/Quartus noch nicht mit drin. Die IPs für HDMI kommen ebenfalls
nicht gratis - im Gegensatz zu OpenCV und gcc. Beide mit kommerzieller
Qualität.
> Und um sich in die FPGA Toolchain einarbeiten geht wahrscheinlich sogar> schneller, als sich in die unzaehligen PC basierten Video> Bearbeitungsframeworks einzuarbeiten.
Es reicht, sich in eineFPGA-Toolchain einzuarbeiten und es reicht,
sich in ein Bildbearbeitungsframework einzuarbeiten. Schau dich mal
auf dem Arbeitsmarkt um, was da fähigen Softwareentwicklern rumläuft und
vergleiche das mit der Anzahl an fähigen FPGA-Entwicklern.
Wenn du FPGA kannst und Software nicht - und so schätze ich dich ein -
dann bist du ein Paradebeispiel für Hammer, Nägel und Aussehen.
> Sorry, dann wuerde ich ernsthaft mal anfangen ein Praktikum in der> Bildverarbeitungsbranche zu machen, man lernt nie aus. ;-)
Du scheinst zu glauben, dass ich ein absoluter Anfänger ohne Ahnung bin.
Ist nicht so. ;-) Bin mit meinem Job auch recht zufrieden, habe bereits
in der Bildverarbeitungsbranche zu tun und weiß, dass für
unterschiedliche Anforderungen unterschiedliche Lösungen sinnvoll sind.
S. R. schrieb:> Bei uns liegt zwischen Sensor und dem fertigen Bild grundsätzlich eine> Latenz von 8 Frames. Im Highspeed-Modus nutzen wir eine etwas verkürzte> Pipeline und arbeiten mit 4 Frames. Das ist für uns völlig ausreichend.>> Die meisten Anwendungsfälle benötigen keine maximale Latenz im> einstelligen ns-Bereich.
Ihr redet so halb aneinander vorbei.
Selbst 4 Frames Latenz sind bei 30 Fps 133 ms. Das ist schon so viel
dass man damit z. B. keine Shooter mehr sinnvoll zocken kann.
Es geht hier auch nicht um den ns Bereich. Was wirklich sinnvoll ist
hängt von der Anwendung ab die wir weiterhin nicht kennen. Da bringt das
ganze Ratespiel nix.
Aber noch zu den Framegrabbern:
Die gibt es in extrem günstig
https://www.ebay.de/itm/4K-Game-Video-Capture-Card-HDMI-zu-USB2-0-1080P-HD-Recorder-Live-Video-Streaming/264798031041?
aber ob da ein FPGA drinnen ist? Man findet zwar Bilder vom Innenleben
diverser Grabber, aber da sind die ICs abgeschliffen. Allerdings liefert
so ein Grabber ganz sicher kein Rohbild. Das passt nämlich nicht durch
USB2.
S. R. schrieb:>> Sorry, dann wuerde ich ernsthaft mal anfangen ein Praktikum in der>> Bildverarbeitungsbranche zu machen, man lernt nie aus. ;-)>> Du scheinst zu glauben, dass ich ein absoluter Anfänger ohne Ahnung bin.> Ist nicht so. ;-) Bin mit meinem Job auch recht zufrieden, habe bereits> in der Bildverarbeitungsbranche zu tun und weiß, dass für> unterschiedliche Anforderungen unterschiedliche Lösungen sinnvoll sind.
Jetzt nicht mehr, aber du musst auch zugeben dass der jetzige Beitrag
deutlich mehr Expertise darstellt, als der vorherige. ;-)
S. R. schrieb:> Bei uns liegt zwischen Sensor und dem fertigen Bild grundsätzlich eine> Latenz von 8 Frames. Im Highspeed-Modus nutzen wir eine etwas verkürzte> Pipeline und arbeiten mit 4 Frames. Das ist für uns völlig ausreichend.>> Die meisten Anwendungsfälle benötigen keine maximale Latenz im> einstelligen ns-Bereich.
Das ist schon ein Haufen Holz. Und ich habe auch nie etwas vom
einstelligen ns Bereich geschrieben. Wenn man keine Daten buffert, dann
liegt man im Bereich von mehreren Pixel Clockzyklen (da ist man dann
irgendwo in den 100er ns oder sogar darunter). Sobald man Zeilenspeicher
braucht ist man im us und wenn ganze Frames gebuffert werden eben im ms
Bereich. Dort wo es auf Hand / Auge Koordination ankommt hat man haeufig
die Anforderung dass man unterhalb 2 Frames bleiben muss. Z.B. in der
Medizintechnik moechte man das weitestgehend druecken, einfach um dem
Arzt das Gefuehl zu geben dass sich ein digitales Endoskop wie ein
optisches "anfuehlt". Aehnlich dem Beispiel das ich mit dem Keyboarder
gegeben habe. Deine 4 Frames sind hier schon 64 ms, da faengt es schon
an eklig zu werden und 8 Frames mit den 128 ms sind in keinster Weise
mehr akzeptabel (jeweils bei 60 Hz wohlgemerkt, darunter wirds
entsprechend schlimmer).
Auch dort wo schnell auf den Bildinhalt reagiert werden muss, z.B.
Kollisionsdetektion, kann ich mir nicht vorstellen dass 8 Frames
akzeptabel sind. Ein Auto das mit 30 m/s = 108 km/h unterwegs ist, legt
in 128 ms eine Strecke von 3.6m zurueck. Das ist ein Haufen Holz wenns
darum geht den Fussgaenger ueber den Haufen zu fahren oder nicht.
S. R. schrieb:> Nun, wahrscheinlich ist meine Fachkompetenz einfach an anderer Stelle> als deine Fachkompetenz. Ich sage ja nicht, dass du Unrecht hast -> sondern dass du ziemlich enge Scheuklappen trägst.
Das hat nichts mit Scheuklappen zu tun. Der TO fragt danach ob ein FPGA
geeignet ist. Ja das ist er und zwar richtig gut. Ohne weitere Infos
nehme ich erstmal an dass er erstmal harte Echtzeit Bedingungen hat und
ich impliziere durch die Frage nach dem FPGA dass er ein Embedded System
moechte (sonst haette er nicht nach nemm FPGA gefragt sondern wohl
gleich wie er mi den Daten in den PC kommt, soviel Verstand traue ich
jemanden zu der hier fragt).
Und ich finde es immer wieder verwerflich wenn Leute eine klare Frage
stellen (in diesem Fall schafft das ein FPGA und welche Leistungsklasse
braucht er) immer wieder der Einwand kommt es anderst zu machen, obwohl
die Aufgabe nicht bekannt ist. Es wird doch einen Grund geben warum er
nach FPGA fragt, ich behaupte das ist eine gute Idee und in dem ganzen
Topic hab ich eingeworfen dass das auch kein Aufwand ist und er da ein
Lebenswerk vor sich hat. Nicht mehr und nicht weniger.
Wenn beim Requirements Engineering erstmal keine Fakten vorhanden sind,
dann geht man eben vom schlimmsten aus, zumal in diesem Fall ein FPGA
nicht ansatzweise so schlimm ist wie dargestellt. Kantendetektion udn
Hochpassfilter sind 2 hervorragende Beispiele die sich im FPGA
implementieren lassen. Da braucht selbst ein Anfaenger nicht davor
zurueck zuschrecken.
S. R. schrieb:>> Du machst den gleichen Denkfehler wie Donni, weil du glaubst>> dass die Entwicklung aufwendig ist.>> Oh, das ist sie. Dein Denkfehler ist zu behaupten, dass FPGA-Entwicklung> ähnlich einfach und effizient ist wie Programmierung.
Naja du beschreibst halt immer noch nicht wo da irgendwelche potentielle
Huerden sein sollen. Das ist halt auch wieder nur inhaltloses Geblubber
und zeugt nicht davon, dass du viel Erfahrung in der FPGA Entwicklung
hast (zumindest nicht in der modernen).
S. R. schrieb:>> Und Funfact am Rande: Was steckt in diesen KArten drin?>> Ein FPGA, welch Wunder.>> Ich bin mir ganz sicher, dass in den Webcams kein FPGA drin ist, viel zu> teuer und zu energieintensiv. Die eine Cam hat schon gute 10 Jahre auf> dem Buckel.
Wuesste nicht wo ich das behauptet habe, eine Webcam ist halt auch keine
HDMI Grabberkarte. ;-)
S. R. schrieb:>> Die Beschaffungskosten sind erstmal hoeher als beim FPGA.>> Ein Evalboard mit HDMI In/Out liegt bei ca. 200€. Dafuer>> bezahlst du alleine die Grabberkarte.>> Aber für die entsprechenden FPGAs sind da die Lizenzkosten für> Vivado/Quartus noch nicht mit drin. Die IPs für HDMI kommen ebenfalls> nicht gratis - im Gegensatz zu OpenCV und gcc. Beide mit kommerzieller> Qualität.
Lizenzkosten fallen fuer das obige Board keine an und die IPs kann er 4
Stunden frei nutzen bevor sie Offline gehen. Danach muss er das Board
resetten. Wenn er das ganze verkommerzialisiert dann kann er auch das
bisschen Kleingeld fuer die IPs berappen.
S. R. schrieb:>> Und um sich in die FPGA Toolchain einarbeiten geht wahrscheinlich sogar>> schneller, als sich in die unzaehligen PC basierten Video>> Bearbeitungsframeworks einzuarbeiten.>> Es reicht, sich in eine FPGA-Toolchain einzuarbeiten und es reicht,> sich in ein Bildbearbeitungsframework einzuarbeiten. Schau dich mal> auf dem Arbeitsmarkt um, was da fähigen Softwareentwicklern rumläuft und> vergleiche das mit der Anzahl an fähigen FPGA-Entwicklern.>> Wenn du FPGA kannst und Software nicht - und so schätze ich dich ein -> dann bist du ein Paradebeispiel für Hammer, Nägel und Aussehen.
Ich mache sowohl das eine, als auch das andere, daher kann ich das auch
ganz gut miteinander vergleichen. Und ich behaupte auch nicht dass man
mit einem FPGA schneller unterwegs ist, jedoch sind die Zeitskalen nicht
so dramatisch weit auseinander wie hier gemacht wird. Und wenn das ganze
in ein Embedded System verpackt wird, dann holt der FPGA auch noch
deutlich auf, weil der ganze OS Spass mit Yocto oder Buildroot
wegfaellt. Bis da ein System mal durchkonfiguriert ist und gebaut, geht
auch einige Zeit ins Land. Nicht zu vergessen der Wartungsaufwand den du
dir einfaengst weil du ein viel komplexeres System hast (kannst ja mal
ein Schichtenmodell fuer beide Varianten aufstellen).
Ich bevorzuge halt in allen Bereichen moderne Loesungen und moderne
Loesungen gehen halt immer mehr in Richtung rapid Prototyping und da hat
die FPGA Welt in den letzten paar wenigen Jahren extremst aufgeholt. Da
muss man sich halt mal rantrauen, dann erkennt man auch das Potenzial.
Gustl B. schrieb:> Selbst 4 Frames Latenz sind bei 30 Fps 133 ms. Das ist schon so viel> dass man damit z. B. keine Shooter mehr sinnvoll zocken kann.
Immerhin gehen in dem Bereich die Latenzen vom OS Scheduler unter. ;-)
Aber ein interessantes Beispiel mit den Spielen, jedoch in der
Diskussion nicht ganz passend, weil moderne Grafikkarten (zumindest die
fuer die Spieler) halt aufs Rendern optimiert sind. Da muessen dann
deutlich weniger Daten im Speicher geschoben werden was die Latenzen
auch wieder angenehm nach unten drueckt.
Gustl B. schrieb:> Aber noch zu den Framegrabbern:> Die gibt es in extrem günstig> Ebay-Artikel Nr. 264798031041?> aber ob da ein FPGA drinnen ist? Man findet zwar Bilder vom Innenleben> diverser Grabber, aber da sind die ICs abgeschliffen. Allerdings liefert> so ein Grabber ganz sicher kein Rohbild. Das passt nämlich nicht durch> USB2.
Sicher nicht, aber wie du sagst, da ist nix mit Rohbild. Da wird ein
kleiner ARM basierter Prozessor mit einem Hardware H.264/265 oder
aehnlichem Encoder drinnen stecken. Aehnlich wie ein Raspberry Pi nur
abgespeckt.
Tobias B. schrieb:> Ich behaupte auch nicht das man mit OpenCV langsam ist, sondern dass man> mit einer FPGA Loesung genauso schnell ans Ziel kommt. Hier kuemmert> sich auch das SDK um den HDMI In- und Output und den HLS Code fuer einen> Videofilter schreibst du auch in einem Texteditor und fertig. Und wenn> man mag auch direkt als HDL, ist etwas aufwendiger aber nicht dass man> gleich in ganz andere Zeitskalen vorrueckt.
Jetzt aber nicht im Ernst, oder?
Bei der so tollen HLS-Geschichte sind noch einige Dinge nicht sauber
definiert, wie Rundungen, Dithering, Overflow-Szenarion, etc. - aber aus
C-Konstrukten HDL zu machen ist auch einfach IMHO broken by design.
Das dann aber in Verbindung mit med. Diagnostik zu bringen? Sehr mutig.
Den jetzigen Status kenne ich nicht, beim letzten Regresstest, nachdem
das Vivado-Zeug in die Ecke flog, stellte sich raus: Simulation korrekt,
post-map-Verifikation: Overflow-Szenario moeglich. Ja, man hat ein
schnelles Ergebnis, aber debuggt sich dann einen Wolf bei den Details.
Als ich das letzte mal beim grossen X am Stand (EW 2018) eine
HLS-Filter-Demo gesehen habe, stellte sich auf genaue Nachfrage hinaus,
dass ein Teil auf dem ARM-Core laeuft, aus Zeitgruenden, gemeint war die
Erstellungsdauer der Demo. Bei einer anderen Bude, die ich hier mal
nicht nenne, habe ich mit ner blauen LED-Lampe in die Linse geleuchtet.
Ups, woher kommt das Schwarz?
Lasse mich gerne updaten, aber glaube es nur noch, wenn ich die
Testbench der vollen Simulation, und zwar im VHDL-Modell gesehen habe
(es gibt eine Menge kaputter Verilog-Modelle, die signed extension nicht
richtig machen).
Zum Thema SDK/Linuxkameras wurde wohl schon alles gesagt, man kriegt mit
einer gstreamer-OpenCV-Pipeline locker unter 30 ms Latenz hin. Geht auch
drunter (< 1ms mit RT-Erweiterungen wie Xenomai), aber da die Interfaces
schon gar nicht geklaert sind, sind Ende-Zu-Ende-Erwaegungen erst mal
voellig irrelevant.
Martin S. schrieb:> Bei der so tollen HLS-Geschichte sind noch einige Dinge nicht sauber> definiert, wie Rundungen, Dithering, Overflow-Szenarion, etc. - aber aus> C-Konstrukten HDL zu machen ist auch einfach IMHO broken by design.>> Das dann aber in Verbindung mit med. Diagnostik zu bringen? Sehr mutig.> Den jetzigen Status kenne ich nicht, beim letzten Regresstest, nachdem> das Vivado-Zeug in die Ecke flog, stellte sich raus: Simulation korrekt,> post-map-Verifikation: Overflow-Szenario moeglich. Ja, man hat ein> schnelles Ergebnis, aber debuggt sich dann einen Wolf bei den Details.
Manche Dinge gehen gut, manche nicht. Von Diagnostik habe ich docht
nichts geschrieben, wobei auch das Feld Diagnostik riesig ist. Einen
Hochpass Filter ist Beispielsweise ein gutes Beispiel wo HLS die
Entwicklung beschleunigen kann, die besser sichtbaren Kanten koennen der
Diagnostik dienen. Haengt jetzt davon ab was du unter Diagnostik
verstehst, die Diagnose macht immerhin noch der Arzt. Eine maschinelle
Tumorerkennung wuerde ich z.B. niemals in einem FPGA realisieren, weil
viel zu komplex. Aber hier hat man auch keine Echtzeit Bedingung und es
reicht jeden n-ten Frame zu untersuchen.
Aber ich gestehe: Das "genauso schnell" ist vll. uebertrieben, nenne wir
es "nur unwesentlich langsamer".
Ich will jetzt hier auch keine HLS Werbung machen, weil ich selbst kein
Fan davon bin. Fakt ist aber, dass man fuer verhaeltnismaessig einfache
Applikationen ein Werkzeug hat, mit denen man schnell ans Ziel kommt.
Leider oft zu Lasten der Qualitaet mit den ganzen Krankheiten die
dahinter stecken, weswegen ich das nicht unbedingt in
sicherheitskritischen Applikationen wie Medizintechnik einsetzen wuerde
(zumindest nicht in Klasse C oder auch B). Aber fuer einen Einsteiger
zum ein bisschen am ersten Videofilter rumspielen, warum nicht?
Und was anderes habe ich auch nie behauptet. Ich frag mich langsam echt
was hier immer wieder gelesen wird um es hinterher aus dem Zusammenhang
zu reissen - das obige HLS Beispiel steht im Kontext zum Vergleich mit
dem Pythin 10 Zeiler und via HLS hat man eben auch entsprechend
kompakten Code. Vielleicht sollten alle mal etwas runterfahren und am
eigenen Textverstaendnis arbeiten. Wuerde allen hier besser stehen. ;-)
Martin S. schrieb:> Zum Thema SDK/Linuxkameras wurde wohl schon alles gesagt, man kriegt mit> einer gstreamer-OpenCV-Pipeline locker unter 30 ms Latenz hin. Geht auch> drunter (< 1ms mit RT-Erweiterungen wie Xenomai), aber da die Interfaces> schon gar nicht geklaert sind, sind Ende-Zu-Ende-Erwaegungen erst mal> voellig irrelevant.
Das ist klar, muss ja auch, sonst muss man anfangen Frames zu droppen.
Unterhalb 1ms klappt dann halt auch schon nicht mehr auf der CPU weil
die der Scheduler vom OS in die Quere kommt. Deshalb gehen viele
Hersteller hin und bieten eine Grabberkarte mit FPGA an. Via Software
lassen sich relativ einfach in einer GUI Videofilter zusammenstellen,
das wird dann in den FPGA geladen und gut ist.
Wie weit man mit Xenomai kommt weiss ich nicht, ich finde da auf die
schnelle keine Benchmarks. Wenn ich mir die Latenz von den ganzen USB
Grabberkarten anschaue, dann gehen aber selbst die 30ms unter und haben
keine Relevanz mehr. ;-)
Gustl B. schrieb:> Selbst 4 Frames Latenz sind bei 30 Fps 133 ms. Das ist schon so viel> dass man damit z. B. keine Shooter mehr sinnvoll zocken kann.
Für übliche Videoverarbeitung ist das z.B. völlig ausreichend.
> Man findet zwar Bilder vom Innenleben diverser Grabber,> aber da sind die ICs abgeschliffen. Allerdings liefert> so ein Grabber ganz sicher kein Rohbild. Das passt nämlich> nicht durch USB2.
Die Dinger liefern alle ein Rohbild, nur eben mit verminderter
Auflösung bzw. verminderter Bildwiederholrate. Wie der von mir genannte
Grabber: 4k60 mit MJPG, 4k30 mit VUY420 oder 720p15 mit YUV420 über
USB2.
Ich habe noch kein UVC-Gerät gesehen, was nicht mindestens einen
YUV-Modus hatte. Müsste aber im Standard nachschlagen, ob das garantiert
ist.
Tobias B. schrieb:
> Das [8 bzw. 4 Frames] ist schon ein Haufen Holz.> Und ich habe auch nie etwas vom einstelligen ns Bereich geschrieben.
Naja, du schriebst von einzelnen Pixeltakten. Als ob es zwingend
notwendig sei, dass man die Daten live ohne Pufferung jenseits von ein
paar Flipflops filtern können müsse.
Und das muss man eben oft genug (meist) nicht.
> Dort wo es auf Hand / Auge Koordination ankommt hat man haeufig> die Anforderung dass man unterhalb 2 Frames bleiben muss.
Das ist richtig, aber eben - wie gesagt - anforderungsabhängig.
Deswegen haben moderne Fernseher einen "Game Mode" mit möglichst
geringer Latenz (meist trotzdem 2 Frames oder mehr) und einen normalen
Modus, der auch deutlich mehr haben kann.
> Aehnlich dem Beispiel das ich mit dem Keyboarder gegeben habe.> Deine 4 Frames sind hier schon 64 ms, da faengt es schon> an eklig zu werden und 8 Frames mit den 128 ms sind in keinster Weise> mehr akzeptabel
Ich weiß, aber wie gesagt, das hängt von den Anforderungen ab. Und in
der Regel sind 1-2 Frames problemlos tolerierbar - und dazu braucht es
keinen FPGA. Dass wir meist 8 Frames haben, ist historisch gewachsen.
> Auch dort wo schnell auf den Bildinhalt reagiert werden muss, z.B.> Kollisionsdetektion, kann ich mir nicht vorstellen dass 8 Frames> akzeptabel sind.
Naja, so viel schlechter als die menschliche Reaktionszeit ist das
nicht. Nur mit dem Unterschied, dass maschinelle Bildverarbeitung immer
das gesamte Bild betrachtet und nicht nur einen kleinen Fokuspunkt.
Und meines Wissens arbeiten viele Algorithmen im autonomen Fahren
ohnehin nur auf einem Subset aller Frames, in Graustufen und
zweidimensional. Ist vielleicht besser geworden, weiß ich nicht.
> Das hat nichts mit Scheuklappen zu tun. Der TO fragt danach ob> ein FPGA geeignet ist. Ja das ist er und zwar richtig gut.
...und das wiederum hängt davon ab, was er eigentlich mit den Daten
machen möchte. Und das wissen wir nicht.
> Ohne weitere Infos nehme ich erstmal an dass er erstmal harte> Echtzeit Bedingungen hat und ich impliziere durch die Frage> nach dem FPGA dass er ein Embedded System moechte
Das sind so ziemlich die extremsten Annahmen, die du treffen kannst -
und in diesem Forum so ziemlich immer falsch. Wenn Begriffe wie
"Echtzeit" auftauchen, dann ist damit ziemlich oft weder harte noch
weiche Echtzeit gemeint (und auch nicht im Sub-Millisekundenbereich).
> Es wird doch einen Grund geben warum er nach FPGA fragt,> ich behaupte das ist eine gute Idee und in dem ganzen> Topic hab ich eingeworfen dass das auch kein Aufwand ist> und er da ein Lebenswerk vor sich hat. Nicht mehr und nicht weniger.
Ich behaupte, dass er nach FPGA fragt, weil er gelesen hat, dass die
benutzt werden und wissen wollte, ob das für ihn passt. Weil das ist
hier die übliche Vorgehensweise. :-)
> Wenn beim Requirements Engineering erstmal keine Fakten vorhanden> sind, dann geht man eben vom schlimmsten aus, zumal in diesem Fall> ein FPGA nicht ansatzweise so schlimm ist wie dargestellt.
Wenn man schon ein paar Jahre damit gearbeitet hat, sind FPGAs nicht
schlimm. Wenn nicht, dann... verbringt man damit erstmal ein paar Jahre,
bis man ordentliche Ergebnisse (jenseits der Trivialfälle) bringt.
Zu HLS muss ich nichts weiter sagen, das haben andere bereits getan.
> Kantendetektion udn Hochpassfilter sind 2 hervorragende> Beispiele die sich im FPGA implementieren lassen.
Das ist richtig. Und jetzt bitte noch Objekterkennung dazu, am besten
mit TensorFlow, weil es da bereits fertige Modelle gibt.
Und schon ist dein FPGA tot.
> Naja du beschreibst halt immer noch nicht wo da> irgendwelche potentielle Huerden sein sollen.
Die FPGA-Werkzeuge (ich kenne ISE und Vivado, gehe aber davon aus, dass
sich das alles nichts nimmt) sind wesentlich komplizierter in ihrer
Bedienung als übliche Programmier-IDEs, weil der grundlegende Workflow
komplizierter ist. Hat man das einmal verstanden, nimmt sich das nicht
viel - bis dahin scheitert man an jeder Ecke.
Die verwendeten HDL-Sprachen (Verilog, VHDL) sind wesentlich
komplizierter als übliche Programmiersprachen und erfordern ein massives
Umdenken. Ohne das mal von Grund auf gelernt zu haben wird das absolut
garnix.
Die Dokumentation von FPGA-Entwicklung ist wesentlich schlechter als von
Programmierung. Einfach bedienbare SDKs und Bibliotheken, wie es sie in
der Programmierwelt zuhauf gibt (z.B. OpenCV, Python, Matlab) sind in
der FPGA-Welt entweder nicht vorhanden oder sehr schnell sehr teuer.
Und das meinte ich, als ich schrieb, dass ein Student, der ein
Bildfilter in einer Woche hingeschrieben bekommt, vorher auch drei bis
neun Monate Tiefenbespaßung mit FPGAs hatte. Denn sonst kriegt der das
nicht hin.
> Das ist halt auch wieder nur inhaltloses Geblubber> und zeugt nicht davon, dass du viel Erfahrung in der> FPGA Entwicklung hast (zumindest nicht in der modernen).
Nur weil ich nicht alles hinschreibe, weil ich nicht für Romane bezahlt
werde, ist meine Aussage also wertlos. Interessante Denkweise.
> Wuesste nicht wo ich das behauptet habe, eine Webcam> ist halt auch keine HDMI Grabberkarte. ;-)
Ich bin mir sehr sicher, dass unser HDMI-Grabber auch kein FPGA ist. Und
eine Webcam unterscheidet sich von einem HDMI-Grabber jetzt auch nicht
besonders... vor allem dann nicht, wenn aus beiden ein UVC-Anschluss
rausfällt.
> Ich mache sowohl das eine, als auch das andere, daher kann ich das> auch ganz gut miteinander vergleichen. Und ich behaupte auch nicht> dass man mit einem FPGA schneller unterwegs ist, jedoch sind die> Zeitskalen nicht so dramatisch weit auseinander wie hier gemacht wird.
Das gilt unter der Voraussetzung, dass man mit FPGAs umgehen kann. Im
Gegensatz zur normalen Programmierung ist das jedoch nicht der Fall. Die
Einstiegshürden sind deutlich höher.
> Und wenn das ganze in ein Embedded System verpackt wird, dann> holt der FPGA auch noch deutlich auf, weil der ganze OS Spass> mit Yocto oder Buildroot wegfaellt.
In der Regel kommt ein FPGA nicht alleine. Zumindest in der
Vergangenheit, in der ich mal lebte, klebte da immer ein SoC in der
Nähe, für den man ein passendes Image brauchte.
Ob ich das Yocto nun für meinen SoC mit Grabberkarte konfiguriere und
alles in OpenCV entwickle, oder ob ich das Yocto für den Xilinx Zynq
konfiguriere, um die Daten vom FPGA über Ethernet rauszuschieben, ist
doch am Ende egal. Oder implementierst du Ethernet, Webserver und
TLS-Layer auch in HDL?
> Ich bevorzuge halt in allen Bereichen moderne Loesungen und> moderne Loesungen gehen halt immer mehr in Richtung rapid> Prototyping und da hat die FPGA Welt in den letzten paar> wenigen Jahren extremst aufgeholt.
Also in meiner Erfahrung lässt sich Rapid Prototyping wesentlich
einfacher am PC erledigen... billige USB Webcam ranklemmen, die
Algorithmen in Python runterschreiben und mal schauen - während der
Grabber noch bei der Post liegt. Das kriege ich wahrscheinlich schneller
hin als Vivado zu installieren, ein FPGA-Board zu bestellen und den
ersten Frame da korrekt einzuspeisen.
> Gustl B. schrieb:>> Aber noch zu den Framegrabbern:>> Die gibt es in extrem günstig>> Ebay-Artikel Nr. 264798031041?>> aber ob da ein FPGA drinnen ist? Man findet zwar Bilder vom Innenleben>> diverser Grabber, aber da sind die ICs abgeschliffen. Allerdings liefert>> so ein Grabber ganz sicher kein Rohbild. Das passt nämlich nicht durch>> USB2.>> Sicher nicht, aber wie du sagst, da ist nix mit Rohbild. Da wird ein> kleiner ARM basierter Prozessor mit einem Hardware H.264/265 oder> aehnlichem Encoder drinnen stecken. Aehnlich wie ein Raspberry Pi nur> abgespeckt.
Das Teil ist ein stinknormales UVC-Device und spricht MJPG (ist
angegeben) und ziemlich sicher auch YUV (vermutlich YUV422 @ 720p15 oder
so). Mit H.264 ist da nix, denn damit kann man außer direktem
Livestreaming nicht viel anfangen. In der Regel will man aber
zwischendurch bearbeiten (z.B. zusätzliche Informationen einblenden),
das geht mit H.264 nicht besonders gut.
Außerdem konvertiert das Teil eingangsseitig von 4K (wahrscheinlich
4K30) auf 1080p30 runter. Das ist heutzutage alles Standard in SoCs, da
braucht man keinen FPGA für.
In billigen China-Tablets sind oft Kamerasensoren drin, die keine
Bayerdaten ausgeben, sondern YUV. Entsprechend können die ganzen
Billigchipsätze damit nativ umgehen.
S. R. schrieb:> Gustl B. schrieb:>> Selbst 4 Frames Latenz sind bei 30 Fps 133 ms. Das ist schon so viel>> dass man damit z. B. keine Shooter mehr sinnvoll zocken kann.>> Für übliche Videoverarbeitung ist das z.B. völlig ausreichend.
Was ist denn die uebliche Videoverarbeitung? Gibt es da eine Definition
was ueblich und unueblich ist?
S. R. schrieb:> Tobias B. schrieb:>> Das [8 bzw. 4 Frames] ist schon ein Haufen Holz.>> Und ich habe auch nie etwas vom einstelligen ns Bereich geschrieben.>> Naja, du schriebst von einzelnen Pixeltakten. Als ob es zwingend> notwendig sei, dass man die Daten live ohne Pufferung jenseits von ein> paar Flipflops filtern können müsse.>> Und das muss man eben oft genug (meist) nicht.
Dann kannst du das doch bestimmt zitieren wo ich das geschrieben habe?
Oder kann es sein, dass ich nur geschrieben habe, dass ein FPGA dazu in
der Lage ist und man daher "wirkliche" Echtzeitbedingungen erfuellen
kann? Es ist schon der Wahnsinn wie sehr du dir einbildest dass ich den
Software Ansatz verteufle und mir deshalb irgendwelche Worte in den Mund
legst.
S. R. schrieb:>> Das hat nichts mit Scheuklappen zu tun. Der TO fragt danach ob>> ein FPGA geeignet ist. Ja das ist er und zwar richtig gut.>> ...und das wiederum hängt davon ab, was er eigentlich mit den Daten> machen möchte. Und das wissen wir nicht.
Mit den gegebenen Anforderung ist ein FPGA ganz kalr ein Kandidat um die
Aufgabe zu loesen. HDMI, Datenrate, Echtzeit und seine Beispiel
Algorithmen. Nichts was der FPGA nicht schafft und auch nichts was
komplex/teuer zu implementieren ist. Er fragt ob FPGA geeignet ist und
das ist er.
S. R. schrieb:> Das sind so ziemlich die extremsten Annahmen, die du treffen kannst -> und in diesem Forum so ziemlich immer falsch. Wenn Begriffe wie> "Echtzeit" auftauchen, dann ist damit ziemlich oft weder harte noch> weiche Echtzeit gemeint (und auch nicht im Sub-Millisekundenbereich).
Mal wieder eine der inhaltslosen Verallgemeinerungen. Fakt ist dass ein
FPGA fast keine Einschraenkungen mit Echtzeitanforderungen hat. Die
Loesung mit dem FPGA schraenkt daher erstmal den sehr allgemeinen
Loesungsraum nicht ein und ist daher auch erstmal eine technologisch
sinnvolle Loesung. Erst durch deine Verallgemeinerungen greifen deine
Argumente und das ist wirklich schlechter Diskussionsstil.
S. R. schrieb:>> Kantendetektion udn Hochpassfilter sind 2 hervorragende>> Beispiele die sich im FPGA implementieren lassen.>> Das ist richtig. Und jetzt bitte noch Objekterkennung dazu, am besten> mit TensorFlow, weil es da bereits fertige Modelle gibt.>> Und schon ist dein FPGA tot.
Auch hier passt du wieder die Anforderungen willkuerlich an. Wenn das
die Anforderungen waeren wuerde ich zwar auch ein FPGA nehmen, aber
etwas aus der Ultrascale+ Klasse und eine Mischung aus FPGA, CPU und GPU
fahren.
Sonst behaupte ich jetzt: Und jetzt noch bitte Latenz unter 1 us und
schon ist deine Software tot. Aber das merkst du hoffentlich selbst,
dass dein Argument ein bisschen peinlich war.
S. R. schrieb:> Die FPGA-Werkzeuge (ich kenne ISE und Vivado, gehe aber davon aus, dass> sich das alles nichts nimmt) sind wesentlich komplizierter in ihrer> Bedienung als übliche Programmier-IDEs, weil der grundlegende Workflow> komplizierter ist. Hat man das einmal verstanden, nimmt sich das nicht> viel - bis dahin scheitert man an jeder Ecke.>> Die verwendeten HDL-Sprachen (Verilog, VHDL) sind wesentlich> komplizierter als übliche Programmiersprachen und erfordern ein massives> Umdenken. Ohne das mal von Grund auf gelernt zu haben wird das absolut> garnix.>> Die Dokumentation von FPGA-Entwicklung ist wesentlich schlechter als von> Programmierung. Einfach bedienbare SDKs und Bibliotheken, wie es sie in> der Programmierwelt zuhauf gibt (z.B. OpenCV, Python, Matlab) sind in> der FPGA-Welt entweder nicht vorhanden oder sehr schnell sehr teuer.>> Und das meinte ich, als ich schrieb, dass ein Student, der ein> Bildfilter in einer Woche hingeschrieben bekommt, vorher auch drei bis> neun Monate Tiefenbespaßung mit FPGAs hatte. Denn sonst kriegt der das> nicht hin.
Auch das ist ein Block an Verallgemeinerungen und persoenlichen
Erfahrungen. Warum gehst du davon aus dass der TO da auch Probleme haben
wird? Weil du es nicht hinbekommst, kann er es auch nicht?
Ich kann mich noch ziemlich genau an mein erstes FPGA Projekt erinnern.
Auslesen und auswerten von einem 3D Gyrosensor. Das war in 3 Monaten,
inkl. grafischer Darstellung in Labview und Platinen Fertigung
(Entflechten, Layouten, Aetzen, Bestuecken) abgeschlossen. Unterschaetz
mir die Studenten nicht, nur weil du selbst deine Schwierigkeiten hast.
Recht gebe ich dir aber in dem Punkt mit der Informationsmenge. Die ist
in der FPGA in der Tat deutlich spaerlicher, aber in der Qualitaet
absolut brauchbar. Muss man sich halt reinarbeiten. Deshalb jemanden
abzuraten er soll statt einem FPGA was anderes nehmen ist aus diesem
Grund voellig absurd.
S. R. schrieb:> In der Regel kommt ein FPGA nicht alleine. Zumindest in der> Vergangenheit, in der ich mal lebte, klebte da immer ein SoC in der> Nähe, für den man ein passendes Image brauchte.
Das ist auch wieder eine Verallgemeinerung die ueberhaupt nichts zur
Sache beitraegt. Sehr wohl kommen in den verschiedensten Bereichen FPGAs
alleine vor. Ist aber voellig unabhaengig von dieser Diskussion. In dem
Fall des TO ist die Frage gerade FPGA vs PC, bzw. FPGA vs SoC. Und wenn
man pro SoC argumentiert, weil das einfacher und schneller entwickelt
ist, dann muss man auch den Mehraufwand fuer die Bereitstellung des
zugrundelegenden Systems betrachten.
Habe ich schon angemerkt, dass hier unbedingt etwas mehr Kompetenz zum
Thema Textverstaendnis noetig waere?
S. R. schrieb:> Ob ich das Yocto nun für meinen SoC mit Grabberkarte konfiguriere und> alles in OpenCV entwickle, oder ob ich das Yocto für den Xilinx Zynq> konfiguriere, um die Daten vom FPGA über Ethernet rauszuschieben, ist> doch am Ende egal. Oder implementierst du Ethernet, Webserver und> TLS-Layer auch in HDL?
Auch hier, Verallgemeinerung war nicht das Thema. Selbstverstaendlich
wuerde ich das nicht in HDL machen (vll. Ethernet noch in absoluten
Ausnahmefaelle wenn man z.B. aufgrund irgendwelchen Risikomanagements
keine Software im System haben moechte um die Zulassung zu
vereinfachen). Habe ich auch nie behauptet. Irgendwie glaub ich langsam,
dass das ein seltsamer Fetisch ist.
S. R. schrieb:> Also in meiner Erfahrung lässt sich Rapid Prototyping wesentlich> einfacher am PC erledigen... billige USB Webcam ranklemmen, die> Algorithmen in Python runterschreiben und mal schauen - während der> Grabber noch bei der Post liegt. Das kriege ich wahrscheinlich schneller> hin als Vivado zu installieren, ein FPGA-Board zu bestellen und den> ersten Frame da korrekt einzuspeisen.
Aus meiner auch. Wenn ich einen Videofilter selbst entwickeln muss,
mache ich das auch erst am PC, am liebsten mit Python. Damit kann man
sich dann auch direkt Testvektoren fuer die HDL Simulation generieren.
Trotzdem bleibt die Aussage korrekt das die FPGA Industrie immer weiter
daran arbeitet die Methoden zu verbessern (oder sich neue Auszudenken)
um das Rapid Prototyping auf FPGA Basis voranzubringen. HLS und SDAccel
sind da die prominentesten Beispiele aus dem Hause Xilinx (sorry fuer
die staendige Xilinx Werbung, aber da bin ich nunmal am tiefsten drin).
S. R. schrieb:> Außerdem konvertiert das Teil eingangsseitig von 4K (wahrscheinlich> 4K30) auf 1080p30 runter. Das ist heutzutage alles Standard in SoCs, da> braucht man keinen FPGA für.
Auch hier: Hab ich nie behauptet, lern lesen. Zumal du mir zustimmst da
du selbst SoCs schreibst (nichts anderes ist ein ARM Core mit einem HW
Encoder). Und ob H.264/265 oder MJPG ist unerheblich, es wird halt
komprimiert damit man die Daten via USB 2.0 rausschaufeln kann. Am PC
kommst du zwar an jedes Pixel zur weiteren Verarbeitung ran in der
Gesamtheit hat dein Bild halt Informationen aufgrund der Komprimierung
verloren.
Tobias B. schrieb:> Und ob H.264/265 oder MJPG ist unerheblich, es wird halt> komprimiert damit man die Daten via USB 2.0 rausschaufeln kann.
Richtig, aber irrelevant. Es gibt neben USB 2.0 auch modernere
Alternativen gibt, für die das nicht mehr gilt. Zum Beispiel das
inzwischen ziemlich weit verbreitete USB 3.1 oder - weil ich damit
arbeite - MIPI-CSI.
> Am PC kommst du zwar an jedes Pixel zur weiteren Verarbeitung> ran in der Gesamtheit hat dein Bild halt Informationen aufgrund> der Komprimierung verloren.
Naja, wenn du weiterhin der Meinung bist, dass aus einem UVC-Gerät
ausschließlich verlustbehaftete komprimierte Daten rauskommen, dann will
ich dich mal in deiner Welt nicht weiter stören.
Auf den Rest deiner Ausführungen gehe ich nicht weiter ein. Das wird ein
Roman, den du dann wieder mit Nebenkriegsschauplätzen zerfaserst. Da ist
mir meine Zeit zu schade. Der TO hat eh nur getrollt.
S. R. schrieb:>> Am PC kommst du zwar an jedes Pixel zur weiteren Verarbeitung>> ran in der Gesamtheit hat dein Bild halt Informationen aufgrund>> der Komprimierung verloren.>> Naja, wenn du weiterhin der Meinung bist, dass aus einem UVC-Gerät> ausschließlich verlustbehaftete komprimierte Daten rauskommen, dann will> ich dich mal in deiner Welt nicht weiter stören.>> Auf den Rest deiner Ausführungen gehe ich nicht weiter ein. Das wird ein> Roman, den du dann wieder mit Nebenkriegsschauplätzen zerfaserst. Da ist> mir meine Zeit zu schade. Der TO hat eh nur getrollt.
Auch hier wieder, du hast wirklich ein Problem mit Textverstaendnis. Das
war im Zusammenhang mit dem USB 2.0 Geraet. Wenn du mir erklaerst wie
man ein 1080p@30 Hz Video ueber USB 2.0 schaufeln kannst ohne
Komprimierung, waere das sehr spannend zu Erfahren. Kleine Rechenhilfe:
1920x1080x30Hzx24bit = ca. 1.5 Gb/s. Das sind 3x soviele Daten wie die
USB 2.0 Spezifikation vorsieht.
So langsam muss es doch auch dir mal peinlich sein? Les doch einfach ein
zweites mal bevor du schreibst. ;-)
Offensichtlich behauptest du dass aus einem UVC Geraet keine
verlustbehafteten Daten rauskommen. Dann kannst dua uch erklaeren wie du
ein 1080p bei 30Hz ueber USB 2.0 uebertraegst.
Oder musst du etwa zugeben, dass du mir falsche Worte in den Mund gelegt
hast? Ala
S. R. schrieb:> Naja, wenn du weiterhin der Meinung bist, dass aus einem UVC-Gerät> ausschließlich verlustbehaftete komprimierte Daten rauskommen, dann will> ich dich mal in deiner Welt nicht weiter stören.
???
Bloed, nich?
Ist aber auch nicht weiter schlimm. Jetzt faellt mir auch endlich wieder
ein woher ich dein Nutzername kenne. Und wenn man sich alte Diskussionen
von dir ansieht, sieht man immer wieder das selbe Muster, nahe an der
Grenze zum Getrolle. Eigentlich schade, haette ich mir viel Lebenszeit
ersparen koennen. :-(
Tobias B. schrieb:> Offensichtlich behauptest du dass aus einem UVC Geraet keine> verlustbehafteten Daten rauskommen.
Dein Textverständnis ist mangelhaft und dein Wissen für jemanden, der
anderen "mach mal ein Praktikum" empfiehlt, ebenfalls.
Alle mir bekannten UVC-Geräte (das sind einige) bieten sowohl MJPG als
auch YUV an. Der Treiber entscheidet. Die verfügbaren Auflösungen und
Bildwiederholraten orientieren sich an der Bandbreite.
Soll ich dir das jetzt noch Waldorfschulengerecht vortanzen?
Muss ich dir, einem Profi vom Fach, erklären, was "720p15" bedeutet?
Kennst du das Konzept "es gibt mehrere Möglichkeiten" oder "Kompromiss"?
Tobias B. schrieb:> Dann kannst dua uch erklaeren wie du> ein 1080p bei 30Hz ueber USB 2.0 uebertraegst.
Ich habe noch immer nicht behauptet, dass dies möglich sei.
Dementsprechend werde ich dir auch nicht erklären, wie etwas Unmögliches
durchgeführt wird.
S. R. schrieb:> Tobias B. schrieb:>> Dann kannst dua uch erklaeren wie du>> ein 1080p bei 30Hz ueber USB 2.0 uebertraegst.>> Ich habe noch immer nicht behauptet, dass dies möglich sei.> Dementsprechend werde ich dir auch nicht erklären, wie etwas Unmögliches> durchgeführt wird.
Ein letztes mal, dann ists mir auch egal, du wirst es eh nicht raffen.
Du legst mir Aussagen in den Mund die ich nie behauptet habe ala
S. R. schrieb:> Naja, wenn du weiterhin der Meinung bist, dass aus einem UVC-Gerät> ausschließlich verlustbehaftete komprimierte Daten rauskommen, dann will> ich dich mal in deiner Welt nicht weiter stören.
Ich drehe jetzt den Spiess um und Wende die gleiche Diskussionstaktik
bei dir an
Tobias B. schrieb:> Offensichtlich behauptest du dass aus einem UVC Geraet keine> verlustbehafteten Daten rauskommen. Dann kannst dua uch erklaeren wie du> ein 1080p bei 30Hz ueber USB 2.0 uebertraegst.
Ich weiss genauso gut wie du, dass die Frage nicht beantwortet werden
kann. Ich hoffe jedoch dass es bei dir klickt macht und die merkst was
fuer einen asozialen Diskussionstil du hast. Und ja ich nenne es bewusst
asozial, weil es nicht angehen kann, dass man sich erst fuer etwas
vereidigen muss, was man nie behauptet hat, bevor man in der
eigentlichen Diskussion fortfuehren kann.
Soviel zur Rhetorik (wobei das eigentlich keine Rhetorik sondern
Kindergarten Diskussionsnveau ist) und das war auch diesbezueglich der
letzte Beitrag von mir. Vielleicht laesst sich der Thread ja noch noch
retten. Und dazu ist es auch Wurst ob sich der TO nochmal meldet, das
Thema ist auch so interessant genug um es zu diskutieren.
Um die Diskussion nochmal mit ein paar Fakten aufzuwärmen:
Die USB Video Class-Spezifikation spezifiziert viele mögliche Formate,
schreibt aber keines zwingend vor. Was unter welchen Randbedingungen
möglich ist, entscheidet also ausschließlich das Gerät.
Eine Microsoft VX800 (USB 2.0) unterstützt beispielsweise ausschließlich
YUY2 (also unkomprimiertes YUV 4:2:2), in allen Auflösungen und
Bildwiederholraten.
Eine hier rumliegende Logitech Konferenzkamera (USB 2.0) unterstützt
sowohl MJPEG und YUY2, wobei beide Varianten sämtliche Auflösungen
unterstützen. Die maximalen Bildwiederholraten unterscheiden sich, bei
1920x1080 sind es 30fps (MJPEG) bzw. 2fps (YUY2).
Ein im Büro liegender HDMI-Framegrabber (USB 3.1) unterstützt MJPEG
(komprimiert), YUY2 (unkomprimiert YUV 4:2:2) und NV12 (unkomprimiert
YUV 4:2:0). MJPEG liefert maximal 4096x2304 bei 30 fps, NV12 maximal
3840x2160 bei ebenfalls 30 fps. Für YUY2 liegt die maximale Auflösung
bei 3840x2160 und jeweils geringeren Bildwiederholraten verglichen mit
NV12. (Consumer)4K-Video ist damit also problemlos drin.
Nachtrag: An einem USB 2.0-Anschluss sind ebenfalls alle Auflösungen
verfügbar, allerdings mit massiv reduzierten Bildwiederholraten bei den
höheren Auflösungen.
Ein UVC-Gerät mit MPEG2-TS, H.264 oder VP9 (alle spezifiziert) ist mir
noch nicht untergekommen. Würden wir ohnehin nicht unterstützen können.
Schlussfolgerung: USB-Kameras lassen sich prima auch ohne
Kompressionsartefakte betreiben und sind damit für Videoverarbeitung
grundsätzlich geeignet, egal ob mit oder ohne FPGAs. Hat mich jetzt
nicht überrascht, schließlich habe ich das vor knapp einem Jahrzehnt
schonmal gemacht. Man musste dem Treiber nur sagen, dass man YUY2 haben
will.
S. R. schrieb:> Schlussfolgerung: USB-Kameras lassen sich prima auch ohne> Kompressionsartefakte betreiben und sind damit für Videoverarbeitung> grundsätzlich geeignet
Wird ja auch seit Jahren schon mit USB2.0 in der industriellen BV so
gemacht.
Gäbe auch noch den USBVision-Standard, die Latenzen sind auch da im
Bereich von Zeilen bei entsprechend designten Video-Queues und
Rolling-Shutter-Sensoren.
Habe das hier auch schon mit Kameras auf FX3-Basis von LED-Blitz bis
Monitor (ende zu ende) mit Photosensoren durchgemessen.
Damit hat hoffentlich der akademische Kindergarten jetzt auch
Sommerferien.
Ganz so einfach ist das nicht, denn er muss ja
EchtzeitMuss schrieb:> 1080i
... filtern, also bei einer vollständigen Bildverarbeitung jeweils auf
ein zuvor gespeichertes Halbbild zurückgreifen oder er hat jeweils nur
den halben Informationsgehalt zum Bearbeiten. Und bei bewegten Bildern
ist das nochmal was anderes. Erstmal müssen 2 Bilder erzeugt, dann
gematched, nach Objekten getrennt und dann zeilenweise zusammengesetzt
werden und das ganze gfs noch mit Subpixelinterpretatation, um die
Bewegung rauszubekommen.
In der Tat ginge das mit einer GPU am einfachsten, was den
Erstellungsaufwand angeht (zumindest, wenn man bei Null anfängt und
nichts parat hat). Der FPGA bleibt in jedem Fall die kosteneffektvste
Lösung, was Stückkosten angeht, weil man nur ein SRAM und einen 10,-
Euro FPGA braucht.
Jürgen S. schrieb:> Ganz so einfach ist das nicht, denn er muss ja>> 1080i> ... filtern,
Naja, der TO schrieb "1080i=720p", also gehe ich mal davon aus, dass er
damit die Bandbreite meint und nicht das exakte Format.
Ansonsten hast du natürlich vollkommen recht.
Jürgen S. schrieb:> In der Tat ginge das mit einer GPU am einfachsten, was den> Erstellungsaufwand angeht (zumindest, wenn man bei Null anfängt und> nichts parat hat). Der FPGA bleibt in jedem Fall die kosteneffektvste> Lösung, was Stückkosten angeht, weil man nur ein SRAM und einen 10,-> Euro FPGA braucht.
Je nach Algorithmus kann man vll sogar auf das Deinterlacing verzichten.
Die Kantendetektion beispielsweise waere so ein Fall bei der man evtl.
auch aus den Halbbildern brauchbare Informationen filtern kann.
Haengt natuerlich stark vom Bildinhalt der Quelle ab. Aber ein Versuch
ist es wert. :-)
Der TO meldet sich gar nicht mehr. Wie kommt das bloß? Liegt das u .U.
an der heißen Luft die hier von den üblichen Verdächtigen ausgestoßen
wird? Immerhin enthält die soviel Energie, dass man ein komplettes AKW
einsparen könnte. kwt.
Tobias B. schrieb:> Je nach Algorithmus kann man vll sogar auf das Deinterlacing verzichten.> Die Kantendetektion beispielsweise waere so ein Fall bei der man evtl.> auch aus den Halbbildern brauchbare Informationen filtern kann.
Aber in Y nur in der halben Auflösung und das ist durchaus ein Problem.
Mit einem p-Format Kanten suchen, ist allerdings auch keine
Herausforderung.
Was nett ist, sind Kanten in einem lbl-Stereobild. Das läuft ähnlich,
hat nur noch einen Freiheitsgrad mehr.
Melodram schrieb:> Der TO meldet sich gar nicht mehr. Wie kommt das bloß?
Es könnte auch daran liegen, dass der TO mal eben irgendwas in
allenmöglichen Foren raushaut und dann ÜBERALL erklärt bekommt, dass
seine Frage unvollständig ist, die Herangehensweise naiv wirkt, die
Lösung auf der Hand liegt, weil FPGAs eben genau so etwas am Besten
können (und das jedes Kind weis) und der TO dann den Schwanz einklemmt.
Es könnte auch daran liegen, dass manch einer gerne ein wenig
mitdiskutieren will und nicht mit Klarnamen postet, um sein Nichtwissen
nicht zu offenbaren und dann "melodramatische" Zwischenrufe unter
anderem nick in die Runde wirft, um seinen eingeklemmten Schwanz zu
pflegen.
Die Frage des TO klingt wie: Ich will gerne ein Radio bauen mit Empfang
und so und wüsste gerne, ob das mit Elektronik zu machen ist. Oder ich
will Bildverarbeitung mit MATLAB machen und bin nicht sicher, ob ein
3GHz PC dafür reicht oder ob es eine 5 GHz PC sein muss.
Natürlich kann man Fragen zu FPGAs stellen, wenn man etwas nicht weis,
aber:
Solche Leute, lieber "Melodramatischer", die nicht einmal in der Lage
sind, sich so einfach zu beantwortende Sachverhalte selber zu
beantworten oder wenigstens die Fragen zu googlen, die sind in keinster
Weise dafür geeignet, Elektronik, Software oder gar Bildverarbeitung zu
machen. Wer von FPGAs so gar nichts weis, der braucht auch nicht zu
glauben, dass er da irgendwass Sinnvolles zusammenbringt.
BV ist zwar kein Zauberland, aber es braucht neben Grundlagenwisse eine
gewisse Mindestintelligenz, die leider bei Vielen der
Fratzenbuch/YT-Generation nicht vorliegt. Sie sind zu einfachsten Dingen
nicht fähig, wollen aber ganz großartige Sachen machen.
Jürgen S. schrieb:> Aber in Y nur in der halben Auflösung und das ist durchaus ein Problem.> Mit einem p-Format Kanten suchen, ist allerdings auch keine> Herausforderung.
Genau, deshalb auch die Ergaenzung dass es vom Bildihalt abhaengt. Wenn
man z.B. ein fettes Schachbrett hat, dann sollte das auch auf 1080i easy
sein die Kanten zu finden. Bei feinen Strukturen wie z.B. Nervenbahnen
oder Blutaderchen eher schwierig.