Read Privacy, Terms, and Disclaimer — especially for cookies, ads, and third-party APIs.

← Blog

2026-06-10

Block noise triage: why grainy images explode in size

Block-adaptive codecs need a triage step: classify regions as smooth, edge-heavy, or noise-heavy before picking predictors. RGBV3D research calls this noise-aware routing. When triage mis-labels grain as smooth, predictors fail and entropy coding spends bits aggressively. When triage correctly marks noise, the encoder may fall back to classic-like paths—accepting larger files instead of pretending compression. Why noise is expensive: random micro-variation destroys spatial correlation. Direction codebooks help only when neighboring pixels agree. Sensor grain, scanner CCD noise, and JPEG artifacts at quality 85 behave like random fields at 8-bit precision. Residuals must carry almost full channel information per pixel, so the container grows toward raw size plus headers. High-noise strategy in our docs: detect variance thresholds per block, skip vector-v2 shortcuts, optionally store raw mini-blocks for worst cases. The benchmark page’s “film grain” and “scanned document” rows demonstrate expansion vs PNG. We show those rows publicly because hiding bad cases would undermine the lossless narrative. User-facing preset idea on the web tool: choose “photo / scan / screenshot” before encode. Screenshot mode biases vector-v2; photo mode biases classic with conservative predictors. You still get lossless output; you do not get magical smaller-than-PNG promises. If you archive mixed albums, do not batch-convert everything to .rgbv3d without per-file measurement. Keep PNG masters for noise-heavy shots; experiment with RGBV3D on UI assets and diagrams where structure is stable. This selective workflow matches how engineers actually manage archives— and it is the opposite of cookie-cutter “drop all files here” tool spam. Think of triage as routing, not beautification: it decides whether a block takes a vector shortcut, a predictive path, or near-raw storage under a lossless constraint. Mis-labeling smooth regions inflates residuals; over-conservatism abandons codebook gains that were available. Freeze thresholds on a public benchmark set so “looks good today” does not become “breaks tomorrow” when the corpus shifts.