PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Videokamera-Bilder einlesen? Mehrere Bilder/s



maddav2005
06.04.2006, 14:43
Hi,

ich möchte mehrere Schwarzweißbilder (ca. 400.000 Pixel würden fett ausreichen) pro Sekunde in einen ATmega einlesen. Ich jage sie einfach durch - ich würde mit einem größeren 400 MHz Modul (gumstix) kommunizieren. Welche Kamera würdet ihr empfehlen / wie soll ich sie anschließen? Ich habe daran gedacht, ein Kameramodul, das man an TV-Geräte anschließt, zu verwenden; allerdings muss ich das dann durch einen A/D-Wandler bringen, was in der Geschwindigkeit nicht gerade billig ist (und der im ATmega ist viel zu langsam).
Im Internet gibts ja auch die Diskussion mit dieser Sony Ericcson MC-25 (oder so) Handycam, allerdings ist das I2C und ich bezweifle dass das genug Bilder pro Sekunde schafft.

Ich wäre für jeden Vorschlag dankbar!

David Madl

maddav2005
06.04.2006, 20:08
Ich überlege, einen Bt848 von einer TV Karte auszulöten...
Weiß jemand, ob ich irgendeine Chance habe, über "SPI" (Synchronous Pixel Interface) über die GPIO Anschlüsse des Bt848 das Y-Signal rauszukriegen?

ogni42
07.04.2006, 07:39
Bei 5 Bildern/s und 400kPixel müsstest Du 2MByte/s zwischen den Controllern senden. Hast Du dafür schon eine Lösung?

Es gibt jede Menge ADCs, die sowas schnell genug digitalisieren können, ich habe eher bedenken, bei der Kommunikation mit dem Hostcontroller.

maddav2005
07.04.2006, 07:49
> Es gibt jede Menge ADCs, die sowas schnell genug digitalisieren können

OK, bitte um einen Tipp... ich finde höchstens Dinger mit 1-2 MSamples/s... und die benötigen dann auch das entsprechende "Kleingeld"... eine TV-Karte: 5-6 € bei eBay...

ps. mir reichen inzwischen 100 kpixel...

ogni42
07.04.2006, 08:01
z.B. ADS830, mach 60MSamples/s.

Auf den Seiten von analog, TI, etc. sind Produktkonfiguratoren mit denen Du nach bestimmten Kriterien (z.B. Samplerate) suchen kannst.

PICture
07.04.2006, 09:37
Hallo!

Beim Reichelt gibt es videointerface TDA8708A (max. 32 MHZ sample) für 4,90€.

MfG

ogni42
07.04.2006, 10:10
Der Bt848 ist sicherlich nicht so empfehlenswert, da der per PCI Interface angesteuert werden muss.

BT835 sieht da besser aus, der verarbeitet sogar die Sync Signale sauber (wenn ich das auf die Schnelle richtig gesehen habe).

Da Du mit Deiner Anforderung aber schon auf 100kSamples/s runter bist, reicht Dir fast ein einfacher Sync-Stripper Chip (TDA irgendwas, von Phillips, glaube ich) und ein moderat schneller ADC z.B. ADC0830. Damit solltest Du recht preiswert hinkommen und die Ansteuerung ist ebenfalls nicht so kompliziert.

Vielleicht solltest Du aber überlegen, ob Du nicht mit sowas wie die Comedia 3088 verwendest. Die Kamera liefert Dir bereits ein digitales Signal. Bekommst Du z.B. hier:
http://www.roboter-teile.de/Shop/themes/kategorie/detail.php?artikelid=31&source=2

maddav2005
07.04.2006, 16:56
Super, danke. Sowas habe ich gesucht. Wenn mir nun jemand noch erklären könnte, wie ich das Signal an den ADC hänge / wie ich das Sync Signal rauskriege, wäre das super....

P.S. Bei Reichelt habe ich nur TDA 8703 gefunden, ist aber ähnlich gut...

ogni42
07.04.2006, 17:39
LM1881 ist ein Sync-Stripper (gibt's bei reichelt für 2,1€) mit Vsync startet der neue Frame, HSync ist die neue Zeile.

maddav2005
07.04.2006, 19:09
Danke...

hmmm. Wie erfinde ich da den Takt (da ich eine bestimmte Anzahl Pixel pro Zeile will)? Oszilloskop, dann die gemessene Zeit der Zeile durch meine gewünschten Pixel teilen? Oder PLL?

P.S. Die Cam die ich mir ausgesucht habe macht ein Schwarzweiß CCIR Signal... ist doch so wie PAL nur ohne Farbinfo/Chrominanz oder?

CowZ
07.04.2006, 20:49
Hi, nur noch was zur Datenrate:
"Bei 5 Bildern/s und 400kPixel müsstest Du 2MByte/s"

Stimmt imho nicht...
5 * 400k = 2M
aber nicht Byte, sondern Bit... Das relativiert das ganze schon auf
250kBit

und das kann der IIC im schnellen Modus.

Gruß, CowZ

maddav2005
07.04.2006, 21:01
hmmm.... eigentlich stimmts doch... ich hab zwar nicht gesagt dass ich 8 bit Auflösung haben will, aber es leuchtet ein dass es wohl unlogisch ist nur Schwarz oder nur Weiß als Pixel zu haben... (Dithering würd da höchstens was bringen allerdings ist das bei 100.000 Pixel schon eine sehr schlechte Qualität...)

CowZ
07.04.2006, 21:03
Für mich ist schwarzweiß = 1 / 0 ;) Das andere is Graustufen... Heißt aber trotzdem schwarz weiß... ^^ Naja, egal ;)

stochri
07.04.2006, 21:27
Kameras am Atmega gibt es ja tatsächlich:

http://www.tobias-schlegel.de/sides/robotik/log/log.htm

und

http://www.jrobot.net/Projects.html

Bei diesem Projekt ist mir ziemlich unklar, wie man auf 30frames/sec kommt, wie im Artikel beschrieben.

Gruss,
stochri

maddav2005
07.04.2006, 21:45
naja, Gameboy-Cam... ich finde das einfach zu lächerlich... Vielleicht ließe sich das doch gebrauchen...

CMUcam hört sich doch eher recht langsam an...

PS. BT835 hört sich recht gut an... hab auch endlich mal angeschaut... 8-[
Hat jemand vielleicht schon Erfahrungen mit diesem IC?

ogni42
08.04.2006, 13:21
Die unter diesem Link http://www.jrobot.net/Projects.html verwendete Kamera ist die, die auch die CMUCam verwendet (die CMUCam hat halt noch Logik dabei).

Von OV gibt es auch Kameras mit VGA Auflösung, allerdings sind die alle IIRC Farbe und nicht monochrom.

Die Gameboy-Kamera macht 128x128 Pixel liegt also entschieden unter den 100kPixel, die Du verwenden möchtest. Beschreibe doch mal, was Du machen möchtest, vielleicht kann man daraus ja eine untere Grenze für Pixel und Bildrate ableiten. Die Bilder der Gameboy-kamera sind auf jeden Fall recht brauchbar (Beispiele gibts in einem Thread im C-Forum).

Zum Takt: Solange Du nicht eine eigene Pixelclock erzeugst (und die Kamera, die Du verwendest, mit einer externen Pixelclock funktioniert) bestimmst Du den Takt am ADC, wie Du ihn benötigst.

Aus der Kamera kommt ja ein analoges Signal, der Sync-Stripper zeigt Dir nur an, wo eine neue Zeile, ein neues Halbbild und ein neues Vollbild beginnt. In jeder Zeile machst Du dann soviele Samples, wie Du benötigst (wobei Dir Überabtastung nix bringt, da die CCIR-Norm eine feste Anzahl Pixel vorgibt). Die Pixelclock, die Du benötigst, ergibt sich aus der verwendeten Norm, nach den genauen Zahlen musst Du googlen.

ogni42
08.04.2006, 13:24
BTW, die 30 fps werden bei 88x144 Pixeln mit 12 bit digital (YUV), somit muss der ATMega 570kByte/s lesen und schreiben, was bei 16MHz Takt kein Problem sein sollte.