• Abstract
  • Pixel inversion and temporal dithering might be using the same mechanism

I made a possible discovery that I thought might be helpful for this community. Some devices (not all devices) may be combining pixel inversion and temporal dithering into a single hardware solution. So as the device sends positive and negative current through the pixels (for pixel inversion), it intentionally alters the amplitude of that current in order to produce a different shade of red, green or blue.

One interesting side effect, if true, is that it would allow you to measure temporal dithering using a sensitive photodetector, oscilloscope and a pixel inversion site such as Lagom's site, Techmind's site or this site: https://pixelinversion.com/

Example: suppose we want to display #00F100, but the panel is only capable of #00F000 and #00F200. Using one of the pixel inversion layouts, the device would supply half the pixels with a positively-charged #00F000 and the other half of the pixels with a negatively-charged #00F200. Then a fraction of a second later, it would do the opposite so that each pixel displays #00F000 for half the frame and #00F200 for the other half the frame.

I noticed this while testing pixel inversion. On two of the devices I tested (I tested about 20 devices overall), the pixel inversion would look much different for similar colors. You could visibly see it get worse and you definitely see the differences in the oscilloscope readout.

I have four oscilloscope screen shots for you. A few notes:

  1. All measurements taken at 330x zoom

  2. Formula for flicker is (max-min)/(max+min)

  3. Colors I used:

    #00f400 = RGB(0, 244, 0)

    #00f300 = RGB(0, 243, 0)

    #00f200 = RGB(0, 242, 0)

First, here's a control screen shot. Here's the output of the oscilloscope when a plain green image is measured. The graph for all three shades (#00F400, #00F300, and #00F200) looks the same, so I only included #00F400:

Second, here's the output of the oscilloscope when the pixel inversion pattern is measured with a particular shade of green (#00F400). In this case, there isn't a whole lot of fluctuation:

Third is the same as the second, except for using one shade darker green (#00F300). You can see that the level of fluctuation increases significantly:

Fourth is the same as the second, except for using two shades darker green (#00F200). You can see that the level of flicker is in between the second and third:

I went through all 255 shades of green. Except for the really dark shades of green (#000900 and below), where I couldn't really get any kind of reading, every shade of green had a pattern similar to one of the three screen shots above. My theory is that my device can natively display #00F400, that it needs (or chooses) to do a little bit of temporal dithering to display #00F200 and that it needs (or chooses) to do a lot of temporal dithering to display #00F300.

I'd love to hear any feedback.

I did some more exploration of this idea and came to a slightly different conclusion.

By displaying a 4x2 checkerboard pattern (same as what you'd use to test for pixel inversion - half the pixels green and the other half black), I was able to get my monitor to visibly show temporal dithering. I could literally see the screen flashing, similar to what you'd see for pixel inversion.

Here's what the waveform looked like:

I'm pretty sure this was due to temporal dithering and not pixel inversion:

  1. I tested all 256 shades of green. According to my notes, this flickering only happened for 90 colors, which is almost exactly the number of colors my monitor doesn't support (it supports 167 colors so it must dither the other 89 colors). My guess is I made a mistake in my notes for one of the colors or maybe my contrast setting didn't use all 167 available colors. More info on that below.
  2. You can see that the waveform is quite different compared with the waveforms of pixel inversion in the previous post.
  3. The flickering happened at the same time for two grids: a 4x2 grid and a 4x2 grid that was offset by one pixel. Pixel inversion would only happen for one or the other at any given time.

One weird thing is that my screen would either show pixel inversion flickering or the dithering, but not both at the same time. Once the size of the checkerboard got above about 400px x 200px (very roughly), the pixel inversion flickering would go away and the dithering would start.

The other weird thing is that if I adjusted the contrast, different colors would show temporal dithering. So your monitor might natively display #00F400 at 100% contrast, but at 99% contrast it would have to dither to get that color.

    GregAtkinson it supports 167 colors

    Whoops… I just realized that 167 means 16.7 million….

    I still think I'm able to see temporal dithering, but it's also possible that I'm just seeing a different kind of pixel inversion than I'm used to.

    2 months later

    Have you found any monitors that don't have inversion present or at least extremely minimal? I'd imagine OLED would be the only option where it doesn't exist?

    dev