Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projekte:vector_graphics_adapter [2015/11/15 18:29] – da1l6 | projekte:vector_graphics_adapter [2017/03/01 19:19] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ==== VGA: Vector Graphics Adapter ==== | + | {{ : |
- | Vektorgrafik auf dem Oszilloskop dürfte so alt sein wie der X/Y-Modus. Neben [[https:// | + | Vektorgrafik auf dem Oszilloskop dürfte so alt sein wie der X/Y-Modus. Neben [[https:// |
- | Eine Soundkarte ist im Prinzip ein Digital-Analog Wandler, hat jedoch Tiefpassfilter welche zwar die Audio-Qualität | + | Eine Soundkarte ist im Prinzip ein Digital-Analog Wandler, hat jedoch Tiefpassfilter welche zwar die Audio-Qualität |
- | Dadurch verliert die Grafik den Nullpunkt und wabert um den Mittelpunkt falls sie nicht gut auf diese Gegebenheiten angestimmt wird. | + | Dadurch verliert die Grafik |
- | Ziel des Projektes ist eine stabile | + | {{ : |
+ | Doch der PC besitzt ja meist noch einen weiteren Digital-Analog-Wandler: | ||
+ | Der VGA-Port kann die Bilddaten auch mit sehr hoher Geschwindigkeit (> 100MHz) ausgeben, davon kann man bei Soundkarten nur träumen. Auch stöhrende Ausgangsfilter gibt es nicht. Damit ist er fast ideal für komplexe Vektor-Darstellungen geeignet. | ||
- | === 0. Vektorisierung mit patrace | + | {{ : |
+ | * VGA Pin 1 (Rot) mit dem Horizontal Eingang (Meist Ch2) des Oszilloskops verbinden. | ||
+ | * VGA Pin 2 (Grün) mit dem Vertikal (Y) Eingang (Meist Ch1) des Oszilloskops verbinden. | ||
+ | * Massen von PC und Oszilloskop verbinden. | ||
- | Zu allererst muss Material zur Anzeige her. Die Wahl viel auf das Video [[https://www.youtube.com/watch? | + | ==== Funktionsprinzip / Software ==== |
+ | * Die Vektorisierung ist als [[https:// | ||
+ | * Das Video (oder Bild) wird mittels | ||
+ | * Dazu habe ich in einen [[https:// | ||
+ | * Alternativ kann der edgedetect Filter aus ffmpeg/ | ||
+ | * Anschließend wird ein weiterer Videofilter nachgeschaltet, | ||
+ | * Dieser Filter basiert auf dem OpenCV FindContours funktion, welche die Kanten | ||
+ | * Der Vektorpfad wird anschließend als " | ||
+ | * Der ffmpeg edgedetect Filter liefert einen Intensitätswert, | ||
+ | * Bei der Umsetzung in das Vektorbild wird dies berücksichtigt indem der Anteil an der Koordinaten an der Ausgabezeit entsprechend angepasst wird. | ||
+ | * Je kleiner der Anteil desto schneller überstreicht der Elektronenstrahl die Kante und desto dunkler erscheint Sie. | ||
+ | * Damit ist es möglich die Helligkeit auch ohne Z-Eingang verändern. | ||
+ | * In der unteren linken Ecke (0,0) erscheint ein heller Punkt, dies ist eine Folge der Austastlücken (" | ||
+ | * Um den Phosphor des Oszilloskop zu schonen sollte dieser außerhalb des sichtbaren Bereiches der Röhre bewegt werden. | ||
+ | * Beispiel " | ||
- | Dazu wird zuerst | + | ==== Benutzung ==== |
+ | * Zunächst das VGA Timing so einstellen das möglichst wenig störende H-Blanks erzeugt werden: < | ||
+ | xrandr --addmode VGA1 scope | ||
+ | xrandr --output VGA1 --mode scope --right-of < | ||
+ | * ffmpeg (libav besitzt den edgedetect filter nicht) | ||
+ | * opencv | ||
+ | * Modifizierter mpv media player: '' | ||
+ | * Beispielaufruf: | ||
+ | * Mit ffmpeg Kantenerkennung:< | ||
+ | * Mit openCV Kantenerkennung:< | ||
+ | * Die optimalen werte für t1 (bzw. low) und t2 (bzw. high) können je nach Material variieren. Einfach ausprobieren. | ||
+ | * Der Canny-Algorithmus ist sehr Rechenintensiv, | ||
- | '' | + | ===== Cheating at Vector Graphics |
+ | {{ :projekte: | ||
- | Und dann vektorisiert: | + | Der bei der Vektorgrafik benutzte Trick zur Helligkeitsänderung kann benutzt werden um Rastergrafik auszugeben. |
- | '' | + | Dabei werden die X/Y-Koordinaten (R/G-Farbkanäle) kontinuierlich so erhöht, das der Oszilloskop-Bildschirm zeilenweise überstrichen wird, wie bei einem Raster Monitor. |
- | potrace | + | |
- | done'' | + | |
- | Die Optionen erzeugen ein SVG mit nur einem Pfad welches sich weiterverarbeiten lässt. | + | Helligkeitsunterschiede werden mittels Geschwindigkeitsänderung |
- | Ein Ruby Skript | + | |
- | {{:projekte: | + | ==== Benutzung ==== |
+ | < | ||
- | === 1. Verbesserte Kantenerkennung mit imagemagick === | ||
- | Für nicht | + | ==== Screen Capture ==== |
+ | {{ : | ||
- | === 2. Atmel Xplain | + | Das funktioniert prinzipiell sowohl im Raster |
- | === 3. VGA Port als DAC === | + | < |
- | === 4. Echtzeit Vektorisierung mit opencv === | + | Video Eingänge wie TV-Karten oder Webcams lassen sich auch abgreifen: |
+ | < | ||
- | === 5. Videowiedergabe mit mpv === | + | ===== Digitaloszilloskop ===== |
+ | Wer kein analoges Oszilloskop sein eigen nennt kann auch ein modernes digitales Oszilloskop verwenden, allerdings sind die Darstellungsergebnisse deutlich schlechter. Insbesondere der Rastergrafik-Modus ist kaum zu verwenden. | ||
+ | |||
+ | Die Ursache liegt darin, dass digitale Oszilloskope periodisch das Eingangssignal abtasten und dann an der zu den gemessenen Spannungen passenden Stelle einen Punkt zeichnen, welcher aber immer die selbe Helligkeit hat. Da das Abtasten nicht synchron zum Pixeltakt des VGA-Ports ist, werden auch viele Zwischenwerte im Übergang zwischen zwei Pixeln gemessen. Dies führt zu starkem " | ||
+ | |||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | === DSO Tipps: === | ||
+ | * Eine hohe Bildwiederhohlrate einstellen (z.B. 120Hz) um den Pixeltakt zu erhöhen und damit die Zeit " | ||
+ | * Ein möglichst breites Seitenverhältniss verwenden um wenig H-Blanks zu haben (ist immer gut). | ||
+ | * Geringe Speichertiefe einstellen (e.g. ~7kPoints). | ||
+ | * Mit der Samplerate rumspielen bis so wenig " | ||
+ | |||
+ | ===== Unsere anderen VGA-zu-Oszilloskop Projekte ===== | ||
+ | * [[https:// |