Previous

Next

2-  Frequency domain investigation and Blue Noise

 

Representing signals in the frequency domain can often simplify complexity seen in the spatial domain. This is indeed the case with dither patterns. It allows us a mean to examine the distribution of energy and its consequences on the quality of the patterns. As it is the flat regions of an image where the nature of dither is most important, the focus will be on the power spectrum of patterns that result from the dithering of a single fixed gray level. The DC or frequency center point contributes to the macroscopic average, or gray level, of the dither pattern. As this datum is already known, it contributes to nothing to aiding our interpretation of the nature of the distribution of pixels that make up the dither pattern, and so is omitted in resulting plots.

This turns out to be equivalent to the power spectrum of the quantization error between the original image and the dithered one, because for a uniform gray level image, they are scaled versions of one another.

 

However two dimensional spectral plots can also afford to be made more succinct. Most well formed patterns share the characteristic of being isotropic. This leads to a metric that summarizes the spectrum radially. Figure X shows the segmenting of a spectral period into concentric annuli. Averaging the power spectrum in each annulus results in a radially averaged power spectrum, where these averages are plotted against the radial frequency, the radial distance from the DC center point of the annulus. As with the horizontal or vertical spatial frequency, this radial frequency is in units of inverse spatial sample periods.

Tadial frequency can go as high as 1/√2 at the high frequency corners ; these high frequency corners correspond to a checkerboard pattern, the highest 2-D pattern possible.

The power spectrum also needs to be normalized for the gray level g, which we will specify as ranging grom g=0 (black) to g=1 (white). Spectral energy increases as the number of minority pixels in a bitonal pattern increases, peaking at g=0.5, and so the spectral values are divided by the gray level variance.

 

Figure X shows the measured radially averaged power spectrum for white noise patterns. Using the normalization described above, we can plot the spectra for different gray levels on the same plot, and compare them.

 

 

 

The spatial contrast sensitivity function is shown in Figure X

In order for the quantization error to be perceived as little as possible, we see that we must avoid frequency components in the low frequencies, because the high frequencies are not perceived by the human vision.

The viewing distance is related to the width of the CSF, and we can relate the viewing distance to the principal frequency at a particular gray level in the case of Bayer dithering to determine how far we have to be from a display not to see the artefacts.

 

This acknowledges the optimality of  the Bayer dithering matrix among all ordered dither matrices. However, the structured natured of this is reflected in the spike in the spectrum at the end of the range, for all gray levels.

 

The kind of spectrum we are looking for is often referred to in the literature as “blue noise”. Ideally, a well-formed dither pattern should have the unstructured nature of white noise without the low frequency components.

 

I describe now the process for building a blue noise mask, along with the result of my experiments.

 

A blue noise mask is a template, usually of smaller size than the image (which doesn’t introduce any problem since it is built with wrap-around properties, as we shall see). A blue noise mask is independent from the image to be halftoned.

We want to design a matrix with coefficients ordered in the order according to which the pixels are to be turned on, as the gray level increases. The mask can be viewed as a collection of dot profiles, the binary matrices obtained by thresholding the mask with a certain gray level g, for all values of the gray level.

The dot profiles have to be related to one another, and the relationship can be expressed in this way : the dot profile for a gray level g1>g2 is to be designed from the dot profile of g2 such that all pixels turned on in the first dot profile are also turned on in the second. This condition cannot be explained by spectral consideration, because we have only properties for the spectrum of a fixed gray level. However we can understand it the following way : If two different gray levels are present in an image, the boundary between those should not introduce any discontinuities in the dot repartition. Thus, the profiles of the higher gray level should be include the dots presents in the lower one.

 

The actual mask design comprises three main phases. First, we design a dot pattern for a certain gray level, which is arbitrary, but presents the characteristics of blue noise.

To do this, I started with a white noise pattern, and improved it to get blue noise by moving the pixels one at a time, from a very dense region, to the less dense. I have used a gaussian filter to detect high and low densities.

Then we have to iteratively generate the dot profiles for the other gray levels. From our starting point, we first generate the ones corresponding to the gray levels below the first one, and then the ones above it, both starting from the initial blue noise pattern. For both ways, I still use my void/cluster finding filter.

 

I believe the size of the mask should be chosen in relation to the average area of uniform gray levels, such that we never see any regular pattern reproduced across the image. What that means is that we have to relate the spectrum of the original image to the spectrum of the quantization error in some way.

 

MATLAB Handle Graphics MATLAB Handle Graphics