Gear & Gadgets / Product News & Reviews

Secrets of the Nexus One’s screen: science, color, and hacks

The Nexus One's screen is one of its biggest selling points, but it's also not …

Image hacks and color fringing on the Nexus One

The eye is more sensitive to quantization levels of green light than to levels of red or blue light, which is probably related to the fact that the sun emits more power in the green region of the visible spectrum than in red or blue. (The eye's spatial resolution in each of the three primary colors is approximately uniform.) It's therefore common practice in computer graphics to allocate finer-grained quantization to the green channel where possible: in 16 bit color, the division of bits is usually 5/6/5, meaning the red and blue channels are capable of 2^5=32 different intensities and the green channel is capable of 2^6=64 different intensities.

Because the N1 display has twice the number of green subpixels, more of the spatial variance in luminance is handled by the green channel than the red or blue channels. Also the blue and red subpixels are twice the size of green, making them twice as likely to be illuminated at the perceptual edge of a hard intensity transition than green. Both of these facts together contribute color fringing of its own peculiar kind that's visible around the edges of text on the PenTile display if you look closely enough. This is clearly visible when the test pattern in Figure 3 is viewed at 100% on the N1 screen.

I realized that if I view the test pattern in Figure 3 in the Gallery3D app on the N1, and then pinch-zoom-out to scale the image to slightly greater than 100%, I could get not just green shading but every color of the rainbow, albeit somewhat washed out. I generated a few constantly-varying grayscale stipple patterns to demonstrate this.

Figure 4. Two grayscale stipple patterns (left), and how those patterns appear on the Nexus One when displayed at 100 percent (right). Click for left and right full-size

I then developed a far more nefarious test of color fringing: an algorithm that would take an arbitrary full-color image and generate a pure grayscale stipple pattern that appears colored on the N1 screen. The interesting thing about these images is if you display them at anything other than 100% zoom, the colors disappear and you only see the grayscale stipple pattern.

Figure 5. A pure grayscale stippled image generated by my algorithm, and an approximation of how the image appears on the Nexus One PenTile display when viewed at 100%. Links to higher-res versions: top left, top right, bottom left, bottom right.

Figure 6. Every color of the rainbow can be generated by some grayscale stipple pattern, although the colors can be washed out.

If you want to try this at on your own Nexus One, you can't easily view these images at exactly 100 percent zoom in the browser. It is easiest to download the stipple images [ZIP] to an SD card and display them using the Gallery3D app.

On a final note, Candice Elliot, CEO of Nouvoyance, told me via email that there are numerous register values that can be tweaked to change the behavior of the PenTile display driver hardware. By "reducing the amplitude of the modulation, such that the locally adaptive filter detector is no longer triggered," she claims that these color fringes can be eliminated. So the tricks outlined here are specific to the Nexus One implementation of PenTile technology, and statements here (particularly about color fringing) may not apply to other PenTile configurations. I do have to wonder what the trade-off is if you do turn off the "locally adaptive filter detector", however. And I find it almost impossible to believe that color fringes can be 100% eliminated, given that the display relies heavily upon subpixel positioning.

Full sourcecode for this algorithm, and lots more example images, are available on my blog for anyone who's interested. The method I use to map colors to stipple patterns is just a first rough cut, and the color banding in the above images could be substantially reduced with a bit more work.

Some final thoughts

There's no need sell your phone on eBay after reading this, and don't change your mind about purchasing a Nexus One until you've had a chance to see the screen yourself. You may not even notice or care about the text reproduction issue. Only when compared with an extremely high-res LCD screen like on the Droid are the text fuzziness comments truly noticeable—and that's a high standard to hold the screen to.

The Nexus One screen remains better than the iPhone screen for text reproduction because the overall resolution is much higher, even taking into account the factors I describe. So if the iPhone is your measuring stick, the N1 screen really rocks. Overall, the N1 display is beautiful and vivid with dark blacks and incredible photo reproduction. (I don't even have a problem with the visibility of sunlight viewing of the display which is a frequent complaint.)

My main point about screen resolution in this article is that both the Nexus One and the Droid screen were specced at almost the same resolution so they should look the same (I think this is a fair assumption)—and they simply don't. This article is an attempt to explore why that is in a detailed way. The apparent difference in quality becomes ever more obvious the smaller the text, like when reading an e-book or zoomed-out webpage. Again, you may not even notice or care.

When all is said and done, the Nexus One remains an incredible phone all around. Just remember that specs have normal interpretations that translate into consumer expectations, which is why we're having a discussion about some of the tradeoffs inherent in switching to a non-standard and non-uniform subpixel layout.

Luke Hutchison is an Android hacker and PhD candidate in computer science and computational biology at MIT CSAIL. Follow: Blog/Twitter

Expand full story

You must to comment.