<p>The technique is called <strong>halftone</strong>.  Achieving continuity must be done through subsampling / super-sampling, but the essence of the algorithm goes like this.</p>
<p>Imagine walking across a horizontal line of the image accumulating energy from each input pixel as you go.  Once you have accumulated some threshold amount of energy in the accumulator, emit a single pixel, and then reduce the energy stored in the accumulator by a constant amount.</p>
<p>In code, that would be something like:</p>
<pre><code>for (int y = 0; y &lt; height; ++y) {
    double accumulator = 0.0;
    for (int x = 0; x &lt; width; ++x) {
        accumulator += input[x, y];
        if (accumulator &gt;= 0.0) {
            output[x, y] = 1.0;
            accumulator -= K; // try values like 5.0 or more for K.
        }
    }
}
</code></pre>
<p>The larger <code>K</code> is, the more energy must be accumulated before outputting a pixel, and hence, the more horizontal distance there will be between the lines.  If K is 1, that's actually a naïve approach to the <em>dither</em> algorithm.</p>
<p>Supersample to achieve continuity.  You can also emit discrete (x,y) points instead of rendering an output pixel directly and then render a new image by rendering a vertical curve passing through the nth point generated of each scanline.</p>
<p>Perform the operation discretely on separate colour channels to get what you described as the &quot;chromatic aberration&quot; effect.</p>
<p>The effect degenerates the more complexity you encounter in the image on a single line.  For example, after just two eyes on the same line, the lines are extremely wavy at the right of your example image.  <a href="https://www.shutterstock.com/image-vector/vector-oscilloscope-color-glitch-art-illustration-1753357889" rel="nofollow noreferrer">Here is the effect exaggerated even more</a>.</p>

CC BY-SA 4.0
2021-04-06T18:39:13.173Z
2021-04-06T18:39:13.173Z
Wyck
<p><a href="https://i.sstatic.net/8ZOxz.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/8ZOxz.jpg" alt="enter image description here" /></a></p>
<p>Some underlying portrait above is glazed over with a series of vertical lines that neatly follow the contours of the face. What is this effect called and how can it be replicated, step-by-step, in Adobe Photoshop or other software? plus, how can the gap between the lines be controlled?</p>
<p>Also is the color scheme due to chromatic aberration, or just simple RGB channel separation?</p>

CC BY-SA 4.0
2021-04-06T14:57:29.423Z
If you go into photoshop and do a horizontal linear motion blur of about 40 pixels, that does half the work of recovering the original.
Wyck
<line-drawing><photometric><color-separation>
What is this vertical line contour effect in glitch art called?
user610620
# What is this vertical line contour effect in glitch art called?

(Asked by: username_0 on 2021-04-02)

[![enter image description here](https://i.sstatic.net/8ZOxz.jpg)](https://i.sstatic.net/8ZOxz.jpg)

Some underlying portrait above is glazed over with a series of vertical lines that neatly follow the contours of the face. What is this effect called and how can it be replicated, step-by-step, in Adobe Photoshop or other software? plus, how can the gap between the lines be controlled?

Also is the color scheme due to chromatic aberration, or just simple RGB channel separation?

**Tags:** line-drawing, photometric, color-separation

> **Comments:**
> **username_1**: If you go into photoshop and do a horizontal linear motion blur of about 40 pixels, that does half the work of recovering the original.  

---

## 1 answers

### Answer by username_1 on 2021-04-06. Score: 1

The technique is called **halftone**. Achieving continuity must be done through subsampling / super-sampling, but the essence of the algorithm goes like this.

Imagine walking across a horizontal line of the image accumulating energy from each input pixel as you go. Once you have accumulated some threshold amount of energy in the accumulator, emit a single pixel, and then reduce the energy stored in the accumulator by a constant amount.

In code, that would be something like:

```
for (int y = 0; y < height; ++y) {
    double accumulator = 0.0;
    for (int x = 0; x < width; ++x) {
        accumulator += input[x, y];
        if (accumulator >= 0.0) {
            output[x, y] = 1.0;
            accumulator -= K; // try values like 5.0 or more for K.
        }
    }
}

```

The larger `K` is, the more energy must be accumulated before outputting a pixel, and hence, the more horizontal distance there will be between the lines. If K is 1, that's actually a naïve approach to the *dither* algorithm.

Supersample to achieve continuity. You can also emit discrete (x,y) points instead of rendering an output pixel directly and then render a new image by rendering a vertical curve passing through the nth point generated of each scanline.

Perform the operation discretely on separate colour channels to get what you described as the "chromatic aberration" effect.

The effect degenerates the more complexity you encounter in the image on a single line. For example, after just two eyes on the same line, the lines are extremely wavy at the right of your example image. [Here is the effect exaggerated even more](https://www.shutterstock.com/image-vector/vector-oscilloscope-color-glitch-art-illustration-1753357889).


---

