Need help with knusperli?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

google
433 Stars 25 Forks Apache License 2.0 11 Commits 7 Opened issues

Description

A deblocking JPEG decoder

Services available

!
?

Need anything else?

Contributors list

# 167,339
Haskell
Rust
Shell
Apache ...
6 commits
# 3,818
emscrip...
wasm
SQL
SQLite
2 commits
# 216,333
apache
cas
authent...
Shell
1 commit

Knusperli

The goal of Knusperli is to reduce blocking artifacts in decoded JPEG images, by interpreting quantized DCT coefficients in the image data as an interval, rather than a fixed value, and choosing the value from that interval that minimizes discontinuities at block boundaries.

a traditional JPEG decoder (Imagemagick 7.0.8-59)

Knusperli
baboon JPEG, zoomed baboon Knusperli, zoomed
baboon JPEG baboon Knusperli

Building

Knusperli builds with Bazel:

CC=gcc bazel build :knusperli
bazel-bin/knusperli input.jpg output.png

Details

A JPEG encoder quantizes DCT coefficients by rounding coefficients to the nearest multiple of the elements of the quantization matrix. For every coefficient, there is an interval of values that would round to the same multiple. A traditional decoder uses the center of this interval to reconstruct the image. Knusperli instead chooses the value in the interval that reduces discontinuities at block boundaries. The coefficients that Knusperli uses, would have rounded to the same values that are stored in the JPEG image.

Disclaimer

This is not an officially supported Google product.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.