mikrocontroller.net

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


Autor: Soeren G. (moeren)
Datum:

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

Autor: 3350 (Gast)
Datum:

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

Autor: Soeren G. (moeren)
Datum:

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

Autor: Gabriel Wegscheider (gagosoft)
Datum:

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

Autor: Düsentrieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein richtig-power fpga, aber günstig: zb
http://www.em.avnet.com/evk/home/0,1707,RID%253D0%...

xilinx von avnet
Xilinx XC3S400A-4FTG256C Spartan-3A FPGA
Kit Includes
Xilinx Spartan-3A evaluation board
$39.00

ca. 30eu :)))

Autor: Soeren G. (moeren)
Datum:

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

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die normale "Sprache" für FPGA's ist VHDL:

http://de.wikipedia.org/wiki/Very_High_Speed_Integ...

Du musst dazu wissen das FPGA im normalzustand kein uC sind, man kann 
aber einen draus machen!

Autor: Düsentrieb (Gast)
Datum:

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

Autor: Soeren G. (moeren)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Düsentrieb (Gast)
Datum:

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

Autor: Soeren G. (moeren)
Datum:

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

Autor: Gast (Gast)
Datum:

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

Autor: Düsentrieb (Gast)
Datum:

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

Autor: Soeren G. (moeren)
Datum:

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

Autor: Düsentrieb (Gast)
Datum:

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

Autor: Gast (Gast)
Datum:

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

Autor: Düsentrieb (Gast)
Datum:

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

Autor: Soeren G. (moeren)
Datum:

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

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.