Ordered
dithering
a)
White noise dithering
Perhaps the first solution that comes to mind in order to try and recreate
the local average of the intensities is to use the most common type of noise,
white noise, in order to vary the threshold. We use a uniform distribution
from 0 to 255. This way, we can recreate the noise impression. Here is what
we get :
Three main remarks. First, when seen from far enough, it is recreating the
continuous grayscale, which is what we were aiming at.
Second, an important drawback of this method is the nature of the noise,
which confers the grainy aspect of the image, and is very visually disturbing
.
Finally, it is blurring the image more than our eyes do and by this way,
information is lost.
I tried to sharpen the image as a pre-process to white noise dithering with
a Laplacian filter.
Isharp[x,y]
= I[x,y] – β.L[x,y]*I[x,y]
Here is what I get, somewhat an improvement, but still has this disturbing
grainy aspect
b)
Clustered-dot dithering
Clustered-dot halftones are those that we commonly see in mass hard-copy
publications produce by offset printing, such as in newspapers, magazines
and books. As opposed to dispersed dot patterns, where the addressability
of each pixel is used, the pixels in clustered dot pattern are nucleated in
groups in regular intervals. Figure X illustrates an example of this type
of halftone both for grayscale and color images.
This process has a main advantage, which is that it is very robust against
differences among printers characteristics. In the case of offset printing,
there is a minimum size dot that will hold ink, so high resolution dispersed
dot screens will not work.
Many models of the human spatial contrast sensitivity function illustrate
the property that the visual system is more sensitive to orientations at 0
and 90 degree, and less acute at 45 degrees, so that’s what has been used
from the earliest days of halftoning.
Here is how we build such a dither template and we see the pattern that
it produces when used to reproduce a constant gray level. The dither template
is a matrix specifying the order in which pixels will be turned on as gray
level increases. It is periodic and is thus replicated throughout the entire
image. In this figure, the threshold value ordering begins at the center of
the blue spirals, until half of the array elements are assigned, then continues
from the outside of the red spiral.
Here we can derive a formula to know at which viewing distance the pattern
is not going to be seen anymore by the eye, depending on the display/printer
resolution in dots/pixels per inch, and the size of the dither template.
In the case of the tests performed (figure ), you have to look at it at a distance of :
Using the fact that the frequency discrimination of the eye drops at about
6 cycles per degree.
In color printing, the color components are rotated at different angles
to avoid moiré patterns, black (most apparent color) is set at 0°, Yellow
(least apparent) is set at 45°, and the two other colors, Magenta and Cyan
are set at +/-15°.
c)
Recursive tessellation (Bayer dithering)
For displays or printers that are not of the highest resolution, it is desirable
to spread the black and white dots more over the space, and in fact we can
search the optimal template to produce a distribution of black and white pixels
all over the screen, for any gray level. The procedure to build such a template
is a particular case of the blue noise mask construction, so I won’t go into
great detail. Let’s just look at the output of this process.
It is very visually pleasing. The drawback of this deterministic process
is precisely its deterministic nature. We have regular patterns and we can
see straight line and crosses all across the image.
We’ll see with the blue noise mask how to keep the same properties that
make it visually pleasing without being so straight.
As before, I’ve tried to optimise it for color images, and a simple enhancement
that I’ve thought about is to scroll the template vertically
and horizontally before we apply it the the different color components. An
optimal scrolling value can be found by optimally distributing the luminance
across the space. Since the green component gives more luminance than the
two others, here is what I end up with for the 4x4 dimensions.