[Wenting Zhang] Apparently a fan of old school STN LCD displays, and thought that various older portable devices manage to run monochromatic LCD panels with multiple gray layers. If the display controller supports multiple bits per pixel, it can use a variety of techniques, such as PWM, to create a pseudo-grayscale image. But, what if you have a monochrome-only display controller? With a sufficiently high pixel clock, can you use software to flip those pixels towards the application of things to give a grayscale image for a reasonable look?
[Wenting] Goes through multiple strategies, showing the image quality of the results in a clear, systematic manner. The first idea is to use a traditional dithering technique. For each pixel, if the gray value is below some threshold, it is set to black. The resulting error value is then propagated to neighboring pixels. The process of propagating this error marks the error throughout the display, so spatially speaking, the values of the pixels are almost identical to the original gray values. However, the pixels are still on or off. This is not enough. The next idea is to PWM the individual pixels on multiple frames, approximately for different gray layers. However, it gives an effective refresh rate of 8 Hz at 120 fps with a 15 frame PWM period and it flickers. Badly. One way to alleviate this is to switch to PDM (Pulse Density Modulation) which selects different length sequences to give the same charge cycle but at higher frequencies, at least for some gray values. Slightly better, but more can be done.
The thing is, our brains do weird things with the visual signals we perceive. Areas with the same gray value will vibrate at the same time and the eye will be attracted to it and feel the twinkle. So, the next strategy was to try to decouple pixels around such regions using the LFSR sequence, which is a noticeable improvement. The original goal was to try to play the video via LCD, so after investigating the spatial deviation, [Wenting] He wondered if he could be confused in time, that is, if the time sequence error could be smoothed out to make the video look better. Using a simple noise-shaper, the video looks remarkably smooth and virtually Flickr-free. Great results! All in all, this is a long video to watch, but so tied to useful techniques that we think it’s definitely worth your time.
We are not unfamiliar with running retro displays with modern hardware, for example CRT, and when we think of retro displays, how about this retro (and quite annoying) touch-enabled CRT in the early 80’s?
Thanks [Philippe] For the tip!