Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projekte:vector_graphics_adapter_en [2015/12/13 01:04] – angelegt da1l6 | projekte:vector_graphics_adapter_en [2024/12/30 12:18] (aktuell) – da1l6 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
{{ : | {{ : | ||
- | Using an Oscilloscope for Vector graphcis is propably an idea as old as the X/Y-Mode. Apart from [[https:// | + | Using an Oscilloscope for Vector graphcis is propably an idea as old as the X/Y-Mode. Apart from [[https:// |
- | While a sound card is essentiall | + | While a sound card is essentially |
{{ : | {{ : | ||
- | The solution comes from the other analog to digital converter still commonly found on modern PCs: The VGA-Port. | + | The solution comes from the other digital |
While it may be intended to drive raster screens, it essentially a 3 Channel, High-speed (> 100MHz) DAC. | While it may be intended to drive raster screens, it essentially a 3 Channel, High-speed (> 100MHz) DAC. | ||
Using 2 of these channels (Red and Green) the electron beam of an Oscolloscop can be driven in X and Y directions much like the soundcard method, but much faster and without the harmful filter stages. This makes it almost ideal for drawing vector graphics on a scope. | Using 2 of these channels (Red and Green) the electron beam of an Oscolloscop can be driven in X and Y directions much like the soundcard method, but much faster and without the harmful filter stages. This makes it almost ideal for drawing vector graphics on a scope. | ||
Zeile 17: | Zeile 17: | ||
==== Software operation ==== | ==== Software operation ==== | ||
* The vectorization is implemented as a set of [[https:// | * The vectorization is implemented as a set of [[https:// | ||
- | * I made a [[https://github.com/da1l6/mpv|fork of mpv]] which contains these filters. | + | * I made a [[https://gitlab.warpzone.ms/da1l6/vga|fork of mpv]] which contains these filters. |
- The input video (or image) is passed through the [[https:// | - The input video (or image) is passed through the [[https:// | ||
- | * The fork contains a canny filter that uses the [[http:// | + | |
- | * The edgedetect filter from ffmpeg/ | + | - Following |
- | - Follwing | + | * The vector |
- | * The same filter iterates over these paths to create a " | + | * The available |
- | * The availiable | + | |
* The ffmpeg edgedetect filter provides an intensity value in its output depending on how sharp an edge is. | * The ffmpeg edgedetect filter provides an intensity value in its output depending on how sharp an edge is. | ||
* This is used to give more vector image " | * This is used to give more vector image " | ||
- | * Less prominent edges get less scanout time and will apear dimmer because the electron beam moves over these spots more quickly. | + | * Less prominent edges get less scanout time and will appear |
* This method works without the use of a dedicated intensity (Z) input on the oscilloscope. | * This method works without the use of a dedicated intensity (Z) input on the oscilloscope. | ||
* A problem of using the VGA port is the blanking periods during which the VGA Port will output 0 volts on all channels and thus move the electron beam to the lower left corner of the scope screen. | * A problem of using the VGA port is the blanking periods during which the VGA Port will output 0 volts on all channels and thus move the electron beam to the lower left corner of the scope screen. | ||
- | * A bright dot appears there and can potentially damage the phosphor coating of the CRT. It should be moved outside the visible area using the horizonal/vertical controls of the scope. | + | * A bright dot appears there and can potentially damage the phosphor coating of the CRT. It should be moved outside the visible area using the horizontal/vertical controls of the scope. |
* Example vector image for direct output on the VGA port: {{: | * Example vector image for direct output on the VGA port: {{: | ||
Zeile 37: | Zeile 36: | ||
xrandr --addmode VGA1 scope | xrandr --addmode VGA1 scope | ||
xrandr --output VGA1 --mode scope --right-of < | xrandr --output VGA1 --mode scope --right-of < | ||
- | * ffmpeg is needed | + | * ffmpeg is needed |
- | * opencv | + | * opencv3 |
- | * The modified mpv media player with the custom filters can retrived with '' | + | * The modified mpv media player with the custom filters can retrived with '' |
* Example usage command: | * Example usage command: | ||
- | | + | < |
- | * With openCV edge detection:< | + | * The optimal values for low and high can depend on video source. Just try a few. |
- | * The optimal values for t1 (bzw. low) and t2 (bzw. high) can depend on source | + | |
* The canny edge detection is a CPU hog. Because of this '' | * The canny edge detection is a CPU hog. Because of this '' | ||
Zeile 58: | Zeile 56: | ||
< | < | ||
+ | ==== Screen Capture ==== | ||
+ | {{ : | ||
+ | |||
+ | This works with both raster and pure vector mode. The Image on the right is made using raster mode. | ||
+ | |||
+ | < | ||
+ | |||
+ | Video input devices like TV, Webcams and more can be accessed as well: | ||
+ | < | ||
===== Digital oscilloscopes ===== | ===== Digital oscilloscopes ===== | ||
Zeile 75: | Zeile 82: | ||
* Use a low memory depth (e.g. ~7kPoints). | * Use a low memory depth (e.g. ~7kPoints). | ||
* Try adjust the DSO sample rate to find the spot of minimal noise. | * Try adjust the DSO sample rate to find the spot of minimal noise. | ||
+ | |||
+ | ===== Our other VGA to Oscilloscope Projects ===== | ||
+ | * [[https:// | ||