Google Pik Image Format Improves on Lossy JPEG and Lossless PNG

Google Pik butteraugli

JPEG lossy compression is still used on most photos in the Internet, while PNG is still the preferred format for lossless compressions. Back in 2010, Google unveiled WebP to improve on both, but that’s only very recently that I started to see a few webp image on the Internet. The company has been working on yet another image for with Pik lossy/lossless image format designed for high quality and fast decoding. Some of the features enabling high quality: Built-in support for psychovisual modeling via adaptive quantization and XYB color space 4×4..32×32 DCT, AC/DC predictors, chroma from luma, nonlinear loop filter, enhanced DC precision Full-precision (32-bit float) processing, plus support for wide gamut and high dynamic range Features allowing faster decoding over 1 GB/s multi-threaded: Parallel processing of large images SIMD/GPU-friendly, benefits from SSE4 or AVX2 Cache-friendly layout Fast and effective entropy coding: context modeling with clustering, rANS Google Pik is royalty-free, and is said to achieve perceptually lossless encodings at …

Optimizing JPEG Transformations on Qualcomm Centriq Arm Servers with NEON Instructions

Arm servers are already deployed in some datacenters, but they are pretty new compared to their Intel counterparts, so at this stage software may not always be optimized as well on Arm as on Intel. Vlad Krasnow working for Cloudflare found  one of those unoptimized cases when testing out Jpegtran – a utility performing lossless transformation of JPEG files – on one of their Xeon Silver 4116 Server: and comparing it to one based on Qualcomm Centriq 2400 Arm SoC: Nearly four times slower on a single core. Not so good, as the company aims for at least 50% of the performance since the Arm processor has double the number of cores. Vlad did some optimization on The Intel processor using SSE instructions before, so he decided to look into optimization the Arm code with NEON instructions instead. First step was to check which functions may slowdown the process the most using perf: encode_mcu_AC_refine and encode_mcu_AC_first are the main culprits. …

Google Releases Guetzli Open Source JPEG Encoder Generating 20 to 35% Smaller Files Compared to Libjpeg

Google has been working one several front to make data and images smaller, hence faster to load from the Internet, with project such as Zopfli algorithm producing smalled PNG & gzip files, or WebP image compression algorithm that provides better lossless compression compare to PNG, and better lossy compression compared to JPEG, but requires updated support from clients such as web browsers. Google has now released Guetzli algorithm that improve on the latter, as it can create JPEG files that are 20 to 35% smaller compared to libjpeg with similar quality, and still compatible with the JPEG format. The image above shows a close up on a phone line with the original picture, the JPEG picture compressed with libjpeg with the artifacts around the line, and a smaller JPEG picture compressed with Guetzli with less artifacts. You can find out more about the algorithm in the paper entitled “Guetzli: Perceptually Guided JPEG Encoder“, or read the abstract below: Guetzli is …

Lepton Image Compression Achieves 22% Lossless Compression of JPEG Images (on Average)

Dropbox stores billions of images on their servers, most of them JPEGs, so if they can reduce the size of pictures it can have a big impact on their storage requirements, so the company developed Lepton image compression, which – on average – achieved 22% lossless compression on the images stored in their cloud. Compression and decompression speed is also important, since the files are compressed when uploaded and uncompressed on the fly when downloaded so that the complete process is transparent to the end users, who only see JPEG photos, and the company claims 5MB/s compression, and 15MB/s compression, again on average. The good news is that the company released Lepton implementation on Github, so in theory it could also be used to increase the capacity of NAS which may contain lots of pictures. So I’ve given it a try in a terminal window in Ubuntu 14.04, but it can be built on Windows too with Visual Studio: If …

FLIF Lossless Image Format Claims to Outperform PNG, JPEG2000, WebP, and BPG

FLIF, which stands for Free Lossless Image Format, is a new lossless image format that is said to provide better compression ration than PNG, lossless JPEG2000, lossless WebP, and lossless BPG for all king of images including medical images, geographical maps, cliparts and so on. Beside being lossless, FLIF is also progressive, so a lower quality version of the image can be displayed early while the download is still in progress. The developer has uploaded a video comparing how a PNG image and FLIF image would load in a slow network. Other FLIF features include: Lossless compression Greyscale, RGB, RGBA Up to 16 bits color depth per channel (high dynamic range) Interlaced (default) or non-interlaced Animation support “Encoding and decoding speeds are not blazingly fast, but they are in the right ballpark” Based on MANIAC (Meta-Adaptive Near-zero Integer Arithmetic Coding) algorithm developed by Jon Sneyers and Pieter Wuille. (However details don’t seem to be available) FLIF is open source with …

Faster JPEG decoding on ARM with libjpeg-turbo and NEON Instructions

libjpeg-turbo is based on libjpeg, but uses SIMD instructions (MMX, SSE2, etc.) to accelerate JPEG compression and decompression on x86 targets. On such systems, libjpeg-turbo is generally 2-4x as fast as the original version of libjpeg with the same hardware. ARM does not support MMX or SSE2 instructions, but it has its own SIMD instructions processed by the NEON Engine on ARM Cortex Core A5, A8, A9 and A15. ARM claims that “NEON technology can accelerate multimedia and signal processing algorithms such as video encode/decode, 2D/3D graphics, gaming, audio and speech processing, image processing, telephony, and sound synthesis by at least 3x the performance of ARMv5 and at least 2x the performance of ARMv6 SIMD.” Linaro worked on libjpeg-turbo and added NEON support to it. The code is available on launchpad at https://code.launchpad.net/~tom-gall/linaro/libjpeg-turbo Linaro has also provide benchmark result for libjpeg-turbo with a 12 Mpixel image on TI OMAP4 (Pandaboard) using the command: djpeg 12mp.jpeg > /dev/null Non Optimized libjpeg-turbo(5 runs): 2078 …