JPEG2000, JPEG и PNG: что это за форматы, чем отличаются и какой выбрать

Опубликовано:

Три формата используются в разных задачах. JPEG — сжатие фотографий с потерями, такие файлы открывает практически любой софт. PNG — графика без потерь и с прозрачностью. JPEG2000 — высокое качество, сжатие с потерями и без потерь, разрядность выше 8 бит, управление размером файла. Ниже разобрано, чем они отличаются на самом деле, чем открыть файл .jp2 и в каких задачах JPEG2000 не выбирают, а обязаны применять.

1. Коротко: какой формат под какую задачу

Если нужен короткий ответ, он такой.

Выбор формата по задаче.
Задача Формат Почему
Фотография для сайта или письмаJPEGоткрывается везде, файл маленький, скорость кодирования и декодирования очень высокая
Скриншот, схема, логотип, картинка с прозрачностьюPNGбез потерь, есть прозрачность, резкие границы не мылятся
Кадр цифрового кино, медицинский снимок, спутниковый снимок, архивное хранениеJPEG2000чаще всего 12 бит на канал, формат задан отраслевым стандартом
Съёмка 12 или 16 бит, которую нельзя портитьJPEG2000 без потерьJPEG работает с 12 и 16 битами, с потерями или без потерь, размер файла PNG для таких кадров слишком большой
Гигапиксельный снимок, из которого нужен кусокJPEG2000из файла можно достать один фрагмент или уменьшенную копию, не разжимая всё

Дальше — что стоит за этими строками.

Сравнение JPEG и JPEG2000: один и тот же кадр, сжатый до одного размера файла, увеличенный кусок
Один кадр, один размер файла, разные артефакты.
JPEG дробит картинку на квадраты 8×8, и при сильном сжатии они видны; JPEG2000 обрабатывает кадр целиком и вместо квадратов даёт мягкость.

2. Формат и алгоритм: почему это разные вещи

Формат и алгоритм — разные вещи, а называются одним словом. Алгоритм — это метод сжатия: что именно делают с числами, чтобы картинка занимала меньше места. Формат — способ хранения: как сжатые данные и сведения о них разложены в файле. Словом «JPEG» называют и то, и другое: и алгоритм из стандарта ISO/IEC 10918, и файл, в котором лежит результат (на деле это контейнер JFIF или Exif). То же с JPEG2000: алгоритм описан в ISO/IEC 15444, а хранить его результат можно в контейнере .jp2, а можно и вовсе без контейнера — голым потоком .j2k.

Путаница безобидна ровно до того места, где она перестаёт быть безобидной. «JPEG2000 не открывается в браузере» — это про формат: браузер не умеет читать такой файл. «JPEG2000 тяжело считается» — это про алгоритм: вычислений там больше. Первое чинится перекодированием, второе — нет.

У PNG такой двойственности нет: это название формата, а не метода. Дальше в статье слово «формат» местами употребляется по-бытовому, как принято у всех, — но там, где разница важна, она названа прямо.

3. Что такое JPEG

JPEG — самый распространённый алгоритм сжатия фотографий, и он же дал имя расширению файлов, в которых лежит результат. Название идёт от комитета Joint Photographic Experts Group, который собрался в 1986 году; сам стандарт принят в 1992 году как ISO/IEC 10918. С тех пор он не менялся по сути и открывается всем, что вообще умеет показывать картинки.

Как он устроен. Кадр переводится из RGB в яркость и две цветоразностные составляющие, цветоразностные при желании уменьшаются вдвое — глаз этого почти не замечает. Дальше картинка режется на квадраты 8×8 точек, каждый квадрат преобразуется отдельно, мелкие детали огрубляются (квантуются) тем сильнее, чем меньше задано качество. Из-за этого при сильном сжатии видны квадраты 8×8, особенно на резких границах и надписях.

Что важно помнить про JPEG:

4. Что такое JPEG2000

JPEG2000 — стандарт сжатия изображений, принятый в 2000 году как ISO/IEC 15444: в нём описан и алгоритм, и формат файла. Его делал тот же комитет, что и JPEG, отсюда похожее название. На этом сходство заканчивается: внутри это совсем другой алгоритм.

Вместо разбиения на квадраты кадр обрабатывается целиком вейвлет-преобразованием — картинка раскладывается на несколько уровней разрешения: грубая основа и добавки деталей. Дальше коэффициенты квантуются и кодируются по битовым плоскостям арифметическим кодером с контекстным моделированием. Из такого устройства вытекают все свойства формата.

5. Что такое PNG

PNG появился в 1996 году как замена формату GIF и позже был принят как ISO/IEC 15948. Сжатие в нём только без потерь: что записали, то и прочитаете, байт в байт.

Работает он совсем иначе, чем два предыдущих. Никаких преобразований частот: строки картинки предсказываются по соседним и разность упаковывается обычным алгоритмом сжатия данных. На рисованной графике, скриншотах и схемах — там, где много одинаковых пикселей и резких границ, — это даёт отличный результат. На фотографии, где соседние точки почти никогда не совпадают, предсказание работает плохо, и файл получается большим.

Ещё у PNG есть полноценный канал прозрачности, в том числе полупрозрачность. Ни JPEG, ни JPEG2000 этого дать не могут.

6. Чем JPEG2000 отличается от JPEG: общее у них только название

Это первое, что стоит уяснить: JPEG2000 — не «новая версия JPEG». Файл JPEG2000 обычный просмотрщик JPEG не откроет, и наоборот. Разные и алгоритм, и формат файла; совпадает только имя комитета.

JPEG и JPEG2000 по существу
Свойство JPEG JPEG2000
СтандартISO/IEC 10918, 1992ISO/IEC 15444, 2000
Преобразованиедискретное косинусное по квадратам 8×8вейвлет по всему кадру
Артефакты при сильном сжатиивидны квадраты и звон у границкартинка немного размывается, квадратов нет
Сжатие без потерьформально есть, на практике не используетсяполноценный режим, тот же файл
Разрядность8 бит, опционально 12 бит8, 12, 16 бит
Прогрессивная выдачаесть, только по качествупо качеству, по разрешению и по области
Фрагмент без полной распаковкинетесть
Поддержка браузерамивсетолько Safari
Скорость кодированияочень высокаяв разы ниже

Насколько разными бывают артефакты, видно на картинке выше. Мы взяли один кадр, сжали его двумя алгоритмами до одного и того же размера файла — сжатие в 120 раз — и измерили, насколько сильно каждый отклонился от исходника. Меру отклонения называют PSNR и считают в децибелах: чем больше число, тем ближе результат к оригиналу. JPEG: 19 555 байт, PSNR 22,09 дБ. JPEG2000: 19 618 байт, PSNR 30,86 дБ — то есть при том же размере файла он ушёл от исходника заметно меньше. Кадр для этого взят синтетический и нарочно трудный, а сжатие — сильное: так разница видна глазом. На обычной фотографии и при разумном сжатии она заметно меньше.

Последние две строки объясняют, почему JPEG2000 не вытеснил JPEG, хотя задумывался как его преемник. В вебе он не открывается, а вычисления для его кодирования или декодирования заметно тяжелее — при том, что для типовой фотографии выигрыш в качестве при равном размере файла не настолько велик, чтобы за него платить.

7. Сильные и слабые стороны трёх форматов

Что каждый формат делает хорошо и чего от него ждать не стоит.
Формат Сильные стороны Слабые стороны
JPEG открывается везде и очень быстро — декодирование быстрое и на процессоре, и на видеокарте; широкий выбор степени сжатия; поддерживается всеми программами и устройствами только с потерями, и они накапливаются при каждом пересохранении; квадраты и звон на резких границах; нет прозрачности; обычно 8 бит
JPEG2000 с потерями и без потерь одним алгоритмом; нет блочных артефактов; прогрессивная выдача и фрагмент без полной распаковки; 12 и 16 бит; устойчивость к сбоям в канале из браузеров открывает только Safari; вычислительно тяжёлый; поддержка в обычных программах неполная; файлы больше, чем у современных веб-форматов при том же качестве
PNG сжатие без потерь; полноценная прозрачность; открывается везде; идеален для графики, схем и скриншотов сжатия с потерями нет вовсе; на фотографиях файл получается очень большим; прогрессивной выдачи по качеству нет

8. Чем открыть файл JP2 и почему он не открывается в браузере

Почему не открывается. Поддержку JPEG2000 в браузеры так и не добавили. Из распространённых его открывает только Safari; Chrome, Firefox и Edge — нет. Это не поломка файла и не ошибка при кодировании: формат просто не поддерживается. Если картинку надо показать на сайте, её придётся перекодировать в JPEG, PNG, WebP или AVIF.

Чем открыть на компьютере.

Про расширения. Здесь как раз видна разница между алгоритмом и форматом. .jp2 — файл-контейнер: внутри сжатый поток плюс сведения о цвете и разрешении. .j2k и .j2c — тот же поток, но без контейнера. .jpx — расширенный контейнер. Сжатие во всех трёх одно и то же, различается только упаковка; если программа не открывает одно из них, стоит попробовать переименовать в другое, иногда помогает.

9. Где JPEG2000 не выбирают, а обязаны применять

Это самое важное и самое неочевидное про алгоритм и про формат. В большинстве отраслей, где он используется, его не выбирали по итогам сравнения — он записан в стандарт, и альтернативы нет.

Если ваша задача из этого списка, вопрос «а не взять ли что-то посовременнее» обычно не стоит: формат задан тем, кому вы отдаёте результат.

10. Стоит ли переходить на JPEG2000

Для картинок на сайте — нет. Браузеры его не открывают, а для веба есть JPEG, WebP и AVIF, которые открываются везде и дают файл меньше.

Стоит, если совпадает хотя бы одно:

Не стоит, если картинки уходят в веб, если главное — скорость и размер файла, или если принимающая сторона работает с обычными просмотрщиками.

11. Чем оплачены возможности JPEG2000: он требует затратных вычислений

Вейвлет по всему кадру и энтропийное кодирование с контекстным моделированием данных из битовых плоскостей требуют сложных вычислений. Насколько — мы измерили на одной машине, по той же методике, что и остальные наши бенчмарки.

Открытая библиотека OpenJPEG, занимая весь процессор AMD Ryzen 9 7950X (16 ядер, 32 логических), для картинок 2K показывает производительность около 77 кадров в секунду и около 15 кадров в секунду на кадре 4K при кодировании данных с потерями. Для этой реализации алгоритма JPEG2000 это предел: ни числом потоков, ни схемой подачи кадров, ни пересборкой библиотеки с векторными командами его не поднять. Одна видеокарта NVIDIA RTX 4090 с кодеком Fastvideo на тех же кадрах и при том же размере сжатого файла даёт 1914 и 616 кадров в секунду.

Полные таблицы выйдут отдельной статьёй — бенчмарки CPU и GPU для JPEG2000. Два кодека на видеокарте сравниваются между собой в статье про fvJPEG2000 и nvJPEG2000 на RTX 4090.

Практический вывод простой. Если JPEG2000 нужен для единичных файлов, скорость не важна и практически любая программа подойдёт. Если он стоит в конвейере, где кадры идут потоком, — кодировать или декодировать лучше на видеокарте, потому что производительность процессора в этой задаче невелика.

12. Как правильно писать: JPEG2000, JPEG 2000, J2K, JP2

Все четыре написания встречаются, и все означают одно и то же.

Путаницы из-за этого не бывает: если речь о формате, все четыре написания взаимозаменяемы.

13. А как же WebP, AVIF, HEIC и JPEG XL

Это форматы, появившиеся позже, и в вебе они действительно потеснили JPEG.

Ни один из них не заменяет JPEG2000 там, где он реально применяется — в кино, медицине, геоданных и архивах.

14. Коротко

Если JPEG2000 нужен в вашем проекте и кадры идут потоком, посмотрите кодек JPEG2000 на CUDA: он считает на видеокарте NVIDIA, умеет режимы с потерями и без потерь и разрядность до 16 бит. Присылайте свои кадры с описанием задачи — пришлём варианты сжатия и числа на вашем материале.

Читайте также

Бенчмарки кодеков JPEG на RTX 4090: Fastvideo JPEG и NVIDIA nvJPEG, рестарт-маркеры Бенчмарки кодеков JPEG на RTX 4090: Fastvideo JPEG и nvJPEG Бенчмарки JPEG2000 на процессоре и на видеокарте: OpenJPEG, nvJPEG2000 и fvJPEG2000 на одном компьютере JPEG2000 на процессоре и на видеокарте: OpenJPEG, NVIDIA и Fastvideo Тест кодеков JPEG2000: Fastvideo JPEG2000 и NVIDIA nvJPEG2000 на RTX 4090 JPEG2000 на GPU: кодек из Fastvideo SDK и библиотека nvJPEG2000

Форма для отправки запроса

Эта форма сохраняет ваше имя и адрес электронной почты.