Hallo community, ich habe vor einer weile angefangen mich mit microcontroller zu beschäftigen, doch bin ich nun auf ein Problem gestoßen, dass mir Schwierigkeiten bereitet. Ich habe einen Atmega328p controller (könnte auch umkaufen auf PIC oder arm) und wollte wissen wie ich mit so einem chip Bildanalysen durchführen kann (image processing)? Ersteinmal müsste ich wissen wie ich eine Kamera mit dem chip verbunden bekomme und wie diese Bilder dann gespeichert werden, oder ob sie überhaupt langfristig gespeichert werden und nicht nur im Zwischenspeicher der Kamera. Zudem stellt sich mir auch die Frage wie ich auf diese Bilder zugreifen kann und in welchem Format sie vorliegen? Eine verweis auf einen externen Link wäre mir auch ausreichen, wobei es egal ist ob dieser in englisch oder deutsch ist.
Moin, Chips, die fuer sowas vorgesehen sind, haben extra-Hardware eingebaut, also z.b. ein Kamerainterface, wie MIPI-CSI oder einen parallelen Bus, ueber den die einzelnen Pixel mit einer extra Pixelclock und evtl. noch extra Signalen wie HSYNC und VSYNC reingetaktet werden koennen. Hinter diesen Pins gibts dann einen DMA Controller, der die ganzen Bilddaten direkt ins RAM schaufeln kann und z.b. nach jedem Bild einen Interrupt ausloesen kann. In welcher Form die Pixel dann im Speicher rumliegen, kommt letztlich schon auf die angeschlossene Kamera an; manchmal kann das HW-Interface auch noch ein bisschen dran drehen, z.b. irgendwelche RGB->YUV Wandlungen mit Chromasubsampling machen. Man guckt, dass man moeglichst viel in Hardware giesst, weil Bearbeitung von grossen Pixelmengen die CPU immer ziemlich schnell ueberlastet. Der Prozessoer auf dem RasPi hat so ein Kamerainterface - weiss nicht, wieviel darueber schon in oeffentlich erhaltbaren Datenblaettern steht, aber der waere wahrscheinlich ein Einstiegspunkt. Gruss WK
Also ist das nicht möglich mit einer solchen Kamera ? (http://www.ebay.de/itm/1Pcs-OV7670-Camera-Module-640X480-Lens-CMOS-For-Arduino-VGA-SCCB-New-QR-/291701705651?hash=item43eac6cbb3:g:UrAAAOSwwpdW25oT) Welche chips sind denn für solche Bildverarbeitung vorgesehen? Und unter welcher Kategorie fallen solche Kameras die in eine MIPI-CSI Schnittstelle passen ?
Wenn dich wirklich Bildverarbeitung interessiert (und du mEn am Anfang stehst), dann Kauf dir einen Raspi mit Kamera und hol dir OpenCV. Bildverarbeitung geht sicher auch irgendwie auf AVR/PIC(<24), aber nur wenn man sich in der Materie gut auskennt. Zum erlernen selbiger ungeeignet, weil viel zu klein/speziell/... BTW, bloß weil ein Chinese für sein Produkt ein paar Schlüsselwörter einwirft, die Goggle im als zugkräftig für sein Produkt verkauft hat, muß man da nicht drauf reinfallen. 30 VGA-Frames pro Sekunde über I2C! Warum haben wir dann VGA immer analog betrieben, I2C gab es da doch schon ;-)
:
Bearbeitet durch User
Carl D. schrieb: > 30 VGA-Frames pro Sekunde über I2C! > Warum haben wir dann VGA immer analog betrieben, > I2C gab es da doch schon ;-) Bei der Kamera wird per I2C (genauer: SCCB) nur die Kamera-internen Controllerregister gesteuert, aber nicht das Bild ausgegeben. Solche Kameras sind aber im nackten Zustand eher was für FPGAs (damit sehr leicht ansteuerbar) als für uCs.
Sigi schrieb: > Carl D. schrieb: >> 30 VGA-Frames pro Sekunde über I2C! >> Warum haben wir dann VGA immer analog betrieben, >> I2C gab es da doch schon ;-) > > Bei der Kamera wird per I2C (genauer: SCCB) > nur die Kamera-internen Controllerregister > gesteuert, aber nicht das Bild ausgegeben. > > Solche Kameras sind aber im nackten Zustand > eher was für FPGAs (damit sehr leicht ansteuerbar) > als für uCs. Es kam ja hoffentlich zum Ausdruck, daß ich den Versuch, über den Blickfang "I2C" diese Kamera einen unbedarften Arduino-Besitzer anzudienen, verhindern wollte.
Erst einmal danke für die vielen Antworten. Ich habe gerade noch ein wenig im Internet gesucht und bin auf eine Firma gestoßen die GUMSTIX heißt. Hat vielleicht jemand mit solchen Geräten Erfahrungen? Wie wäre es denn dann mit einem gumstix com, einem ribbon cable und einer Kamera von denen ?
Moin, Jackob F. schrieb: > Also ist das nicht möglich mit einer solchen Kamera ? > (Ebay-Artikel Nr. 291701705651) Weissich nicht, koennte schon sein, dass da "irgendwas" geht. Die Frage ist halt: Was? Und wie lange dauert das dann -also wieviele Sekundem/Minuten/Stunden muss ich an dem einen Bild rumrechnen - und in welchem Speicher des ATMega stehen da die Daten? Koennt' man schon riskieren, bei dem Preis kann man ja nicht allzuviel falsch machen. Aber ich kann mir nicht vorstellen auf einem ATMega vernuenftig Bildverarbeitung (und sei's auch nur 640x480) zu treiben. Obwohl ich da schon ein bisschen Vorstellungsvermoegen hab', was man auf ATMegas an Signalverarbeitung machen kann. > Welche chips sind denn für solche Bildverarbeitung vorgesehen? Chips fuer Handies, Tablets, SecurityCams,... > Und unter > welcher Kategorie fallen solche Kameras die in eine MIPI-CSI > Schnittstelle passen ? In die Kategorie MIPI-CSI :-) Das ist allerdings keine Konsumerschnittstelle, sondern eher so ein Abkommen zwischen den Herstellern obiger Chips und den Herstellern von Bildsensoren. Insgesamt wuerd' ich mal sagen: Investier doch spasshalber mal den Gegenwert eines Hefeweizens in das chinesische Modul, und guck', was geht. Wenn du da genz schnell an die Grenzen stoesst, dann kauf' dir entsprechendes Raspi-Zeugs. Gruss WK
Jackob F. schrieb: > Wie wäre es denn dann mit einem gumstix com, einem > ribbon cable und einer Kamera von denen ? Falls du die hier meinst: https://en.wikipedia.org/wiki/Gumstix Von Atmega328p sind die weit entfernt. Da steht etwas von ARM. p.s. Du darfst hier im Forum auch Links posten. Nicht jeder hat Lust, deinen Stichworten hinterher zu gogglen.
An einen AVR oder 8-Bit-PIC kannst du bspw. so etwas anschließen: http://www.suntekstore.com/goods-14004307-640x480_cmos_camera_module_ov7670_vga_yuv_snr_46_db_with_high_quality_lens.html Dieses Modul sieht zwar ähnlich aus und hat den gleichen Bildsensor wie das Modul in deinem E-Bay-Link, hat aber im Gegensatz zu diesem einen FIFO-Chip eingebaut, der groß genug ist, um ein komplettes Einzelbild zwischenzuspeichern. Nur dadurch ist es überhaupt möglich, die Daten mit einem langsamen µC einzulesen. Allzuviel Bildverarbeitung kannst du aber mit einem 8-Bit-Controller wegen der limitierten Rechenleistung nicht machen. Für das Modul aus Ebay musst du selber eine Schaltung mit dem FIFO-Chip bauen oder einen µC einsetzen, der die Daten direkt vom Bildsensor mit hoher Geschwindigkeit einlesen kann und die Bilddaten per DMA in den Hauptspeicher schreibt. Der STM32F4 scheint das zu können: http://embeddedprogrammer.blogspot.de/2012/07/hacking-ov7670-camera-module-sccb-cheat.html Jackob F. schrieb: > Firma gestoßen die GUMSTIX heißt. Hat vielleicht jemand mit solchen > Geräten Erfahrungen? Wie wäre es denn dann mit einem gumstix com, einem > ribbon cable und einer Kamera von denen ? Das würde sicher ganz gut funktionieren, zumal der ARM auf dem Modul deutlich mehr Rechenleistung als so ein 8-Bit-Controller hat. Ich schließe mich aber Carls Vorschlag an: Carl D. schrieb: > Wenn dich wirklich Bildverarbeitung interessiert (und du mEn am Anfang > stehst), dann Kauf dir einen Raspi mit Kamera und hol dir OpenCV. Da bekommst du für weniger Geld einen noch besseren Prozessor, mehr Speicher und eine bessere Kamera. Da das Raspberry weiter verbreitet ist, findest dafür auch sehr viel mehr Informationen, Hilfestellung und Softwarebeispiele.
Die erste Frage sollte doch sein, was überhaupt Ziel des ganzen ist. Was soll denn so mit dem Bild angestellt werden und in welcher Zeit? Generell würde ich einen AVR für eher ungeeignet betrachten, da er nicht genug Speicher hat, um ein Bild darin vollständig unterzubringen. Das macht den Zugriff sehr umständlich und langsam, und man braucht etwas externes, das das Bild lange genug speichert und wahlfreien Zugriff darauf erlaubt. Mit einem Raspi als Bildverarbeitungssystem dürfte man so ziemlich am meisten Leistung für sein Geld bekommen.
Jackob F. schrieb: > Ich habe einen Atmega328p controller (könnte auch umkaufen auf PIC oder > arm) und wollte wissen wie ich mit so einem chip Bildanalysen durchführen > kann (image processing)? Bildverarbeitung hat erstmal nichts mit dem Controller zu tun. Die eigentliche Magie steckt in den Algorithmen, und die kannst du auch auf einem stinknormalen PC entwickeln und benutzen. > Ersteinmal müsste ich wissen wie ich eine Kamera mit dem chip verbunden > bekomme und wie diese Bilder dann gespeichert werden, oder ob sie > überhaupt langfristig gespeichert werden und nicht nur im > Zwischenspeicher der Kamera. Es gibt analoge und digitale Übertragung, wobei die analoge Variante mit dem analogen Fernsehen ausstirbt. Nimm eine billige USB-Kamera für deinen PC und spiele damit rum. Die kannst du auch an ein Raspberry Pi anschließen. > Zudem stellt sich mir auch die Frage wie ich auf diese Bilder zugreifen > kann und in welchem Format sie vorliegen? Dein Betriebssystem hat einen Treiber für die Kamera und dieser Treiber kann deiner Anwendung die Bilder geben. Welches Format du bekommst, hängt von deiner Kamera ab. Normale Webcams nutzen oft MJPEG oder unkomprimiertes YUV, bessere Kameras schenken dir MPEG4, womit du einen kleinen Mikrocontroller schon überforderst. Mein Tipp: Kaufe dir eine normale USB-Kamera, schließe die an deinen PC an und spiele damit rum. Wenn du damit fertig bist, entwickelst du deinen Code für Linux. Und wenn das funktioniert, dann nimmst du ein Raspberry Pi und schließt die Kamera da an.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.