Next: Comparisons and Conclusions
Up: Error Diffusion Using Linear
Previous: Other Applications of LPS
By visiting the pixels uniformly all over
the image, LPS allows us to diffuse the
errors in all directions. For example,
we can use the kernel which John Szybist
investigated for his Computer Science Master's Project [3]:
![\begin{displaymath}
D_{\mathit LPS} = \frac{1}{32} \left[
\begin{array}{ccccc}...
... 2 & 3 & 2 & 1 \\
\ & 1 & 1 & 1 & \ \\
\end{array} \right]
\end{displaymath}](img28.gif) |
(18) |
and distribute the error of the processed
pixel P to 20 of its neighbors.
In order not to lose any of the dispersed
error, we need to keep track of any
neighborhood of a zero value in T (a
neighborhood in this case)
and note the positions in the kernel
corresponding to already quantized pixels.
We thus update the diffusion kernel after
each completed inner loop (the y-loop
in our pseudocode), potentially replacing
some non-zero coefficient with a zero and
updating the divisor (initially 32 here)
correspondingly.
Figure 4:
The ramp rendered using LPS error diffusion.
 |
Figure 5:
Linear pixel shuffling error diffusion.
 |
In addition to the Szybist filter (18)
used for
Figs. 4 and 5,
we can use a wide variety of kernels;
several are shown in Fig. 6.
Figure 6:
A variety of kernels for LPS error diffusion.
 |
Ramps rendered using these kernels are shown in Fig. 7.
Figure 7:
LPS error diffusion using kernels:
flat-3, flat-5, flat-7,
ring-5, ring-7, and cross.
 |
Next: Comparisons and Conclusions
Up: Error Diffusion Using Linear
Previous: Other Applications of LPS
2000-04-14