Forum: Mikrocontroller und Digitale Elektronik Welcher Prozessor für Videoauswertung ?


von Soeren G. (moeren)


Lesenswert?

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

von 3350 (Gast)


Lesenswert?

Das allenfalls naechst Guenstigere nach einem DSP ist ein FPGA. Ein 
Cyclone2 mit 200MHz sollte das schaffen.

von Soeren G. (moeren)


Lesenswert?

Der Frequenz nach sollte das reichen, aber sind die Programmierboards 
für FPGA nicht auch ziemlich teuer ?

von Gabriel W. (gagosoft)


Lesenswert?

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.

von Düsentrieb (Gast)


Lesenswert?

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 :)))

von Soeren G. (moeren)


Lesenswert?

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 ?

von Bernhard (Gast)


Lesenswert?

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!

von Düsentrieb (Gast)


Lesenswert?

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 !

von Soeren G. (moeren)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Düsentrieb (Gast)


Lesenswert?

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

von Soeren G. (moeren)


Lesenswert?

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.

von Gast (Gast)


Lesenswert?

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.

von Düsentrieb (Gast)


Lesenswert?

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

von Soeren G. (moeren)


Lesenswert?

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.

von Düsentrieb (Gast)


Lesenswert?

>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 :-)

von Gast (Gast)


Lesenswert?

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.

von Düsentrieb (Gast)


Lesenswert?

gast: mhz: sollte wohl klar sein, dass ich nur zu faul für die 
shift..war

von Soeren G. (moeren)


Lesenswert?

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
Noch kein Account? Hier anmelden.