Введение
Стандарт сжатия изображений и система кодирования JPEG 2000 (JP2) — это стандарт сжатия изображений и система кодирования. Он был разработан в период с 1997 по 2000 год комитетом Объединенной группы экспертов по фотографии под председательством Тураджа Эбрахими (впоследствии президента JPEG) с целью замены их исходного стандарта JPEG (созданного в 1992 году), основанного на дискретном косинусном преобразовании (DCT), на новый метод, основанный на вейвлетах. Стандартным расширением имени файла является jp2 для файлов, соответствующих ISO/IEC 15444-1, и jpx для расширенных спецификаций части 2, опубликованных как ISO/IEC 15444-2. Зарегистрированные типы MIME определены в RFC 3745. Для ISO/IEC 15444-1 это image/jp2. Проект JPEG 2000 был инициирован представлением Ricoh в 1995 году алгоритма CREW (Compression with Reversible Embedded Wavelets) для усилий по стандартизации JPEG LS. В конечном итоге алгоритм LOCO I был выбран в качестве основы для JPEG LS, но многие функции CREW вошли в стандарт JPEG 2000. Кодовые потоки JPEG 2000 представляют собой области интереса, предлагающие несколько механизмов для поддержки пространственного произвольного доступа или доступа к областям интереса с различной степенью детализации. Возможно хранение различных частей одного и того же изображения с разным качеством. JPEG 2000 — это стандарт сжатия, основанный на дискретном вейвлет-преобразовании (DWT). Стандарт может быть адаптирован для сжатия движущихся изображений с помощью расширения Motion JPEG 2000. В 2004 году технология JPEG 2000 была выбрана в качестве стандарта кодирования видео для цифрового кино. Однако, по состоянию на 2022 год, JPEG 2000 не поддерживается в веб-браузерах (за исключением браузеров на основе WebKit, таких как Safari) для веб-страниц и, следовательно, обычно не используется во Всемирной паутине. Тем не менее, для пользователей с поддержкой PDF веб-браузеры обычно поддерживают JPEG 2000 в PDF-файлах.
JPEG 2000 (JP2) is an image compression standard and coding system. It was developed from 1997 to 2000 by a Joint Photographic Experts Group committee chaired by Touradj Ebrahimi (later the JPEG president), with the intention of superseding their original JPEG standard (created in 1992), which is based on a discrete cosine transform (DCT), with a newly designed, wavelet based method. The standardized filename extension is jp2 for ISO/IEC 15444 1 conforming files and jpx for the extended part 2 specifications, published as ISO/IEC 15444 2. The registered MIME types are defined in RFC 3745. For ISO/IEC 15444 1 it is image/jp2. The JPEG 2000 project was motivated by Ricoh's submission in 1995 of the CREW (Compression with Reversible Embedded Wavelets) algorithm to the standardization effort of JPEG LS. Ultimately the LOCO I algorithm was selected as the basis for JPEG LS, but many of the features of CREW ended up in the JPEG 2000 standard. JPEG 2000 codestreams are regions of interest that offer several mechanisms to support spatial random access or region of interest access at varying degrees of granularity. It is possible to store different parts of the same picture using different quality. JPEG 2000 is a compression standard based on a discrete wavelet transform (DWT). The standard could be adapted for motion imaging video compression with the Motion JPEG 2000 extension. JPEG 2000 technology was selected as the video coding standard for digital cinema in 2004. However, JPEG 2000 is not supported in web browsers (the main exceptions being WebKit based browsers such as Safari) for web pages as of 2022, and hence is not generally used on the World Wide Web. Nevertheless, for those with PDF support, web browsers generally support JPEG 2000 in PDFs.
Цели проектирования
Хотя в JPEG 2000 наблюдается умеренное повышение эффективности сжатия по сравнению с JPEG, основное преимущество JPEG 2000 заключается в значительной гибкости кодового потока. Кодовый поток, полученный после сжатия изображения с помощью JPEG 2000, имеет масштабируемую структуру, что означает, что его можно декодировать различными способами; например, усечение кодового потока в любой точке позволяет получить представление изображения с более низким разрешением или соотношением сигнал/шум – см. масштабируемое сжатие. Различная организация кодового потока позволяет приложениям добиться существенного повышения производительности. Однако, как следствие этой гибкости, JPEG 2000 требует сложных и ресурсоемких кодеков. Другое отличие от JPEG заключается в типе визуальных артефактов: JPEG 2000 создает только артефакты звона, проявляющиеся в виде размытия и колец вблизи краев изображения, в то время как JPEG создает как артефакты звона, так и блочные артефакты из-за использования блоков 8x8. JPEG 2000 был опубликован как стандарт ISO, ISO/IEC 15444. Стоимость получения всех документов по стандарту оценивалась в 2718 швейцарских франков (2720 долларов США по состоянию на 2015 год).
Представление множественной разрешения
JPEG 2000 раскладывает изображение на многоразрешенное представление в процессе сжатия. Это пирамидальное представление может быть использовано для других задач визуализации изображения, помимо сжатия.
Прогрессивная передача по пикселям и точность разрешения
Эти особенности более известны как прогрессивное декодирование и масштабируемость отношения сигнал/шум (SNR). JPEG 2000 обеспечивает эффективную организацию кодового потока, позволяющую прогрессивное декодирование с точностью до пикселя и по разрешению изображения (или размеру изображения). Таким образом, после получения лишь части файла зритель может увидеть изображение более низкого качества. Качество затем постепенно улучшается по мере загрузки дополнительных данных из источника.
Выбор компрессии без потерь или с потерями
Как и стандарт Lossless JPEG, стандарт JPEG 2000 обеспечивает как сжатие без потерь, так и сжатие с потерями в единой архитектуре сжатия. Сжатие без потерь обеспечивается использованием обратимого целочисленного вейвлет-преобразования в JPEG 2000.
Устойчивость к ошибкам
Как и JPEG 1992, JPEG 2000 устойчив к битовым ошибкам, возникающим в шумных каналах связи, благодаря кодированию данных в относительно небольшие независимые блоки.
Гибкий формат файла
Форматы JP2 и JPX обеспечивают обработку информации о цветовом пространстве, метаданных и интерактивность в сетевых приложениях, разработанных на основе протокола JPIP (JPEG Part 9).
Поддержка высокого динамического диапазона
JPEG 2000 поддерживает разрядность от 1 до 38 бит на компонент. Поддерживаемые цветовые пространства включают монохромное, три типа YCbCr, sRGB, PhotoYCC, CMYK, YCCK и CIELab. Позже была добавлена поддержка CIEJab (CIECAM02), e sRGB, ROMM, YPbPr и других.
Побочный канал пространственной информации
Полная поддержка прозрачности и альфа-каналов.
Техническое обсуждение
Целью JPEG 2000 является не только повышение эффективности сжатия по сравнению с JPEG, но и добавление (или улучшение) таких возможностей, как масштабируемость и возможность редактирования. Улучшение эффективности сжатия в JPEG 2000 по сравнению с оригинальным стандартом JPEG на самом деле довольно умеренно и обычно не должно быть основным фактором при оценке разработки. В JPEG 2000 поддерживаются как очень низкие, так и очень высокие степени сжатия. Способность разработки обрабатывать очень широкий диапазон эффективных битрейтов – одно из преимуществ JPEG 2000. Например, чтобы уменьшить количество бит, необходимое для изображения, до определенного значения, при использовании первого стандарта JPEG рекомендуется уменьшить разрешение входного изображения перед кодированием. Это не требуется при использовании JPEG 2000, поскольку JPEG 2000 уже выполняет это автоматически благодаря своей многоуровневой структуре разложения. В следующих разделах описывается алгоритм JPEG 2000. По данным Королевской библиотеки Нидерландов, "текущая спецификация формата JP2 допускает различные интерпретации в отношении поддержки ICC-профилей и обработки информации о разрешении сетки".
Преобразование цветовых компонентов
Изначально изображения должны быть преобразованы из цветового пространства RGB в другое цветовое пространство, что приводит к трем компонентам, которые обрабатываются раздельно. Существует два возможных варианта: необратимое цветовое преобразование (ICT) использует хорошо известное цветовое пространство BT.601 YCC. Оно называется "необратимым", поскольку требует реализации в формате чисел с плавающей или фиксированной точкой и приводит к ошибкам округления. ICT следует использовать только с волновым преобразованием 9/7. Обратимое цветовое преобразование (RCT) использует модифицированное цветовое пространство YUV (почти идентичное YCC), которое не вносит ошибок квантования, благодаря чему является полностью обратимым. Корректная реализация RCT требует округления чисел в соответствии с заданными правилами и не позволяет представить преобразование в точной матричной форме. RCT следует использовать только с волновым преобразованием 5/3. Преобразования:
Irreversible Color Transform (ICT) uses the well known BT.601 YCC color space. It is called "irreversible" because it has to be implemented in floating or fix point and causes round off errors. The ICT shall be used only with the 9/7 wavelet transform. Reversible Color Transform (RCT) uses a modified YUV color space (almost the same as YCC) that does not introduce quantization errors, so it is fully reversible. Proper implementation of the RCT requires that numbers be rounded as specified and cannot be expressed exactly in matrix form. The RCT shall be used only with the 5/3 wavelet transform. The transformations are:
Если значения R, G и B нормализованы до одинаковой точности, то числовая точность компонентов Cb и Cr на один бит выше, чем точность исходных компонентов. Это увеличение точности необходимо для обеспечения обратимости. Компоненты цветности могут быть, но необязательно должны быть, уменьшены в разрешении; фактически, поскольку волновое преобразование уже разделяет изображения по масштабам, понижение дискретизации эффективнее выполнять путем отбрасывания самого мелкого масштаба волнового разложения. Этот шаг называется преобразованием многокомпонентных данных в спецификации JPEG 2000, поскольку его применение не ограничено цветовой моделью RGB.
Плитка
После цветового преобразования изображение разбивается на так называемые тайлы – прямоугольные области изображения, которые преобразуются и кодируются отдельно. Тайлы могут быть любого размера, и также возможно рассматривать всё изображение как один единственный тайл. После выбора размера все тайлы будут одинакового размера (за исключением, опционально, тайлов на правой и нижней границах). Разбиение изображения на тайлы выгодно тем, что декодеру потребуется меньше памяти для декодирования изображения, и он может выбрать декодирование только отдельных тайлов для достижения частичного декодирования изображения. Недостатком этого подхода является снижение качества изображения из-за уменьшения пикового отношения сигнал/шум. Использование большого количества тайлов может привести к появлению блочного эффекта, похожего на эффект в более старом стандарте JPEG 1992.
Трансформация волновой линии
Эти плитки затем преобразуются с помощью вейвлет-преобразования до произвольной глубины, в отличие от JPEG 1992, который использует дискретное косинусное преобразование размером 8x8 блоков. JPEG 2000 использует два различных вейвлет-преобразования:
необратимое: вейвлет-преобразование CDF 9/7 (разработанное Ингрид Дабеши). Оно считается "необратимым", поскольку вносит квантовый шум, зависящий от точности декодера. обратимое: округленная версия биортогонального вейвлет-преобразования Ле Галля — Табатабая (LGT) 5/3 (разработанное Дидье Ле Галлем и Али Дж. Табатабаи). Оно использует только целочисленные коэффициенты, поэтому выходные данные не требуют округления (квантования) и, следовательно, не вносят квантовый шум. Оно используется в кодировании без потерь. Вейвлет-преобразования реализуются с помощью схемы подъема (lifting) или свёртки.
Квантование
После волнового преобразования коэффициенты подвергаются скалярному квантованию для уменьшения количества битов, необходимых для их представления, что происходит за счет снижения качества. Результатом является набор целых чисел, которые необходимо закодировать побитово. Параметр, позволяющий регулировать конечное качество, – это шаг квантования: чем больше шаг, тем выше степень сжатия и потеря качества. При шаге квантования, равном 1, квантование не производится (это используется при сжатии без потерь).
Кодирование
Результатом предыдущего процесса является набор поддиапазонов, представляющих несколько масштабов аппроксимации. Поддиапазон – это множество коэффициентов, являющихся вещественными числами и представляющих аспекты изображения, связанные с определенным частотным диапазоном, а также с пространственной областью изображения. Квантованные поддиапазоны далее разбиваются на прецинкты – прямоугольные области в волновом пространстве. Обычно они имеют размеры, обеспечивающие эффективный доступ только к части (реконструированного) изображения, хотя это и не является обязательным условием. Прецинкты разбиваются на кодовые блоки. Кодовые блоки принадлежат одному поддиапазону и имеют одинаковый размер, за исключением блоков, расположенных на краях изображения. Кодировщик должен кодировать биты всех квантованных коэффициентов кодового блока, начиная со старших значащих битов и переходя к младшим значащим битам с помощью процесса, называемого схемой EBCOT. EBCOT расшифровывается как Embedded Block Coding with Optimal Truncation (встраивающее блочное кодирование с оптимальной усекацией). В этом процессе кодирования каждая битовая плоскость кодового блока кодируется в три так называемых прохода кодирования: сначала кодируются биты (и знаки) незначительных коэффициентов, имеющих значимые соседи (то есть с 1 в старших битовых плоскостях), затем – биты уточнения значимых коэффициентов и, наконец, – коэффициенты, не имеющие значимых соседей. Эти три прохода называются соответственно проходом распространения значимости, проходом уточнения величины и проходом очистки. В режиме без потерь все битовые плоскости должны быть закодированы EBCOT, и ни одна битовая плоскость не может быть отброшена. Биты, выбранные этими проходами кодирования, затем кодируются контекстно-зависимым бинарным арифметическим кодировщиком, а именно бинарным MQ-кодировщиком (как это также используется в JBIG2). Контекст коэффициента формируется состоянием его восьми соседей в кодовом блоке. Результатом является битовый поток, который разделяется на пакеты, где пакет объединяет выбранные проходы кодирования всех кодовых блоков из прецинкта в единую неделимую единицу. Пакеты являются ключевыми для масштабируемости по качеству (то есть пакеты, содержащие менее значимые биты, могут быть отброшены для достижения более низкой скорости передачи данных и большего искажения). Пакеты из всех поддиапазонов затем собираются в так называемые слои. Способ построения пакетов из проходов кодирования кодовых блоков, и, следовательно, какие пакеты будет содержать слой, не определен стандартом JPEG 2000, но, как правило, кодек стремится строить слои таким образом, чтобы качество изображения монотонно возрастало с каждым слоем, а искажение изображения уменьшалось от слоя к слою. Таким образом, слои определяют прогрессию по качеству изображения в кодовом потоке. Задача теперь состоит в том, чтобы найти оптимальную длину пакета для всех кодовых блоков, которая минимизирует общее искажение таким образом, чтобы генерируемая целевая скорость передачи данных равнялась требуемой скорости передачи данных. Хотя стандарт не определяет процедуру выполнения этой формы оптимизации по скорости и искажению, общий план представлен в одном из многочисленных приложений: для каждого бита, закодированного кодировщиком EBCOT, измеряется улучшение качества изображения, определяемое как среднеквадратичная ошибка; это можно реализовать с помощью простого алгоритма поиска по таблице. Кроме того, измеряется длина полученного кодового потока. Это формирует для каждого кодового блока график в плоскости скорость-искажение, показывающий качество изображения в зависимости от длины кодового потока. Оптимальный выбор точек усечения, а значит, точек формирования пакетов, затем определяется путем определения критических наклонов этих кривых и выбора всех тех проходов кодирования, кривая которых на графике скорость-искажение круче, чем данный критический наклон. Этот метод можно рассматривать как частное применение метода множителей Лагранжа, который используется для задач оптимизации с ограничениями. Множитель Лагранжа, обычно обозначаемый λ, оказывается равным критическому наклону, ограничением является требуемая целевая скорость передачи данных, а оптимизируемым значением – общее искажение. Пакеты могут быть переупорядочены почти произвольно в битовом потоке JPEG 2000; это дает кодировщику, а также серверам изображений высокую степень свободы. Уже закодированные изображения могут быть отправлены по сетям с произвольной скоростью передачи данных, используя порядок кодирования слоями с прогрессивным увеличением качества. С другой стороны, цветовые компоненты могут быть перемещены назад в битовом потоке; более низкие разрешения (соответствующие низкочастотным поддиапазонам) могут быть отправлены первыми для предварительного просмотра изображения. Наконец, пространственный просмотр больших изображений возможен благодаря соответствующему выбору плиток или разделов. Все эти операции не требуют повторного кодирования, а только операции копирования побайтово.
Коэффициент сжатия
По сравнению с предыдущим стандартом JPEG, JPEG 2000 обеспечивает типичное увеличение степени сжатия в диапазоне 20%, в зависимости от характеристик изображения. Изображения с более высоким разрешением обычно получают большую выгоду, поскольку пространное предсказание избыточности в JPEG 2000 может в большей степени способствовать процессу сжатия. Однако в приложениях с очень низкой скоростью передачи данных исследования показали, что JPEG 2000 уступает режиму внутрикадрового кодирования H.264.
Комплексность и производительность вычислений
JPEG 2000 значительно сложнее с точки зрения вычислительной сложности по сравнению со стандартом JPEG. Разбиение на блоки, преобразование цветовых компонент, дискретное вейвлет-преобразование и квантование могут выполняться довольно быстро, однако энтропийный кодек требует значительного времени и достаточно сложен. Контекстное моделирование EBCOT и арифметический кодер MQ занимают большую часть времени работы кодека JPEG 2000. Для CPU основная идея ускорения кодирования и декодирования JPEG 2000 тесно связана с использованием AVX/SSE и многопоточностью для обработки каждого блока в отдельном потоке. Самые быстрые реализации JPEG 2000 используют как вычислительные ресурсы CPU, так и GPU для достижения высокой производительности.
Формат файла и потоки кода
Подобно JPEG 1, JPEG 2000 определяет как формат файла, так и кодовый поток. В отличие от JPEG 1, который включает дополнительную метаинформацию, такую как разрешение изображения или цветовое пространство, использованное для кодирования, JPEG 2000 полностью описывает выборки изображения. Изображения JPEG 2000, при сохранении в файлах, должны быть заключены в формат файла JPEG 2000 и иметь расширение jp2. Часть 2 стандарта JPEG 2000 (ISO/IEC 15444-2) расширяет формат файла, добавляя механизмы для анимации или компоновки нескольких кодовых потоков в одно изображение. Этот расширенный формат файла называется JPX и должен использовать расширение jpf, хотя также часто используется jpx. Для данных кодового потока не существует стандартизированного расширения, поскольку они изначально не предназначены для хранения в файлах. Однако при тестировании обычно используются расширения jpc, j2k или j2c.
Метаданные
Для традиционного JPEG дополнительные метаданные, например, условия освещения и экспозиции, хранятся в приложении-маркере в формате Exif, определённом организацией JEITA. JPEG 2000 использует иной подход, кодируя те же метаданные в формате XML. Соответствие между тегами Exif и элементами XML стандартизировано комитетом ISO TC42 в стандарте 12234-1.4. В JPEG 2000 также может быть встроена платформа расширенных метаданных (XMP).
Сопутствующие стандарты
Существует несколько дополнительных частей стандарта JPEG 2000; среди них – ISO/IEC 15444 2:2000, расширения JPEG 2000, определяющие формат файла jpx, включающие, например, треллис-квантование, расширенный формат файла и дополнительные цветовые пространства, ISO/IEC 15444 4:2000, посвященные референтному тестированию, и ISO/IEC 15444 6:2000, формат файла составного изображения (.jpm), позволяющий сжимать сложные графические объекты, содержащие текст и изображения. Также доступны от ISO расширения для безопасной передачи изображений JPSEC (ISO/IEC 15444 8), усовершенствованные схемы коррекции ошибок для беспроводных приложений JPWL (ISO/IEC 15444 11) и расширения для кодирования объемных изображений JP3D (ISO/IEC 15444 10).
Протокол JPIP для потоковой передачи изображений JPEG 2000
В 2005 году был опубликован протокол просмотра изображений на основе JPEG 2000, известный как JPIP, под стандартом ISO/IEC 15444-9. В рамках этого подхода, с сервера изображений по запросу клиента передаются только выбранные области потенциально очень больших изображений, что позволяет снизить требуемую пропускную способность. Данные JPEG 2000 также могут передаваться потоком с использованием протоколов ECWP и ECWPS, входящих в состав ERDAS ECW/JP2 SDK.
Движение JPEG 2000
Motion JPEG 2000, (MJ2), первоначально определенный в части 3 стандарта ISO для JPEG2000 (ISO/IEC 15444-3:2002) как самостоятельный документ, теперь определен в ISO/IEC 15444-3:2002/Amd 2:2003 в терминах базового формата ISO, ISO/IEC 15444-12 и в Рекомендации ITU-T T.802. Он определяет использование формата JPEG 2000 для последовательностей изображений во времени (видеопоследовательностей), возможно, в сочетании со звуком, объединенных в общую презентацию. Также определяется формат файла, основанный на базовом формате медиафайлов ISO (ISO/IEC 15444-12). Расширения имен файлов для видеофайлов Motion JPEG 2000 – mj2 и mjp2, согласно RFC 3745. Это открытый стандарт ISO и расширенная версия MJPEG (или MJ), основанная на устаревшем формате JPEG. В отличие от распространенных видеоформатов, таких как MPEG-4 Part 2, WMV и H.264, MJ2 не использует временное или межкадровое сжатие. Вместо этого каждый кадр является независимой единицей, кодируемой с потерями или без потерь вариантом JPEG 2000. Его физическая структура не зависит от временной последовательности, но использует отдельный профиль для дополнения данных. Для звука поддерживается кодирование LPCM, а также различные варианты MPEG-4, как "сырые" или дополнительные данные. Motion JPEG 2000 (часто упоминается как MJ2 или MJP2) рассматривается Библиотекой Конгресса как цифровой архивный формат, хотя MXF OP1a JP2 LL (без потерь JPEG 2000, упакованный в операционный шаблон MXF 1a) предпочтителен центром Packard Campus для аудиовизуального сохранения LOC.
Основной формат файла носителя ISO
ISO/IEC 15444-12 идентичен ISO/IEC 14496-12 (MPEG-4 Часть 12) и определяет базовый формат файла мультимедиа ISO. Например, форматы файлов Motion JPEG 2000, MP4 или 3GP также основаны на этом базовом формате файла мультимедиа ISO.