Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I thought I'd heard of all the dithering options from https://tannerhelland.com/2012/12/28/dithering-eleven-algori..., but surprised to read there's another one (https://ieeexplore.ieee.org/document/3288) that was used in this project.


Blue noise dithering seems to be a form of ordered dithering which is better than other forms of ordered dithering, but in terms of quality it is not as good as error diffusion dithering (look up the Wikipedia comparison on the statue of David). But blue noise dithering has the advantage that it can be implemented as a pixel shader, unlike error diffusion. So it can e.g. be used for video games. So I think for the picture frame error diffusion would have been a bit better.


It's called blue noise dithering because it's not ordered. Error diffusion dithering approximates blue noise dithering (poorly, I might add). What error diffusion has going for it is very low overhead, and built-in edge-enhancement if you pick your kernels right.


Wikipedia calls blue noise dithering a form of ordered dithering. Error diffusion indeed looks similar to blue noise dithering, but the amount of preserved detail of blue noise dithering is more like that of Ordered Bayer, lower than error diffusion. At least in the example images on Wikipedia: https://en.wikipedia.org/wiki/Dither


If I CTRL+F for "blue noise" on the wiki page I can find nothing suggesting that (and I promise I haven't ninja-edited anything), so I think there is a misunderstanding somewhere. Could you please cite the passage that gave you this impression, so we can clear up how we end up drawing different conclusions?

EDIT: Oh, I think I see the source of confusion:

> A matrix tuned for blue noise, such as those generated by the void-and-cluster method, produces a look closer to that of an error diffusion dither method.

If you use a dithering matrix it is by definition ordered, yes. Because it is tiling that matrix in a regular pattern. The matrix has been randomized via a blue-noise method. The test image seems to use a 16 by 16 matrix, which is very small - the seams are clearly recognizable.

However, "blue noise dithering" typically refers to generating a blue noise texture as large as the image to be dithered. This article does so, for example:

https://surma.dev/things/ditherpunk/

But yeah, I can understand the confusion now. The wording of the wiki article could be clearer.

PS: in case your curiosity has been piqued, here are some more articles on blue noise and dithering:

https://blog.demofox.org/2018/01/30/what-the-heck-is-blue-no...

https://blog.demofox.org/2019/06/25/generating-blue-noise-te...


Okay, but in the examples in the first link, standard error diffusion (Floyd-Steinberg and Jarvis-Judice-Ninke) still preserves more fine detail than the blue noise method. They only have the disadvantage of creating some line artifacts for gradients into pure white or pure black.

It would have been interesting if the author did additionally apply a low pass (Gaussian blur) filter to all the result images, not just to one homogeneous one in the beginning.


This excellent article on dithering also explains blue noise in a simple way

https://surma.dev/things/ditherpunk/




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: