projekte:vector_graphics_adapter

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projekte:vector_graphics_adapter [2015/12/12 23:36] – [Digitaloszilloskop] da1l6projekte:vector_graphics_adapter [2017/03/01 19:19] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 7: Zeile 7:
  
 {{ :projekte:vga-scope-hallo-welt.png?200|Mehr Vektorausgabe über VGA}} {{ :projekte:vga-scope-hallo-welt.png?200|Mehr Vektorausgabe über VGA}}
-Doch der PC besitzt ja meist noch einen weiteren Digital-Analog-Wandler: Den VGA Anschluss. Eigendlich für Raster-Grafik ge gedacht, lässt er sich prima zur Ausgabe von Vektorgrafik zweckentfremden. Von den 3 Analogen Kanälen (Rot, Grün und Blau). Werden zwei genutzt um den Elektronenstrahl des Oszilloskops in X bzw. Y Richtug auszulenken.+Doch der PC besitzt ja meist noch einen weiteren Digital-Analog-Wandler: Den VGA Anschluss. Eigendlich für Raster-Grafik gedacht, lässt er sich prima zur Ausgabe von Vektorgrafik zweckentfremden. Von den 3 analogen Kanälen (Rot, Grün und Blau) werden zwei genutzt um den Elektronenstrahl des Oszilloskops in X bzw. Y Richtug auszulenken.
 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. 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.
  
Zeile 22: Zeile 22:
   * Anschließend wird ein weiterer Videofilter nachgeschaltet, welcher das Kantenbild in eine Vektorfolge umrechnet. (-vf vector).    * Anschließend wird ein weiterer Videofilter nachgeschaltet, welcher das Kantenbild in eine Vektorfolge umrechnet. (-vf vector). 
     * Dieser Filter basiert auf dem OpenCV FindContours funktion, welche die Kanten als Vektor-Pfad extrahiert.     * Dieser Filter basiert auf dem OpenCV FindContours funktion, welche die Kanten als Vektor-Pfad extrahiert.
-  * Der Vektorpfad wird anschließend als "Vektorbild" ausgegben, dabei entspicht Rot dem X und Grün dem Y Wert des Vektors. Die im Vektorbild verfügbaren Pixel werden auf die Vektoren Anteilsmäßig aufgeteilt.+  * Der Vektorpfad wird anschließend als "Vektorbild" ausgegben, dabei entspicht Rot dem X und Grün dem Y Wert des Vektors. Die im Vektorbild verfügbaren Pixel werden auf die Vektoren anteilsmäßig aufgeteilt.
   * Der ffmpeg edgedetect Filter liefert einen Intensitätswert, welcher die Ausgeprägtheit der Kante repräsentiert.   * Der ffmpeg edgedetect Filter liefert einen Intensitätswert, welcher die Ausgeprägtheit der Kante repräsentiert.
-    * Bei der Umsetzung in das Vektorbild wird dies berücksichtigt indem der Anteil an der koordinaten an der Ausgabe entsprechend angepasst wird.+    * 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.     * Je kleiner der Anteil desto schneller überstreicht der Elektronenstrahl die Kante und desto dunkler erscheint Sie.
-    * Damit ist möglich die Helligkeit auch ohne Z-Eingang verändern. +    * 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 Folge der Austastlücken ("H/V-Blank").+  * In der unteren linken Ecke (0,0) erscheint ein heller Punkt, dies ist eine Folge der Austastlücken ("H/V-Blank").
     * Um den Phosphor des Oszilloskop zu schonen sollte dieser außerhalb des sichtbaren Bereiches der Röhre bewegt werden.     * Um den Phosphor des Oszilloskop zu schonen sollte dieser außerhalb des sichtbaren Bereiches der Röhre bewegt werden.
   * Beispiel "Vektor"-Bild zur Ausgabe auf dem VGA-Port: {{:projekte:vga-scope-vector-image.png?800|Ausgabe-Bild zur Anzeige auf dem "Vektor"-Bildschirm.}}   * Beispiel "Vektor"-Bild zur Ausgabe auf dem VGA-Port: {{:projekte:vga-scope-vector-image.png?800|Ausgabe-Bild zur Anzeige auf dem "Vektor"-Bildschirm.}}
Zeile 56: Zeile 56:
 <code>/pfad/zu/build/mpv --fs --geometry=<BREITE-HAUPTBILDSCHIRM>:0 --loop --vf scale=256:256,vectorraster:width=2048:height=300 <VIDEO></code> <code>/pfad/zu/build/mpv --fs --geometry=<BREITE-HAUPTBILDSCHIRM>:0 --loop --vf scale=256:256,vectorraster:width=2048:height=300 <VIDEO></code>
  
 +
 +==== Screen Capture ====
 +{{ :projekte:vga-scope-raster-smb1.jpg?200|Super Mario Bros. 1 auf Scope}} mpv kann mit Hilfe von ffmpeg den Bildschirminhalt aufzeichnen. Damit lassen sich (z.B. Spiele) auf dem Oszilloskop darstellen.
 +
 +Das funktioniert prinzipiell sowohl im Raster als auch im reinen Vektorgrafikmodus. Das bild Rechts ist mit dem Rastergrafik modus entstanden.
 +
 +<code>/path/to/build/mpv av://x11grab::0 --demuxer-lavf-o='video_size=<BREITE>x<HÖHE>,grab_y=<XPOS>,grab_x=<YPOS>,framerate=30' ...</code>
 +
 +Video Eingänge wie TV-Karten oder Webcams lassen sich auch abgreifen:
 +<code>/path/to/build/mpv tv:// ...</code>
  
 ===== Digitaloszilloskop ===== ===== Digitaloszilloskop =====
Zeile 65: Zeile 75:
 {{:projekte:vga-scope-dso.png?250 |DSO zur Darstellung}} {{:projekte:vga-scope-dso.png?250 |DSO zur Darstellung}}
 {{:projekte:vga-scope-dso2.png?250 |DSO zur Darstellung}} {{:projekte:vga-scope-dso2.png?250 |DSO zur Darstellung}}
 +
 +=== DSO Tipps: ===
 +  * Eine hohe Bildwiederhohlrate einstellen (z.B. 120Hz) um den Pixeltakt zu erhöhen und damit die Zeit "zwischen" den Pixeln zu reduzieren.
 +  * 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 "rauschen" wie möglich sichtbar ist.
 +
 +===== Unsere anderen VGA-zu-Oszilloskop Projekte =====
 +  * [[https://github.com/ands/vga2scope|Ein auf OpenCV basierender Video Player/Webcam Streamer]]
  • projekte/vector_graphics_adapter.1449963384.txt.gz
  • Zuletzt geändert: 2017/03/01 19:04
  • (Externe Bearbeitung)