Verarbeitung von NTSC-Video-Feeds für SPI-Anzeige

Ich habe kürzlich ein Projekt gestartet, bei dem ich diese kleine Kamera verwenden und das Live-Video an ein sehr kleines Farb-LCD weiterleiten möchte, wie dieses über ein Arduino.

Leider hat die Kamera einen NTSC-Ausgang und das LCD einen SPI-Eingang. Gibt es eine Möglichkeit, das Filmmaterial von der Kamera auf dem LCD anzuzeigen, oder muss ich einen anderen Bildschirm verwenden?

Bist du dem 2. Link in der Beschreibung der Kamera gefolgt, wo es heißt "Wir haben ein sehr ausführliches Tutorial .." ? Scheint, als könnte Ihre Frage durch das, was ich mir gerade angesehen habe, recht gut beantwortet werden.
@JustJeff Das Tutorial zeigt, wie man es direkt an ein Display mit Cinch-Buchse anschließt, das kleine LCD, das ich verwenden möchte, hat keine.

Antworten (3)

Nun, Sie müssten das Video digitalisieren, Luminanz-, Chrominanz- und Synchronisierungsinformationen extrahieren, von 525 Zeilen auf 128 Zeilen herunterskalieren und die Daten in Echtzeit über SPI ausgeben. Das klingt für mich nach einem Nichtstarter.

Es wäre einfacher, die digitale JPEG-Ausgabe der Kamera zu verwenden und diese zu dekomprimieren, da die Auflösung mit dem Bildschirm kompatibel ist (160 x 120 vs. 160 x 128), obwohl Sie immer noch kein Echtzeitvideo erhalten würden.

@clabacchio - Auf der Webseite des Kameraherstellers heißt es: "... es gibt NTSC-Video aus und kann Schnappschüsse dieses Videos machen und sie über die serielle TTL-Verbindung übertragen". Ich verstehe das so, dass es sowohl analog als auch digital ausgibt. Wenn die Ausgabe reine TTL-Daten mit JPEG-Bildern sind, warum wird dann überhaupt NTSC erwähnt?
@clabacchio - Der Kameralink des OP befindet sich auf makershed.com. Betrachten Sie ihr großes Bild der Kamera . Pin 6 ist mit 'CVB' - Composite Video gekennzeichnet. Ein anderes Bild zeigt dies an eine gelbe RCA-Buchse angeschlossen.
Warte, warte, Entschuldigung. Die serielle Schnittstelle erlaubt nur das Herunterladen von Schnappschüssen, da haben Sie recht.

BEARBEITEN: Ich habe mich über das Video über die TTL-Schnittstelle geirrt: Sie können Schnappschüsse machen und sie über den UART senden, aber für das Video ist der analoge Ausgang der einzige Weg. Dafür benötigen Sie also einen schnellen ADC und digitale Manipulation, und es wird nicht so einfach sein.

Sie können es jedoch verwenden, um Bilder mit einer niedrigen Framerate zu senden, wie z. B. Webcams zur "Echtzeit"-Wetterüberwachung.

Was Sie definieren müssen, ist die Codierung des Bildes von der Webcam (Bittiefe und Framerate) und schließlich den Code schreiben, um es in ein mit dem Display kompatibles Format zu konvertieren (es gibt verschiedene Optionen, lesen Sie das Datenblatt).

Es ist möglicherweise auch möglich, das Bild ohne Verarbeitung direkt vom TTL-Eingang zum SPI-Eingang weiterzuleiten, aber Sie müssen sich immer noch um die Kommunikation kümmern, und es wird einfacher, wenn Ihr uC sowohl über die UART- als auch über die SPI-Schnittstelle verfügt.

Es ist also nicht unmöglich, erfordert aber etwas Arbeit.

Kennen Sie zufällig eine Bibliothek, die das Video verarbeiten und konvertieren kann?
@johnny1bucket nein, noch nie gemacht :) aber Sie können sich zuerst die Kamera- und Anzeigetreiber ansehen und dann versuchen, sie zu googeln
@johnny1bucket - Ich werde es nicht weiter verfolgen, aber wenn Sie sich das Ende des Tutorials ansehen (siehe Link in der Kamerabeschreibung, nach dem Link von OP), gibt es einige wahrscheinlich aussehende Kandidaten.

Das Aufnehmen eines Schwarzweiß-NTSC-Videosignals ist nicht allzu schwierig, insbesondere wenn Sie sich nicht allzu viele Gedanken über die Auflösung oder Bildrate machen. Es gab zum Beispiel ein Videoaufnahme-Gizmo, das an den Druckeranschluss eines Amiga 1000 angeschlossen wurde. Damals keine ausgefallenen Zillionen-Megahertz-Mikrocontroller - nur etwas diskrete Logik, ein Sample-and-Hold und ein nicht besonders schneller ADC, der IIRC 5-Bit-Daten bei 15 kHz (etwa 5 Sekunden pro Frame, Schwarzweiß) erfasste ). Ich würde erwarten, dass Sie monochrome Daten mit einem anständigen Mikrocontroller schneller erfassen möchten und könnten. Wenn Sie ein grobes 128x100-Bild mit 30 Bildern pro Sekunde aufnehmen möchten, müssen Sie wahrscheinlich etwa 0,8 Megapixel/Sekunde aufnehmen (1/4 der Pixel horizontal auf jeder Scanzeile in zwei Feldern aufnehmen).

Das Erfassen von Farbe von einer "allgemeinen" NTSC-Videoquelle ist viel schwieriger, da es keine feste Beziehung zwischen Chroma-Phase und horizontaler Position gibt. Viele Videoquellen, einschließlich Kameras, Computer und DVD-Player, haben jedoch eine feste Beziehung zwischen Chrominanz und horizontaler Position (es gibt einen Standard dafür, wie die Beziehung für "perfektes" Video sein sollte, aber nicht alle Geräte entsprechen; die meisten Geräte andere als Videorecorder haben eine konsistente Beziehung, aber sie können dem Standard entsprechen oder nicht). Wenn Sie um eine bestimmte bekannte Eingangsquelle herum entwerfen können und Timings in Bezug auf die horizontale Synchronisation genau messen können (Timing-Präzision ist viel wichtiger als bei monochromem Video), kann Farbsampling praktisch sein.

Ohne zu wissen, was Sie tun möchten, kann ich nicht sagen, was der beste Ansatz wäre. Verwenden Sie am besten ein LCD-Display mit einem Composite-Videoeingang und überlagern Sie das Video darauf. Farbüberlagerung ist im Allgemeinen ein Problem, aber wenn Sie einen horizontalen "geteilten Bildschirm" wünschen, ist es möglicherweise möglich zu schummeln (Sets mit analogen Farbschaltkreisen würden nicht gut funktionieren, wenn ein Teil des Bildschirms eine andere Farbphase als ein anderer Teil verwenden würde, aber LCD-Bildschirme mit einem digitalen Frontend hat vielleicht nichts dagegen; wenn Sie Ihr eigenes Chroma auf Zeilen erzeugen, auf denen Sie Ihre eigene Farbe anzeigen wollten, und das Kamera-Chroma auf anderen durchlassen, bin ich mir nicht sicher, was passieren würde).