2 ms·
> The artifacts are specifically a result of pixels becoming corrupted during the compress-decompress cycle, and feature most prominently where the source funct
by mpyne 14y ago
> The artifacts are specifically a result of pixels becoming corrupted during the compress-decompress cycle, and feature most prominently where the source function has discontinuities. Treating a pixel as a point sample of a smooth function removes our ability to consider such things.
The pixels are not "corrupted", the source pixels are instead deliberately replaced by a pixel set that compresses better. The way the JPEG encoder chooses this replacement pixel set is why you see the artifacts in areas with significant edges: JPEG deliberately removes the image counterpart to high-frequency data, much the same way that MPEG audio encoding removes high-frequency audio.
What you see is the "Gibbs effect" in the visual realm from deliberately throwing away that high frequency data, which is not at all due to "treating a pixel as a point sample" (since as before, that's the very definition of a pixel, a value at a point). The solution is easy enough: force JPEG to keep the extra data, by driving the quality to the maximum permitted level (at the penalty of horrible compression).
JPEG has other artifacts too (e.g. you can see the block size used by the encoder), but those are also not inherent to treating pixels as point samples but are instead inherent to the design of the encoder.
- sesqu 14y agoDeliberate corruption is still corruption. As for your comparison to MPEG audio, I feel that's symptomatic - high-frequency components are perceptually negligible in audio, but stand out in video (until the stroboscopic effect). You wouldn't want to use the same encoder for both. The Gibbs effect is absolutely due to discontinuities not being gracefully handled by a Fourier transform. Luckily point samples from a continuous function don't have to worry about that like a fully defined discrete function might, which is why I expect people want to define pixels as the former.