Формат обмена файлами 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 Part 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, а значения за пределами этого диапазона доступны для обработки сигналов «пространства по высоте» и «пространства для ног», 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 вместе представляют собой 16-битное целое число с обратным порядком байтов, определяющее длину следующих «байтов данных» плюс 2 байта, используемые для представления длины. Другими словами, s1 и s2 определяют количество следующих байтов данных как .
Согласно части 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-APP0 | FF E0 s1 s2 4A 46 49 46 00 ... | см. ниже |
JFXX-APP0 | FF E0 s1 s2 4A 46 58 58 00 ... | опционально, см. ниже |
… дополнительные сегменты маркера (например, SOF, DHT, COM) | ||
SOS | FF DA | Начало сканирования |
сжатые данные изображения | ||
ВЗ | FF D9 | Конец изображения |
Сегмент маркера JFIF APP0
[ редактировать ]В обязательном сегменте маркера JFIF APP0 указываются параметры изображения. При желании можно встроить несжатую миниатюру.
Сегмент маркера JFIF APP0 | ||
---|---|---|
Поле | Размер (байты) | Описание |
Маркер APP0 | 2 | FF E0 |
Длина | 2 | Длина сегмента без маркера APP0 |
Идентификатор | 5 | 4A 46 49 46 00 = «JFIF» в ASCII , завершается нулевым байтом |
Версия JFIF | 2 | Первый байт для основной версии, второй байт для дополнительной версии ( 01 02 для 1.02) |
Единицы плотности | 1 | Единицы для следующих полей плотности пикселей
|
Xплотность | 2 | Горизонтальная плотность пикселей. Не должно быть нулем |
Плотность | 2 | Плотность пикселей по вертикали. Не должно быть нулем |
Xминиатюра | 1 | Количество пикселей по горизонтали следующей встроенной миниатюры RGB. Может быть ноль |
Миниатюра | 1 | Количество пикселей по вертикали в следующем встроенном миниатюре RGB. Может быть ноль |
Миниатюры данных | 3 × н | Несжатые 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 | ||
---|---|---|
Поле | Размер (байты) | Описание |
Маркер APP0 | 2 | FF E0 |
Длина | 2 | Длина сегмента без маркера APP0 |
Идентификатор | 5 | 4A 46 58 58 00 = «JFXX» в ASCII , завершается нулевым байтом |
Формат миниатюр | 1 | Указывает, какой формат данных используется для следующего встроенного эскиза:
|
Миниатюры данных | переменная | Зависит от формата миниатюр, см. ниже. |
Данные миниатюры зависят от формата миниатюры следующим образом:
Миниатюра сохраняется в кодировке JPEG. | ||
---|---|---|
Поле | Размер (байты) | Описание |
СЕБЯ | 2 | FF D8 |
переменная | Должен быть в формате JIF с использованием YCbCr или просто Y и не должен содержать сегментов JFIF или JFXX. | |
ВЗ | 2 | FF D9 |
Миниатюра хранится с использованием одного байта на пиксель. | ||
---|---|---|
Поле | Размер (байты) | Описание |
Xминиатюра | 1 | Количество пикселей по горизонтали следующей встроенной миниатюры. Не должно быть нулем |
Миниатюра | 1 | Количество пикселей по вертикали для следующей встроенной миниатюры. Не должно быть нулем |
Палитра миниатюр | 768 | 256 записей палитры, каждая из которых содержит 24-битное значение цвета RGB. |
Миниатюры данных | н | Один байт на пиксель, содержащий индекс цвета в палитре. с n = Xthumbnail × Ythumbnail |
Миниатюра хранится с использованием трех байт на пиксель. | ||
---|---|---|
Поле | Размер (байты) | Описание |
Xминиатюра | 1 | Количество пикселей по горизонтали следующей встроенной миниатюры. Не должно быть нулем |
Миниатюра | 1 | Количество пикселей по вертикали для следующей встроенной миниатюры. Не должно быть нулем |
Миниатюры данных | 3 × н | Несжатые 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 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] Новые публикации включали редакционные улучшения, но не имели существенных технических изменений.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б «Рекомендация МСЭ-Т T.81: Информационные технологии. Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном. Требования и рекомендации» (PDF) . МСЭ-Т (ранее CCITT) . 18 февраля 1992 года . Проверено 15 июня 2015 г.
- ^ Перейти обратно: а б Гамильтон, Эрик (12 сентября 1992 г.). «Формат обмена файлами JPEG, версия 1.02» (pdf, 0,02 МБ) . Проверено 15 июня 2015 г.
- ^ Перейти обратно: а б «Формат обмена файлами JPEG (JFIF)» . ecma-international.org . 2009 . Проверено 15 июня 2015 г.
- ^ «Рекомендация МСЭ-Т T.871: Информационные технологии – Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Формат обмена файлами JPEG (JFIF)» (PDF) . МСЭ-Т. 14 мая 2011 года . Проверено 15 июня 2015 г.
- ^ «ISO/IEC 10918-5:2013: Информационные технологии. Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Формат обмена файлами JPEG (JFIF)» . ИСО/Международная электротехническая комиссия. 1 мая 2013 года . Проверено 15 июня 2015 г.
Дальнейшее чтение
[ редактировать ]Книги
[ редактировать ]- Миано, Джон М., «Форматы файлов сжатых изображений»; 1999, Эддисон-Уэсли ISBN 978-0-201-60443-6
- Пеннебейкер, Уильям Б. и Джоан Л. Митчелл : стандарт сжатия данных неподвижных изображений JPEG ; 3-е издание, 1993 г., Спрингер. 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 г.