mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie funktioniert die Sache mit dem image processing ?


Autor: Jackob Friedrich (friedrichjackob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Teo Derix (teoderix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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

Autor: Jackob Friedrich (friedrichjackob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ist das nicht möglich mit einer solchen Kamera ? 
(Ebay-Artikel Nr. 291701705651)

Welche chips sind denn für solche Bildverarbeitung vorgesehen? Und unter 
welcher Kategorie fallen solche Kameras die in eine MIPI-CSI 
Schnittstelle passen ?

Autor: Carl Drexler (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Carl Drexler (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jackob Friedrich (friedrichjackob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An einen AVR oder 8-Bit-PIC kannst du bspw. so etwas anschließen:

  http://www.suntekstore.com/goods-14004307-640x480_...

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/hack...

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.

Autor: Rolf Magnus (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: S. R. (svenska)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.