Формат обмена файлами JPEG

Формат файла изображения с несколькими редакциями

Формат обмена файлами JPEG ( JFIF ) — это стандарт формата файла изображения, опубликованный как Рекомендация ITU-T T.871 и ISO/IEC 10918-5. Он определяет дополнительные спецификации для формата контейнера , который содержит данные изображения, закодированные с помощью алгоритма JPEG . Базовые спецификации для формата контейнера JPEG определены в Приложении B стандарта JPEG, известном как Формат обмена файлами JPEG (JIF). JFIF надстраивается над JIF, чтобы устранить некоторые ограничения JIF, включая ненужную сложность, регистрацию выборки компонентов, разрешение, соотношение сторон и цветовое пространство . Поскольку JFIF не является исходным стандартом JPG, можно было бы ожидать другой тип MIME . Однако он по-прежнему зарегистрирован как «image/jpeg» (что указывает на его основной формат данных, а не на измененную информацию).

Формат JFIF несовместим с более новым форматом файлов изображений Exchangeable (Exif).

Цель

JFIF определяет ряд деталей, которые не указаны в стандарте JPEG Часть 1 ( ISO / IEC 10918-1, Рекомендация ITU-T T.81.) [1]

Регистрация образца компонента

JPEG позволяет нескольким компонентам (таким как Y, Cb и Cr ) иметь разные разрешения, но он не определяет, как должны быть выровнены эти отличающиеся массивы выборок (которые визуализируют битовые карты). Эта информация, производящая пиксели, визуализируется с ожиданием указания прямоугольников их центроидом , а не является данными пикселей напрямую или 'первым углом и заливкой' и т. д., что встречается нечасто.

Разрешение и соотношение сторон

Стандарт JPEG не включает в себя какой-либо метод кодирования разрешения или соотношения сторон изображения. JFIF предоставляет информацию о разрешении или соотношении сторон с помощью расширения сегмента приложения для JPEG. Он использует сегмент приложения #0 с заголовком сегмента, состоящим из строки с нулевым окончанием, пишущей "JFIF" в ASCII, за которой следует байт, равный 0, и указывает, что это должен быть первый сегмент в файле, что упрощает распознавание файла JFIF. Изображения Exif , записанные цифровыми камерами, обычно не включают этот сегмент, но, как правило, соответствуют во всех других отношениях стандарту JFIF.

Цветовое пространство

Стандарт JPEG, используемый для кодирования сжатия в файлах JFIF, не определяет, какое цветовое кодирование должно использоваться для изображений. JFIF определяет цветовую модель , которая будет использоваться: либо Y для оттенков серого, либо YCbCr, полученный из основных цветов RGB , как определено в CCIR 601 (теперь известном как Rec. ITU-R BT.601), за исключением другого масштабирования "полного диапазона" компонентов Y, Cb и Cr. В отличие от "студийного диапазона", определенного в CCIR 601, в котором черный представлен Y=16, а белый - Y=235, и значения за пределами этого диапазона доступны для обработки сигнала "headroom" и "footroom", JFIF использует все 256 уровней 8-битного представления, так что Y=0 для черного и Y=255 для пикового белого. Основные цвета RGB, определенные в JFIF через CCIR 601, также несколько отличаются от того, что стало общепринятой практикой в ​​новых приложениях (например, они немного отличаются от основных цветов, определенных в sRGB ). Более того, CCIR 601 (до 2007 года) не давал точного определения основных цветов RGB; вместо этого он опирался на базовые практики телевизионной индустрии.

Цветовую интерпретацию изображения JFIF можно улучшить, внедрив профиль ICC , метаданные цветового пространства или тег sRGB , а также используя приложение, которое интерпретирует эту информацию.

Структура формата файла

Файл JFIF состоит из последовательности маркеров или сегментов маркеров (подробнее см. JPEG, Синтаксис и структура ). Маркеры определены в части 1 стандарта JPEG . [1] Каждый маркер состоит из двух байтов: FFбайт, за которым следует байт, который не равен 00или FFи определяет тип маркера. Некоторые маркеры стоят отдельно, но большинство указывают на начало сегмента маркера, который содержит байты данных в соответствии со следующим шаблоном:

FF xx s1 s2 [data bytes]

Байты s1 и s2 берутся вместе, чтобы представить big-endian 16-битное целое число, указывающее длину следующих "байтов данных" плюс 2 байта, используемых для представления длины. Другими словами, s1 и s2 указывают количество следующих байтов данных как . 256 с 1 + с 2 2 {\displaystyle 256\cdot s1+s2-2}

Согласно части 1 стандарта JPEG, приложения могут использовать сегменты маркеров APP и определять специфичное для приложения значение данных. В стандарте JFIF определены следующие сегменты маркеров APP:

  • Сегмент маркера JFIF APP0 (сокращенно сегмент JFIF) (обязательный)
  • Расширение JFIF сегмента маркера APP0 (сокращенно сегмент JFXX) (необязательно)

Они описаны ниже.

Стандарт JFIF требует, чтобы сегмент маркера JFIF APP0 следовал сразу за маркером SOI. Если используется сегмент маркера расширения JFIF APP0, он должен следовать сразу за сегментом маркера JFIF APP0. [2] Таким образом, файл JFIF будет иметь следующую структуру:

Структура файла JFIF
СегментКодОписание
СОИFF D8Начало изображения
JFIF-APP0FF E0 s1 s2 4A 46 49 46 00 ...см. ниже
JFXX-APP0FF E0 s1 s2 4A 46 58 58 00 ...необязательно, см. ниже
… дополнительные сегменты маркера
(например, SOF, DHT, COM)
СОСFF DAНачало сканирования
сжатые данные изображения
ВЗFF D9Конец изображения

Сегмент маркера JFIF APP0

В обязательном сегменте маркера JFIF APP0 указываются параметры изображения. Опционально может быть встроена несжатая миниатюра.

Сегмент маркера JFIF APP0
ПолеРазмер (байты)Описание
Маркер APP02FF E0
Длина2Длина сегмента без учета маркера APP0
Идентификатор54A 46 49 46 00= "JFIF" в ASCII , завершается нулевым байтом
JFIF-версия2Первый байт для основной версии, второй байт для дополнительной версии ( 01 02для 1.02)
Единицы измерения плотности1Единицы для следующих полей плотности пикселей
Xплотность2Плотность пикселей по горизонтали. Не должна быть нулевой.
Yплотность2Плотность пикселей по вертикали. Не должна быть нулевой.
Xминиатюра1Горизонтальное количество пикселей следующей встроенной миниатюры RGB. Может быть равно нулю
Yминиатюра1Вертикальное количество пикселей следующей встроенной миниатюры RGB. Может быть равно нулю
Данные миниатюр3 × nНесжатые 24-битные RGB (8 бит на цветовой канал) растровые данные миниатюр в порядке R0, G0, B0, ... Rn-1, Gn-1, Bn-1; где n = Xthumbnail × Ythumbnail

Расширение JFIF сегмент маркера APP0

Сразу за сегментом маркера JFIF APP0 может следовать сегмент маркера расширения JFIF APP0. Этот сегмент может присутствовать только для версий JFIF 1.02 и выше. Он позволяет встраивать миниатюрное изображение в 3 различных форматах.

Расширение JFIF сегмент маркера APP0
ПолеРазмер (байты)Описание
Маркер APP02FF E0
Длина2Длина сегмента без учета маркера APP0
Идентификатор54A 46 58 58 00= "JFXX" в ASCII , завершается нулевым байтом
Формат миниатюры1Указывает, какой формат данных используется для следующей встроенной миниатюры:
  • 10 : Формат JPEG
  • 11 : 1 байт на пиксель, палитровый формат
  • 13 : 3 байта на пиксель в формате RGB
Данные миниатюрпеременнаяЗависит от формата миниатюры, см. ниже

Данные миниатюры зависят от формата миниатюры следующим образом:

Миниатюра сохранена с использованием кодировки JPEG
ПолеРазмер (байты)Описание
СОИ2FF D8
переменнаяДолжен быть в формате JIF с использованием YCbCr или просто Y и не должен содержать сегментов JFIF или JFXX.
ВЗ2FF D9
Миниатюра хранится с использованием одного байта на пиксель
ПолеРазмер (байты)Описание
Xминиатюра1Горизонтальное количество пикселей следующей встроенной миниатюры. Не должно быть равно нулю
Yминиатюра1Вертикальное количество пикселей следующей встроенной миниатюры. Не должно быть равно нулю
Палитра миниатюр768256 записей палитры, каждая из которых содержит 24-битное значение цвета RGB
Данные миниатюрнОдин байт на пиксель, содержащий индекс цвета в палитре,

с n = Xthumbnail × Ythumbnail

Миниатюра хранится с использованием трех байт на пиксель
ПолеРазмер (байты)Описание
Xминиатюра1Горизонтальное количество пикселей следующей встроенной миниатюры. Не должно быть равно нулю
Yминиатюра1Вертикальное количество пикселей следующей встроенной миниатюры. Не должно быть равно нулю
Данные миниатюр3 × nНесжатые 24-битные RGB (8 бит на цветовой канал) растровые данные миниатюр в порядке R0, G0, B0, ... Rn-1, Gn-1, Bn-1; где n = Xthumbnail × Ythumbnail

Совместимость

Новый формат файла изображения Exchangeable (Exif) сопоставим с JFIF, но эти два стандарта взаимно несовместимы. Это связано с тем, что оба стандарта указывают, что их конкретный сегмент приложения (APP0 для JFIF, APP1 для Exif) должен следовать сразу за маркером SOI. На практике многие программы и цифровые камеры создают файлы с включенными обоими сегментами приложения. Это не повлияет на декодирование изображения для большинства декодеров, но плохо спроектированные парсеры JFIF или Exif могут не распознать файл должным образом.

JFIF совместим с расширениями JPEG "Information Resource Block" Adobe Photoshop и метаданными модели обмена информацией IPTC , поскольку JFIF не препятствует другим сегментам приложения, а расширения Photoshop не обязаны быть первыми в файле. Однако Photoshop обычно сохраняет буферы CMYK как четырехкомпонентные "Adobe JPEG", которые не соответствуют JFIF. Поскольку эти файлы не находятся в цветовом пространстве YCbCr, они, как правило, не декодируются веб-браузерами и другим интернет-программным обеспечением.

История

Разработка документа JFIF была возглавлена ​​Эриком Гамильтоном из C-Cube Microsystems , и соглашение о первой версии было достигнуто в конце 1991 года на встрече, проведенной в C-Cube с участием около 40 представителей различных компьютерных, телекоммуникационных и визуальных компаний. Вскоре после этого была опубликована небольшая редакция — JFIF 1.01. [3] В течение почти 20 лет последней доступной версией была v1.02, опубликованная 1 сентября 1992 года. [2]

В 1996 году RFC 2046 определил, что формат изображения, используемый для передачи изображений JPEG через Интернет, должен быть JFIF. Тип MIME "image/jpeg" должен быть закодирован как JFIF. Однако на практике практически все программное обеспечение Интернета может декодировать любое базовое изображение JIF , которое использует компоненты Y или YCbCr, независимо от того, совместимо ли оно с JFIF или нет.

Со временем C-Cube был реструктурирован (и в конечном итоге деградировал в Harmonic , LSI Logic , Magnum Semiconductor , Avago Technologies , Broadcom и GigOptix, GigPeak и т. д.) и потерял интерес к документу, а спецификация не имела официального издателя, пока ее не подхватили Ecma International и Объединенная группа экспертов по фотографии ITU-T/ISO/IEC около 2009 года, чтобы не допустить ее потери в истории и предоставить способ официально ссылаться на нее в стандартных публикациях и улучшить ее редакционное качество. Она была опубликована ECMA в 2009 году как Технический отчет номер 98, чтобы не допустить потери исторической записи, [3] и была официально стандартизирована ITU-T в 2011 году как Рекомендация T.871 [4] и ISO/IEC в 2013 году как ISO/IEC 10918-5, [5]. Более новые публикации включали редакционные улучшения, но не содержали существенных технических изменений.

Смотрите также

Ссылки

  1. ^ ab "Рекомендация МСЭ-Т T.81: Информационные технологии — Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном — Требования и руководящие принципы" (PDF) . МСЭ-Т (ранее CCITT) . 18 февраля 1992 г. . Получено 15 июня 2015 г. .
  2. ^ ab Hamilton, Eric (12 сентября 1992 г.). "JPEG File Interchange Format, Version 1.02" (pdf, 0,02 МБ) . Получено 15 июня 2015 г.
  3. ^ ab "Формат обмена файлами JPEG (JFIF)". ecma-international.org . 2009 . Получено 15 июня 2015 .
  4. ^ "Рекомендация МСЭ-Т T.871: Информационные технологии — Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Формат обмена файлами JPEG (JFIF)" (PDF) . МСЭ-Т. 14 мая 2011 г. . Получено 15 июня 2015 г. .
  5. ^ "ISO/IEC 10918-5:2013: Информационные технологии. Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Формат обмена файлами JPEG (JFIF)". ISO/Международная электротехническая комиссия. 1 мая 2013 г. Получено 15 июня 2015 г.

Дальнейшее чтение

Книги

  • Миано, Джон М., «Форматы сжатых файлов изображений»; 1999, Addison-Wesley ISBN 978-0-201-60443-6 
  • Пеннебейкер, Уильям Б. и Джоан Л. Митчелл : Стандарт сжатия данных неподвижных изображений JPEG ; 3-е издание, 1993, Springer ISBN 978-0-442-01272-4 

Стандарты

  • Гамильтон, Эрик: Формат обмена файлами JPEG, версия 1.02 (PDF, 0,02 МБ) 1 сентября 1992 г.
  • Рекомендация МСЭ-Т T.871: Информационные технологии — Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Формат обмена файлами JPEG (JFIF) (PDF и Microsoft Word, 0,2 МБ) Утверждена 14 мая 2011 г.; опубликована 11 сентября 2012 г.
  • Рекомендация МСЭ-Т T.81: Информационные технологии – Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном – Требования и руководящие принципы (PDF и Microsoft Word, 1,5 МБ) Утверждена 18 сентября 1992 г.; опубликована 14 апреля 2004 г.
Получено с "https://en.wikipedia.org/w/index.php?title=Формат_обмена_файлами_JPEG&oldid=1216486071"