Популярният формат за изображения JPEG ще претърпи сериозна промяна. Снимки и и други изображения, съхраняване в JPEG, ще заемат значително по-малко място, благодарение на новия кодек Jpegli, създаден от Google. Разработчиците обещават до 35% по-ефективна компресия при запазване на качеството.
Google е създал нова библиотека за кодиране на JPEG изображения, става ясно от публикация в официален блог на компанията, посветен на софтуера с отворен код. Разработката, наречена Jpegli, осигурява до 35% по-високи нива на компресия от традиционните кодеци, като същевременно поддържа отлично качество на изображението и обратна съвместимост със съществуващите кодеци.
Внедряването на библиотеката ще позволи на разработчиците на уебсайтове да спестят дисково пространство, да облекчат комуникационните канали и да осигурят на посетителите по-високи скорости на зареждане на страници, подчертава Google.
Проектът е написан на езика за програмиране C++ и е публикуван в хранилището libjxl на GitHub. Изходният код на библиотеката е отворен и се разпространява под лиценз на Google, подобен на BSD.
JPEG е популярен формат за растерни изображения, публикуван през 1992 г. Той позволява съхранение на изображения в компресиран вид със загуба и без загуба на качество. Благодарение на високото съотношение на компресия, което JPEG предлага, форматът стана много популярен в интернет.
Проектът включва редица нови техники, насочени към намаляване на шума и подобряване на цялостното качество на изображението. По-специално, Jpegli използва адаптивната евристика за квантуване от референтната реализация на кодека JPEG XL.
В допълнение, експертите на Google са въвели подобрени алгоритми за избор на матрици за квантуване в библиотеката, точно изчисляване на междинните резултати и възможност за използване на по-„напреднали” цветови пространства.
Благодарение на всички тези нововъведения, Jpegli-кодирани изображения във формат JPEG могат да се показват на екрана с помощта на всеки съществуващ софтуер – браузъри, графични редактори и програми за преглед.
Библиотеката включва енкодер и декодер, който отговаря на JPEG стандартите и е съвместим с libjpeg-turbo и MozJPEG, две други високопроизводителни реализации на енкодер на ниво API и ABI. Последният е създаден от Mozilla, разработчика на браузъра Firefox.
Разработчиците на Jpegli твърдят, че тяхната библиотека дава по-добри резултати за компресиране на изображения със загуба на качество, в сравнение с конкурентните енкодери. Картинките изглеждат по-отчетливи и съдържат по-малко видими артефакти – всичко това благодарение на по-точните изчисления и използването на ефективни психо-визуални методи.
Въпреки по-привлекателното съотношение качество/компресия, в сравнение с други библиотеки, Jpegli гарантира бързо кодиране и декодиране, твърди Google. Производителността не изостава от споменатите по-рано libjpeg-turbo и MozJPEG.
Jpegli позволява кодиране на изображение с до 10 бита на компонент. Традиционните кодеци, като правило, поддържат само 8 бита на компонент, което се отразява на крайното качество на компресираното изображение. Този недостатък е ясно видим в изображения, съдържащи градиенти (плавен преход от един цвят към друг), където се наблюдава характерен артефакт под формата на ивици.
За да се възползват от 10-битовия подход, разработчиците на софтуер за преглед на изображения ще трябва да направят някои промени в своите продукти.
За да оценят колко по-добре се справя Jpegli от другите библиотеки, експертите на Google са пакетирали набора от изображения Cloudinary, използвайки Jpegli, libjpeg-turbo и MozJPEG в JPEG файлове. Всяка оригинална снимка е представена в няколко копия наведнъж с различни битрейтове.
След това група от хора е помолена да сравни изображения от различни кодеци по двойки и да избере по-добрите. За да обобщят получените резултати и да ги представят в разбираема форма, експертите на Google анализират данните с помощта на метода Elo (използван за оценки на играчите в шаха).
ЕЛО-то може да се прилага към всякакви спортове, където има двубой. Примерно има сайт, където изчисляват ЕЛО-то на тенисистите (и там към момента Гришата е 5-ти, а не 9-ти, както е в ранглистата). Обаче ми е малко странно как се прилага за сравняване на картинки. В случая със спорта всички стартират с някакво условно ЕЛО и с времето като играят и печелят, ЕЛО-то им се повишава а на противника се намалява. Като разликата в ЕЛО-то има значение – за броя точки. Като биеш силни, печелиш повече точки. Но това е като всеки може да играе с всеки друг. И има развитие във времето. А картинките са непроменени и освен това се сблъскват само на фиксирани двойки.