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/15 22:55]
ands
projekte:vector_graphics_adapter [2017/03/01 19:19] (aktuell)
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 58: Zeile 58:
  
 ==== Screen Capture ==== ==== 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 lässt ​sich der Bildschirminhalt ​(z.B. Spiele) auf dem Oszilloskop darstellen.+{{ :​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. Das funktioniert prinzipiell sowohl im Raster als auch im reinen Vektorgrafikmodus. Das bild Rechts ist mit dem Rastergrafik modus entstanden.
Zeile 64: Zeile 64:
 <​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>​ <​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 73: 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 ===== ===== Unsere anderen VGA-zu-Oszilloskop Projekte =====
   * [[https://​github.com/​ands/​vga2scope|Ein auf OpenCV basierender Video Player/​Webcam Streamer]]   * [[https://​github.com/​ands/​vga2scope|Ein auf OpenCV basierender Video Player/​Webcam Streamer]]