Display: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Various tweaks. Added paragraphs derived from Mary Lou Jepsen comments on wikipedia, lightly edited, and converted from first-person.)
(Fix: pixel L always 6 bit. Added links to DCON spec, and to ticket 1017 (discussion of color pipeline).)
Line 20: Line 20:
There are 1200x900 pixels. Each one has a single colored filter behind it. So each pixel is capable of either R, G, or B. Only one. It relies on its neighbors to provide the others. So each pixel has:
There are 1200x900 pixels. Each one has a single colored filter behind it. So each pixel is capable of either R, G, or B. Only one. It relies on its neighbors to provide the others. So each pixel has:
*a fixed hue (R, G, or B),
*a fixed hue (R, G, or B),
*a luminance which can be set (R/G: 6 bit, B: 4 bit)
*a luminance which can be set (6 bit)
*and a chrominance which depends on the relative strength of the room light and backlight.
*and a chrominance which depends on the relative strength of the room light and backlight.
This [http://en.wikipedia.org/wiki/Munsell_color_system Munsell page] has a nice diagram.
This [http://en.wikipedia.org/wiki/Munsell_color_system Munsell page] has a nice diagram.
Line 64: Line 64:
== See also ==
== See also ==
*[[Hardware specification#Display]]
*[[Hardware specification#Display]]
*[[DCON]] and its [[Image:DCON_Specification%2C_V0.8.odt|specification]]
*[[Dealing with Dual-Mode Display]]
*[[Dealing with Dual-Mode Display]]
*[[DCON]]
*[[Talk:Hardware_specification#Display_characterization_.28as_we_outsiders_understand_it.29]] Warning - this has some mistakes.
*[[Talk:Hardware_specification#Display_characterization_.28as_we_outsiders_understand_it.29]] Warning - this has some mistakes.
*[[Munsell]]
*[[Munsell]]
*[http://dev.laptop.org/ticket/1017 #1017 has some discussion of the color pipeline]


[[Category:Hardware]]
[[Category:Hardware]]

Revision as of 17:29, 28 June 2007

This article is a stub. You can help the OLPC project by expanding it.


See Hardware specification#Display.

Understanding the screen

The screen is composed of several layers. Starting at the back, there is a white LED backlight, a 1200x900 grid of color filters, a semi-reflective layer, and a 1200x900 LCD.

The brightness of the backlight can be adjusted. It has (how many?) settings, including off. (include an image of the backlight control)

The semi-reflective layer both reflects room light, and lets the backlight's light out. How much you see of each, depends on the relative strength of the two light sources.

  • In direct sun, you see only reflected light. The backlight setting doesn't matter.
  • In a completely dark room, there is no reflected light. So you only see the backlight, and if you turn it off, you see nothing.
  • In between, you see some mix. You see more backlight if you turn down the room lighting, or you raise the backlight setting. You see less backlight when the room gets brighter, or you lower the backlight setting.

All color is created by the backlight and filters.

There are 1200x900 pixels. Each one has a single colored filter behind it. So each pixel is capable of either R, G, or B. Only one. It relies on its neighbors to provide the others. So each pixel has:

  • a fixed hue (R, G, or B),
  • a luminance which can be set (6 bit)
  • and a chrominance which depends on the relative strength of the room light and backlight.

This Munsell page has a nice diagram.

Consider a single one of those 1200x900 pixels. A red one. If its value is 0, black, then lighting doesn't matter. If its value is 255 (or whatever, fully transparent), then in bright sunlight you see only white, and in a dark room you see fully saturated red. If its value is in between, in bright sunlight you see a gray, and in a dark room you see a grayed (ie desaturated) red.

The display employs something the video encoding experts have done for some time: the human visual system sees higher resolution in luminance (B&W) than chrominance (color): for example MPEG luminance resolution is 4X the chrominance resolution. A key thing to understand is that the ambient light level of the room changes the resolution of the display. The pixel has a reflective part that is B&W, and a transmissive part that is one color: red or green or blue. It should be that a red and a green and blue pixel combine to make a single full-color pixel. Thus the resolution should be 1200/sqrt(3) x 900/sqrt(3) or 693x520. But, when the room is totally dark, the resolution given via standard methods of determining display resolution is approximately 800x600 or about 133 dpi. These measurements were done in a number of ways, and are being written up for publication (some were straight fresnel patterns, other perceptual image detail tests). In a dark room the effect is akin to sub-pixel rendering - we see an improvement in resolution of ~33% via sub-pixel rendering.

With room lights on, an additional effect comes into play: the display has luminance (B&W) information at 200dpi in it's reflective mode, with the room lights on the display also reflects 200dpi in black and white. This increases the effective resolution to about XGA or 1024x768 when using test patterns to ascertain the display resolution. Finally, the laptop can be brought outside into bright sunlight and the screen is still viewable - now the color is barely visible (if the backlight is left on), but on the screen the 1200x900 200dpi resolution is seen crisply and clearly.

So a resolution rule of thumb is: 1200x900 gray (sunlit, or room with backlight off), ~1024x768 color (room with backlight on); ~800x600 closet (total darkness).

For the programmer

The frame buffer is always 1200x900, 200 dpi. Always. What that 200dpi looks like varies a great deal depending on lighting. Lit externally, you see the grayscale pixels on a 1/200 inch grid. Lit internally (by the backlight), the display gains color. Depending on the ratio of external to internal lighting, the pixels vary from pure gray (black-to-white), to tinted, to pure color (black-to-... red, green or blue, depending on the pixel).

Software that uses color has to care about the color "mode" (an unfortunate term, since it's a continuum) because of appearances. In grayscale, a white pixel looks just like its white neighbors. In color, it very much doesn't. If you draw a light-gray line one pixel wide, it may look fine in pure grayscale, and oddly dashed and colored in pure color. And in between... in between. Same thing for fonts. The smallest font you can read in pure grayscale may not be readable in pure color. In between, it might be readable but with color artifacts. Visually, the effect is that you have lower resolution to play with, so your software, intending to be readable, has to draw small things bigger; either all the time, or by noticing the current backlight/sunlight context and adjusting. It can make things bigger by scaling everything (overkill, but Cairo makes it simple), or scaling up only the small things. In practice, the tricky things are small fonts and thin (1-3 pixel) diagonal lines.

For the artist

Appearance will change with lighting conditions. L a b and Munsell color pickers and palettes are helpful for choosing colors. The xo can be colorful. You just have one extra consideration, iso-luminance, to manage.

We need additional links to Lab or Munsell FOSS/web color pickers, and palettes. And a less-brief description of why. MitchellNCharity 10:49, 24 June 2007 (EDT)

Todo

other things which should be mentioned:

LRGB->RGB utility fuction

I think it would be very useful to have an L RGB->L (discard L)ab->RGB python utility function. So you can simply say "give me a color like rgb, but which has a mono value of g". Then code could then work in familiar rgb terms, and grayscale values would be explicit rather than implicit in rgb choice. MitchellNCharity 11:43, 24 June 2007 (EDT)

See also