Команда Google объявила о создании новой библиотеки для кодирования изображений в формате JPEG. Разработка, получившая название Jpegli, по заявлению поискового гиганта, обеспечивает до 35% более высокую степень сжатия относительно традиционных кодеков при охранении высокого качества изображения и обратной совместимости с существующими кодеками.
В Google заявляют, что внедрение библиотеки позволит разработчикам веб-сайтов сэкономить дисковое пространство, разгрузить каналы связи, а также обеспечить посетителям более высокую скорость загрузки страниц.
Проект написан на языке программирования C++ и опубликован в публичном репозитории libjxl на хостине GitHub. Исходный код библиотеки открыт и распространяется на условиях собственной BSD-подобной лицензии Google. В проекте задействован ряд новых техник, направленных на снижение шумов и улучшение качества изображения в целом.
JPEG – популярный формат хранения растровых изображений, опубликованный в 1992 году. Он позволяет хранить данные о картинке в сжатом виде с потерями и без потерь. Благодаря высокой степени сжатия, которую предлагает JPEG, формат приобрел высокую популярность в интернете.
Важно отметить, что Jpegli представляет собой не замену JPEG. Это новая библиотека кодирования JPEG, которая разработана так, чтобы работать быстрее, эффективнее и визуально приятнее, чем традиционный JPEG.
Особенности Jpegli
Jpegli предоставляет полностью совместимый кодер и декодер, соответствующий исходному стандарту JPEG и его наиболее традиционному 8-битному формализму, а также совместимость API/ABI с libjpeg-turbo и MozJPEG.
Когда изображения сжимаются или распаковываются с помощью Jpegli, изображения будут выглядеть более четкими и иметь меньше наблюдаемых артефактов.
Несмотря на улучшение соотношения качества изображения и плотности сжатия, скорость кодирования Jpegli сравнима с традиционными подходами, такими как libjpeg-turbo и MozJPEG. Это означает, что веб-разработчики могут легко интегрировать Jpegli в свои существующие рабочие процессы, не жертвуя производительностью кодирования или использованием памяти.
Jpegli может быть закодирован с использованием более 10 бит на компонент. Традиционные решения для кодирования JPEG предлагают только 8-битную кодировку на компонент, что приводит к видимым артефактам полос в медленных градиентах. 10-битное кодирование и кодирование с большей битностью в Jpegli происходит в исходном 8-битном формализме, и полученные изображения полностью совместимы с 8-битными программами просмотра. 10-битная динамика доступна в виде расширения API, и для ее использования необходимо внести изменения в код приложения.
Jpegli сжимает изображения более эффективно, чем традиционные кодеки JPEG, что позволяет экономить полосу пропускания и место для хранения, а также ускорять веб-страницы.
Разработчики Jpegli утверждают, что их библиотека обеспечивает более качественный по сравнению с конкурирующими кодерами результат при сжатии изображения с потерями. Картинка выглядит четче и содержит меньше видимых артефактов – все благодаря более точным вычислениям и применению эффективных психовиузальных методов.
Для своей работы Jpegli использует ряд новых методов для уменьшения шума и улучшения качества изображения. Это адаптивная эвристика квантования из эталонной реализации JPEG XL, улучшенный выбор матрицы квантования, точный расчет промежуточных результатов и возможность использования более совершенного цветового пространства.