5 ms·
These days dithering is a lost technique other than as an arty effect. It's a shame, digital video playback would really benefit from it as a way to eliminate p
by NelsonMinar 2y ago
These days dithering is a lost technique other than as an arty effect. It's a shame, digital video playback would really benefit from it as a way to eliminate posterization.
- 01HNNWZ0MV43FF 2y agoI assume those 10 and 12 bit codecs do it on playback, it's just that free video services bit-starve the encoders
- adgjlsfhk1 2y agoEspecially with AV1, 10 bit color can lead to a cleaner image with fewer bits than 8 bit. The quantization tables mean that you don't have to store the 10 bit info for the high frequency parts, but just having it available makes things like I frames work better (because randomly shifting blocky output is a worse predictor than the underlying smooth signal).
- zamadatix 2y agoDithering is usually applied as pre or post processing step to encoding/decoding because accurately encoding dither itself actually takes more bits than just encoding without banding would in the first place. Nowadays the easiest way to sidestep banding is to use >8 bit encoding and a codec with good psycho-visual enhancements & perceptual quantization.
- Sharlin 2y agoOf course as post-processing step, yes. Dithering is not uncommon in games to avoid posterization of gradients (which can happen even with 24-bit colors without any extra quantization) so it would be pretty natural for media players to do it as well. And doing it in the player would mean older videos without fancy 10-bit PQ stuff would benefit as well.
- tempoponet 2y agoI'd be curious to know more about how this is done in games. I have noticed that if you get up close to the surface of a car in a lot of modern racing games it has a very noisy/sparkly shader. I know some paint does look like this, but I always suspected this was to prevent banding by creating sub-pixel noise.
- SaberTail 2y agoAlso e-ink displays. For most of the ebooks I've read recently, the images end up posterized to the point of near illegibility.
- ddingus 2y agoDefinitely! The better ones have really high resolution, which compliments this dither technique perfectly.
- doublesocket 2y agoWe've very recently been testing multiple dithering techniques for graphics we send as bitmaps to a TIJ printer that's used as a dynamic labeller.
- semireg 2y agoIt’s still used every day in low-DPI label printing where dithering and pixel alignment are very important.
- Tommix11 2y agoAlso in the retro computer demo scene is dithering very important. I've seen some outrageously great dithering on C64 demo art.
- makapuf 2y agoAlso everywhere you want smooth gradients on any application. Go search gradient rendering without banding by example. Dithering will almost certainly be mentioned.
- dahart 2y agoNo, not entirely! Dithering is still very important for print media and for displays. I’m talking about dithering from 16 or 32 bits per channel, e.g. floating point and/or HDR, down to 8 bits per channel. The dithering techniques like Floyd Steinberg and Atkinson taking 8 or 4 bits per channel down to 1 bit per channel are definitely anachronistic, but not dithering where the goal is 8 bits per channel. I’ve made very expensive mistakes printing poster-sized art without using dithering, and you can end up with visible color-banding in gradients in the print that aren’t visible on a display. This is why we still need and still have dithering. This is the reason that Photoshop quietly dithers by default when you convert from 16 or 32 bits per channel down to 8 bits per channel.
- btbuildem 2y agoI've definitely seen color banding on video playback across multiple streaming services. Dithering would've been super helpful in resolving that.
- quietbritishjim 2y agoIf there wasn't the bandwidth to include full colour depth information then there definitely wasn't the bandwidth for the high-frequency pixel data for dithering.
- dahart 2y agoLossy compression is definitely anti-dither, that’s true. I think a lot of the banding you see in streaming is actually bad color handing and/or miscalibrated devices… very dark colors are especially prone to banding and it’s often due to TVs being turned up brighter than they should be, and sometimes due to compression algorithms ignoring color space & gamma.
- adgjlsfhk1 2y agowhat you generally want is rather than lossy compression on top of dithering, to instead use lossy compression of higher bit depth data, and then the decoder can add the dithering to represent the extra bits.
- highlaif 2y ago[dead]
- prewett 2y agoWell, it's more niche, but it's still necessary. For instance, if you write a printer driver you'll need a good dithering algorithm, since you only get pigment on/off (even in CMYK). In fact, for multi-channel dither you do not want a normal error-diffusion algorithm, since it does not give good results for low values of a channel (for instance, rgb(255, 255, 2)). There appears to be active research on new dithering techniques. I ran across libdither [1] which implements more dithering algorithms that you can imagine. [1] https://github.com/robertkist/libdither https://github.com/robertkist/libdither
- dvh 2y agoChrome uses dithering for canvas gradients, or any other operations really. Firefox looks much worse without it.
- SomeoneFromCA 2y agodwm_lut, widely used tool uses dithering
- Etherlord87 2y agoIn Blender, dithering is enabled by default. First of all, it's not exactly true, that 8 bits per channel make it so banding is unnoticeable - but it's very hard to notice; will depend on the area of colors (darker/brigher, redish/bluish...), but also if you dither your gradient in the image, and the image is further processed, the dither will help avoid banding after processing. Of course if you want to process an image, don't save it in just 8 bits per channel, but sometimes you don't know the image will be processed, or choosing the format is not up to you.