The first threshold maps were designed by hand to minimise the perceptual difference between a grayscale image and its two-bit quantisation for up to a 4x4 matrix.
It can be proven that for matrices whose side length is a power of two there is an optimal threshold matrix.
While the metric for texture that Bayer proposed could be used find optimal matrices for sizes that are not a power of two, such matrices are uncommon as no simple formula for finding them exists, and relatively small matrix sizes frequently give excellent practical results (especially when combined with other modifications to the dithering algorithm).
This lack of normalization slightly increases the average brightness of the image, and causes almost-white pixels to not be dithered.
Because the algorithm operates on single pixels and has no conditional statements, it is very fast and suitable for real-time transformations.
Additionally, because the location of the dithering patterns always stays the same relative to the display frame, it is less prone to jitter than error-diffusion methods, making it suitable for animations.
Because the patterns are more repetitive than error-diffusion method, an image with ordered dithering compresses better.
Ordered dithering is more suitable for line-art graphics as it will result in straighter lines and fewer anomalies.
The values read from the threshold map should preferably scale into the same range as the minimal difference between distinct colors in the target palette.
This allows expressing each distinct tone of the input with different dithering patterns.
[citation needed] The above thresholding matrix approach describes the Bayer family of ordered dithering algorithms.
The Void and cluster algorithm uses a pre-generated blue noise as the matrix for the dithering process.
[5] The "voids-and-cluster" method gets its name from the matrix generation procedure, where a black image with randomly initialized white pixels is gaussian-blurred to find the brightest and darkest parts, corresponding to voids and clusters.
After a few swaps have evenly distributed the bright and dark parts, the pixels are numbered by importance.
[6] This algorithm can be extended to make animated dither masks which also consider the axis of time.
[7] Simulated annealing can generate dither masks by starting with a flat histogram and swapping values to optimize a loss function.
The algorithm can also be extended over time for animated dither masks with chosen temporal properties.