22 Nov 2003 rlk   » (Journeyer)


Like raph, I have memories of Chema from the first Printing Summit. I also had the good fortune to meet him twice more: in Mexico City when I was on vacation, and in Boston when he was here on business. At that last meeting, we finally resolved an issue that had been confusing us ever since the summit.

There's really no way to describe what happened. At least he was doing something he enjoyed.


We're finally on the verge of alpha, although we don't know whether it's going to be 4.4 or 5.0 yet. This last development release (4.3.24) has quite a few goodies jammed into it. I finally did printing to CD's, which some Epson printers can do. The other interesting addition is a few variations on Raph's EvenTone dithering, which I call Hybrid EvenTone and UniTone.

Hybrid EvenTone is a fairly simple variation that reduces the high frequency patterning that EvenTone sometimes produces in light midtones, particularly if only one channel is in use. Like most screening algorithms, EvenTone is usually implemented by comparing a value (the input value plus the error term that's specific to the algorithm) against a constant (typically 0.5): if the value exceeds the constant, the dot is printed. What Hybrid EvenTone does is perturb the "constant" by using a small amount of a fixed dither matrix. In our case, the perturbation from the dither matrix is 1/16 (plus or minus 1/32). This causes dots to be printed slightly out of position. This creates a very slight imperfection in the screen, but it breaks up the somewhat objectionable patterning. I arrived at the value of 1/16 for the perturbation by experiment; that amount of variation is sufficient to break up all patterning but the effect on the smoothness is very minor.

UniTone is more radical. It creates an EvenTone screen based on multiple channels, and then picks the channel to print at each selected position by EvenTone screens on each channel. The channel selected is the one with the best EvenTone value.

The principle behind this is that the eye has difficulty distinguishing the color of isolated small dots, but it easily sees the luminosity. The problem with EvenTone dithering of pale neutral tones is that the dots of each color typically line up, or even overprint, while leaving large expanses of unprinted paper. UniTone dithering spaces these dots apart, creating the impression of more lighter dots.

For this to work, the dots have to be fairly close in luminosity, or else there will be visible holes where light inks are printed. It turns out that yellow is much lighter than any other ink (even light cyan and light magenta), and I therefore obtained best results by dithering every channel except yellow by UniTone and dithering yellow by a separate EvenTone screen.

How well does it work? It varies. With old-style, single drop size printers at low resolution (e. g. the Epson Stylus Photo EX at 360 DPI, which uses something like 40 pl drops), the colors of the drops are easily distinguished and the UniTone screen works poorly. However, on the Stylus C80 at high resolution (3 pl drops, 4 colors) and the Stylus Photo EX (8 pl drops, 6 colors), the improvement is substantial in gray and blue tones. There's less improvement on the Stylus Photo 2200, and sometimes the result is worse; it depends upon whether the printing is unidirectional or bidirectional, and the choice of weave pattern. However, the best results I've obtained with UniTone is better than the best results from EvenTone or Hybrid EvenTone.

I also figured out how to use EvenTone and UniTone screening with multiple drop sizes. The principle applies to any screening algorithm. The method is to pick two candidate drop sizes (small and large) based on the input value, and then to perform the screening based on the small drop size being "off" and the large drop size being "on".

All in all, it will be very interesting to see how other people perceive the differences between 4.2 and 4.3.

Japan-market Printers

It looks like some of the Japan-market printers are coming to the US. The Stylus Photo R300 is a PM-G type printer with 3 pl minimum drop size, and the R800 (which is due out in February) is a PX-G type printer with 1.5 pl drops and red and blue inks. Anyone know good algorithms for RGB->CMYRB?

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!