How it works

One image, step by step

We send a real photo through the KARC pipeline — each step shows its real intermediate result.

1

The original image

Start: a lossless photo, 512×341 pixels, about 512 KB uncompressed.

Original photo, 512×341 pixels
Original · ~512 KB
2

Separate brightness from color

The reversible YCoCg-R transform splits the image into brightness (Y) and color (Co/Cg). The eye sees brightness more sharply than color.

Brightness channel (Y) of the image
Brightness (Y)
Color channels (Co/Cg) of the image
Color (Co/Cg)
3

Store color more coarsely (4:2:0)

Color is stored at half resolution — barely visible, but saves bits.

Image with color resolution reduced to 4:2:0
Color halved · looks almost identical
4

Choose the representation per region

The heart of KARC: each 8×8 block decides for itself — smooth areas are described as a plane (PLANE), detail via DCT. Here KARC picks PLANE for 19.5% of blocks.

Region map: chosen mode PLANE or DCT per 8×8 block
Mode per block
PLANE (smooth) DCT (detail)
5

Round and pack

The coefficients are rounded more coarsely (quantization) and packed compactly with rANS. The ~512 KB become an 8 KB file.

Result: 8 KB · 0.38 bpp
6

Back to the image

The decoder rebuilds the image. The error map (amplified ×6) shows: deviations sit at the edges, the smooth areas stay clean.

Image reconstructed by the decoder
Reconstruction
Error map, amplified ×6: deviations at the edges
Error map (×6)
Result

~512 KB become 8 KB

Original photo, ~512 KB
Original ~512 KB
Image compressed with KARC, 8 KB
KARC 8 KB · PSNR 30,7 dB · SSIM 0,89