USB Kamera mitMikrokontroller auslesen?

OP #2081178
Lesenswert?
• ▲
▼
Hallo,

ich verwende zurzeit eine USB-CMOS-Kamera mit 1,3 MP die über ein Via 
Epia N800 Board mit Windows XP ausgelesen wird. Die Daten werden auf 
eine CF-Karte gespeichert.

Ich habe keinen wirklichen Überlick, was es für MC gibt und wofür die am 
Besten verwendet werden, bzw. wann man auf einen DSP oder embedded PC 
zugreifen sollte, deshalb folgede Frage:

Ist es möglich, für soetwas auch einen MC zu verwenden, um Platz und 
Geld zu sparen. Für die Kamera gibt es auch Linux treiber.
Könnte man auf einem MC ein embedded Linux laufen lassen, dass die 
Kamera ausliest und die Daten abspeichert.
Ist der USB-Host auf einem MC realisierbar und wenn ja reicht die 
Rechenleistung eines MC für das auslesen und komprimieren der Videodaten 
aus?

Über ein paar Infos wie, bzw. mit welcher hardware so ein Problem am 
Besten gelöst werden kann wär ich sehr dankbar.
Gast #2081193
Lesenswert?
• ▲
▼
Im Prinzip ja, aber um mit einer USB-Kamera fertig zu werden, empfiehlt 
es sich, einen Mikrocontroller zu nehmen, der einerseits den USB-Host 
eingebaut hat und andererseits linuxtauglich ist. Also mindestens 
AT91RM9200 (180 MHz ARM9). Da solche Mikrocontroller vielbeinig sind und 
externen Speicher benötigen, empfiehlt sich meist ein fertiges Modul.
#2081202
Lesenswert?
• ▲
▼
Johannes G. schrieb:
> Ist der USB-Host auf einem MC realisierbar und wenn ja reicht die
> Rechenleistung eines MC für das auslesen und komprimieren der Videodaten
> aus?

Im Prinzip ja klaro ist das machbar. Ist nur die Frage nach Aufwand und 
Kosten. Ohne einen FPGA wirst du wohl kaum auskommen. Dein 'Problem' ist 
zum einen dein USB-Host (Linux ist ein guter Ansatz - einen 
WebcamUSBtreiber für Mikrocontroller hat glaube ich noch niemand 
portiert), das andere 'Problem' sind deine imensen Datenmengen. 1,3 
Megapixel lässt auf 1280 x 960 Pixel schließen (interpoliert). Die Frage 
ist, ob diese Interpolation direkt in der Webcam oder am PC stattfindet. 
Hier eine kleine Rechendemo:

Rechnen wir mal mit 1280 x 960. Das sind dann 1228800 Pixel (=1,3 
Megapixel).
Jedes Pixel hat gemäß der Farbtiefe einen gewissen Speicherbedarf. Bei 8 
Bit Farbtiefe sind das pro Pixel 3 * 8 = 24 Bits pro Pixel
Dann nehme man noch eine Wiederholfrequenz von mangelhalften 15 Bildern 
pro Sekunde (fps).

Summa Summarum:

1228800 x 24 x 15 = 44.236.800

Also du muss pro Sekunde erst mal 44,2 Millionen Bits bearbeiten 
(alleine das Einlesen einer Sekunde Videostream)  - von Komprimierung 
wollen wir hier noch garnicht reden ...

Das ist schon ein böser Hammer - da benötigst du viel viel RAM.

Dann musst du noch Algorithmen haben die dir das ganze komprimieren 
(während schon wieder weitere 44,2 Mio Bits bearbeitet werden müssen) 
und dann noch auf die CF-Karte klatschen...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.