Hallo Leute Folgendes überlege ich derzeit, ich habe ein Kamera Modul mit 352 x 288 Pixel von Conrad besorgt und möchte nun das Bild auswerten, eigentlich wirds nur nen einfacher Filter der die hellsten Punkte im Bild ermitteln soll. Nun habe ich aber bisher nur erfahrungen mit den ATMegas und die wären für diesen Zweck einfach zu langsam, wenn die Kamera 25 Frames machen würde müsste der AD schon 2,5 Mhz schaffen, was bei den ATMegas ja nicht der Fall ist. Hänge ich nen externen AD ran hab ich noch das Problem, das ich nur 8 Taktzyklen per Pixel hab um ihn auszuwerten, was mir auch zu wenig ist. Würde ich immer ein paar Bilder auslassen und ein Bild nach dem ich es bekommen hab auswerten müsste ich es zwischenspeichern können, wobei ich über 12k Ram brauche, reicht also auch nicht. Nun habe ich gesehen das es auch ARM Prozessoren von Atmel gibt, habe davon allerdings keine Ahnung, hab nur gesehen das die genug RAM und geschwindigkeit haben. Jetzt stellt sich die Frage, wären die Geeignet für die Aufgabe ? oder doch besser andere ? Und vor allem wie Programmier ich die ? Für die Atmels hatte ich einfach nen Funk-AVR-Evaluations-Board von Pollin, was sich sehr gut gemacht hat, aber ich bezweifle das mir das bei den ARM hilft. Ich hab auch von den Blackfin gelesen, davon haben wir auch welche an der Uni verwendet, aber die Programmierboards sind ja unbezahlbar. Und wenn nun z.b. die ARM von Atmel, brauchbar, bezahlbar und programmierbar wären. Dann sind die ja aber sicher ganz anders aufgebaut als die AVR, wie sieht das Softwareseitig aus wenn ich die Programmieren will ? Ich sag schonmal vielen Dank im Vorraus MfG Sören
Das allenfalls naechst Guenstigere nach einem DSP ist ein FPGA. Ein Cyclone2 mit 200MHz sollte das schaffen.
Der Frequenz nach sollte das reichen, aber sind die Programmierboards für FPGA nicht auch ziemlich teuer ?
Naja sie kosten schon etwas Geld.... Ich hab ein Spartan3-Modul von Trenz und den dazu passenden Pinheader Adapter -> also 4x 40 Pin Pfostenstecker. Hat soweit ich mich erinnere ca €150 gekostet (weis es nicht mehr so genau). Ist aber eine eierlegende Wollmilchsau... Will meinen FPGA nicht mehr missen. Bin derzeit auch an Videoverarbeitung dran.
ein richtig-power fpga, aber günstig: zb http://www.em.avnet.com/evk/home/0,1707,RID%253D0%2526CID%253D46501%2526CCD%253DUSA%2526SID%253D32214%2526DID%253DDF2%2526LID%253D32232%2526PRT%253D0%2526PVW%253D%2526BID%253DDF2%2526CTP%253DEVK,00.html xilinx von avnet Xilinx XC3S400A-4FTG256C Spartan-3A FPGA Kit Includes Xilinx Spartan-3A evaluation board $39.00 ca. 30eu :)))
Hmm klingt auf jeden Fall als ob es im Budged wäre. Nur ich hab noch nie mit FPGA's gearbeitet. In wie fern unterscheiden die sich von den AVR ? Muss da noch irgendwas extern angebunden werden ? Und kann ich die auch wieder mit nem C Programmieren oder wird das da anders gemacht ?
Die normale "Sprache" für FPGA's ist VHDL: http://de.wikipedia.org/wiki/Very_High_Speed_Integrated_Circuit_Hardware_Description_Language Du musst dazu wissen das FPGA im normalzustand kein uC sind, man kann aber einen draus machen!
du solltest dir evtl mal das ise-webpack , die entwicklungs-umgebung von xilinx, laden. kost nix. dann kannste mal etwas probieren...bzw lernen is angesagt... wenn du dann denkst, du kommst mit vhdl irgendwie auch nur in die nähe deines zieles, kauf so ein günstges fpga-set und mach es !
Also, ich denke ich werde mir das auf jeden Fall mal anschauen. Soweit ich gesehen hab sollte das meißte dabei sein, ist nur die Frage ob das ding eigenen Speicher hat. Ich hoffe nur das es nicht zu komplex ist, hab leider nicht so viel zeit mich noch mit ner 100% neuen umgebung auseinander zu setzen. Ich hatte ja gehofft es gibt nen einfach nen µC der den AVR sehr ähnlich, nur halt schneller oder mit mehr RAM ist, das würde für meine Zwecke ja schon absolut reichen.
Bevor jetzt viel Aufwand in FPGAs etc. gesteckt wird: Muss denn die Videoauswertung in Echtzeit geschehen? Wenn das nicht nötig ist, dann kann auch mit einem wesentlich anspruchsloseren Prozessor gearbeitet werden; die Bilderfassung kann dann mit einem simplen Framegrabber erfolgen, wie es sie schon zu Zeiten des VC64 gab. Einzige Voraussetzung ist genügend Speicher für das zu erfassende Videobild und die Fähigkeit des verwendeten Prozessors, diesen zu adressieren.
>das es nicht zu komplex ist
die komplette entwicklungs-umgebung mit beispielen usw will etwa 4 GB
platz...kommt drauf an, was du unter komplex verstehst :-)
ich würde das ganze ohnehin analog machen.
hellste punkte im video -> komparator mit einstellbarer schwelle, das
sollte mit nem avr problemlos gehen
dig. video-verarbeitung is richtig heftig..
Naja, absolut echzeit muss das nicht sein. Ich bekomm das Bild halt nur als normales S/W Videosignal und muss feststellen wo die hellsten hellsten punkte sind. Das muss nicht echtzeit sein, nur halt schnellgenug damit nen Mensch nicht viel merkt. Da würde also ne zehntel oder zwanzigstel sekunde reichen, aber dafür müsste ich das Bild speichern um es auszuwährten, während ich die nächsten 2 oder 3 Frames ignoriere, dafür bräuchte ich aber über 12k RAM. Alternativ hab ich nen Algorithmus den ich in echtzeit laufen lassen kann der dann max. 1,5k RAM braucht, das haben die AVR ja, aber sind dann halt zu Langsam. Schneller oder mehr Speicher, eins von beiden brauch ich.
Wie wäre es dann mit externem RAM? Außerdem kannst du bei der Digitalisierung des Bildes auch jeden zweiten oder mehr Pixel auslassen. Ein weißer Punkt im Bild verteilt sich ja auf einige Pixel, durch das Rauschen der billigen Module ist es IMHO garnicht möglich, genau ein Pixel weiß zu bekommen.
du verstehst nicht: es geht analog, ganz einfach: kein speicher nötig! der komparator, zb lm319, bekommt das s/w video signal, vergleicht mit nem einstellbaren referenz-"hell"-wert, wenn comp. schaltet -> muss avr nur position im bild feststellen, dh zeilen mitzählen+timer für x-pos. das kann ein 20mhz avr locker
achso meintest das, aber mein, geht nicht ganz so, weil dann könnte ich das einfach per wiederstand soweit senken, das meine referenzhelligkeit dem schwellwert eines digitalen eingang entspricht und hätte dann das selbe prinzip. Aber ich habs vielleicht schecht formuliert. Ich brauche nicht die hellsten Pixel sondern Punkte, d.h. ein Punkt kann auch aus mehreren Pixeln bestehen. Wenn ich also einen hellen Pixel hab muss ich wissen wie hell der ist weil ich diesen mit der Helligkeit der Pixel drum rum vergleichen will um per interpolation eine genauere Positionsberechnung als nur in nem Raster von 352 x 288 zu bekommen. Und die 2 möglichkeiten die hätte wären: A) Ich speicher nen Frame einfach nur und werte ihn aus während ich die nächsten Frames ignoriere, das braucht aber >12k RAM oder b) Ich speichere immer nur die vorherige Zeile, damit ich sobald ich ein hellen Pixel bei der Echtzeit arbeit finde mit den Pixeln drum rum vergleichen kann. Dabei ist der AVR aber ein wenig zu langsam.
>um per interpolation eine genauere Positionsberechnung
dann isses aber sicher nicht mehr "einfach"
standard lösung (bild-musterverarbeitung) wäre: video-in-karte + pc
das alles selbst zu bauen, zb mit video-adc + 70mhz arm cpu ... woww !!
aber es versuchen ja auch manche, ein handy zu bauen :-)
Noch ein paar Tipps: Ich würde dem Wiederstand Widerstand entgegensetzen, auswerten anstatt auszuwährten und zum Schluß auch noch Prozessoren im MHz-Takt betreiben und keine mhz. Es wäre zu langsam.
gast: mhz: sollte wohl klar sein, dass ich nur zu faul für die shift..war
Also das mit der interpolation lasst mal mein Problem sein, so schwer ist das auch nicht. Ausreichend schnelle ADC gibts auch, soll also nicht das Problem sein. Und von nem ARM kern hab ich leider keine Ahnung, deshalb ja dieser threat, weil mich interessiert ob sowas geeignet ist. Wobei, ich hab mir ne mögliche lösung überlegt. Wenn ich nun die Signale in den AVR jage, habe ich nur sehr wenig Rechenzeit pro pixel. Nun könnte ich das so machen das ich checke ob er den Schwellwert erreicht, und wenn ja geb ich seine Position und Helligkeit an nen anderen AVR weiter, der Berechnet die ganze Zeit die Positionen und immer wenn er nen Interrupt bekommt, trägt er sich den neuen Punkt in ne abzuarbeitende Liste. Würde zwar funktionieren aber ich finds net optimal.
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.