Как пишется jpeg

Файл формата JPEG открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ.

JPEG (полн. Joint Photographic Experts Group) – один из самых распространенных форматов сжатия графических изображений. У JPEG файла практически отсутствуют какие-либо ограничения по числу цветов (как, например, у GIF). Именно благодаря этому он имеет улучшенные параметры конвертации графических фрагментов. Отличительная особенность фотографий на основе JPEG – это наличие яркой цветовой палитры высокого качества.

Ввиду этого формат JPEG сыскал широкую популярность у пользователей различных Интернет-ресурсов. Можно с большой долей вероятности утверждать, что большинство опубликованных в сети Интернет изображений – это файлы с расширением JPEG. Фото JPEG – 42-х битная цветовая палитра, поддерживающая более 16 млн. цветов.

Диапазон степени сжатия градируется от 10:1 до 20:1. Для выбора такого диапазона может быть использована одна из многочисленных графических утилит, например, ACDSee Photo Manager.

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

Основное же практическое назначение данного расширения – обработка цифровых изображений, где при традиционно высокой степени конвертации файла, качество графического фрагмента будет на самом высоком уровне.

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

Современный JPEG – кроссплатформенный формат, который одинаково хорошо поддерживается на платформе ОС Windows, Mac или Linux.

Программы для открытия JPEG файлов

Чтобы открыть и изменить JPEG расширения на базе платформы ОС Windows можно воспользоваться самыми разнообразными графическими редакторами, в частности:

  • Photo Viewer;
  • Microsoft Paint;
  • Adobe Photoshop;
  • Adobe Illustrator;
  • CorelDRAW Graphics, Corel PaintShop;
  • ACDSee Photo Manager;
  • Laughingbird The Logo Creator;
  • Roxio Creator;
  • Axel Rietschin FastPictureViewer;
  • Zoner Photo Studio, IrfanView;
  • Adobe Fireworks, PhotoOnWeb;
  • Artweaver;
  • Ability Photopaint.

Файл JPEG также адаптирован для других ОС, например, в Mac ОС расширение может быть открыто для просмотра Apple Preview, ACDSee Pro for Mac, Roxio Toast, Fireworks for Mac или Flare for Mac.

Но базе платформы ОС Linux JPEG поддерживает работу с GIMP и Gwenview. Также, открыть формат JPEG онлайн может любой интернет-браузер.  

Примечательно, что разработчики программных продуктов предусмотрительно позаботились о создании универсального ПО (кроссплатформенного ПО), адаптированного для интеграции на любую ОС: Paint.NET, GIMP, Easy-PhotoPrint EX.

Если при открытии расширения JPEG возникает ошибка, причины могут заключаться в следующем:

  • поврежден или инфицирован файл;
  • файл не связан с реестром ОС (выбрано некорректное приложение для воспроизведения или не произведена инсталляция конкретного редактора);
  • недостаточно ресурсов устройства или ОС;
  • поврежденные или устаревшие драйвера.

Конвертация JPEG в другие форматы

JPEG – один из самых неприхотливых для конвертации форматов. Перевод может произвести конвертер JPEG, например, Adobe Photoshop или CorelDRAW.

Также, преобразовать онлайн HEIC файлы в Jpeg можно с помощью сервиса Heic to jpeg (поддерживает русский язык).

С помощью интегрированного в данные графические редакторы транслятора, можно выполнить следующие преобразования форматов:

  • JPEG -> DJV;
  • JPEG -> ICON;
  • JPEG -> DJVU;
  • JPEG -> EPS.
  • JPEG -> ODG;
  • JPEG -> PDF;
  • JPEG -> BMP;
  • JPEG -> PNG.
  • JPEG -> GIF;
  • JPEG -> GP5.

Почему именно JPEG и в чем его достоинства?

JPEG – один из самых востребованных среди рядовых пользователей форматов обмена графическими изображениями. Благодаря высокой степени сжатия и сохранению качества графики, JPEG получил широкое распространение как формат, публикуемый на самых разнообразных сайтах и Интернет-ресурсах.

JPEG (произносится «джейпег»[1], англ. Joint Photographic Experts Group, по названию организации-разработчика) — один из популярных растровых графических форматов, применяемый для хранения фотографий и подобных им изображений. Файлы, содержащие данные JPEG, обычно имеют расширения (суффиксы) .jpg (самое популярное), .jfif, .jpe или .jpeg. MIME-тип — image/jpeg.

Расширение джипег как пишется

Фотография заката в формате JPEG с уменьшением степени сжатия слева направо

Алгоритм JPEG позволяет сжимать изображение как с потерями, так и без потерь (режим сжатия lossless JPEG).
Поддерживаются изображения с линейным размером не более 65535 × 65535 пикселов.

В 2010 году с целью сохранения для потомков информации о популярных в начале XXI века цифровых форматах учёные из проекта PLANETS заложили инструкции по чтению формата JPEG в специальную капсулу, которую поместили в специальное хранилище в швейцарских Альпах[2].

Область применения[править | править код]

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

Формат JPEG в режиме сжатия с потерями малопригоден для сжатия чертежей, текстовой и знаковой графики, где резкий контраст между соседними пикселами приводит к появлению заметных артефактов. Такие изображения целесообразно сохранять в форматах без потерь, таких как JPEG-LS, TIFF, GIF, PNG, либо использовать режим сжатия Lossless JPEG.

JPEG (как и другие форматы сжатия с потерями) не подходит для сжатия изображений при многоэтапной обработке, так как искажения в изображения будут вноситься каждый раз при сохранении промежуточных результатов обработки.

JPEG не должен использоваться и в тех случаях, когда недопустимы даже минимальные потери, например при сжатии астрономических или медицинских изображений. В таких случаях может быть рекомендован предусмотренный стандартом JPEG режим сжатия Lossless JPEG (который, однако, не поддерживается большинством популярных кодеков) или стандарт сжатия JPEG-LS.

Сжатие[править | править код]

При сжатии изображение преобразуется из цветового пространства RGB в YCbCr. Стандарт JPEG (ISO/IEC 10918-1) не регламентирует выбор именно YCbCr, допуская и другие виды преобразования (например, с числом компонентов[3], отличным от трёх), и сжатие без преобразования (непосредственно в RGB), однако спецификация JFIF (JPEG File Interchange Format, предложенная в 1991 году специалистами компании C-Cube Microsystems, и ставшая в настоящее время стандартом де-факто) предполагает использование преобразования RGB->YCbCr.

После преобразования RGB->YCbCr для каналов изображения Cb и Cr, отвечающих за цвет, может выполняться «прореживание» (subsampling[4]), которое заключается в том, что каждому блоку из 4 пикселей (2х2) яркостного канала Y ставятся в соответствие усреднённые значения Cb и Cr (схема прореживания «4:2:0»[5]). При этом для каждого блока 2х2 вместо 12 значений (4 Y, 4 Cb и 4 Cr) используется всего 6 (4 Y и по одному усреднённому Cb и Cr). Если к качеству восстановленного после сжатия изображения предъявляются повышенные требования, прореживание может выполняться лишь в каком-то одном направлении — по вертикали (схема «4:4:0») или по горизонтали («4:2:2»), или не выполняться вовсе («4:4:4»).

Расширение джипег как пишется

Пример изображения в формате jpg.

Стандарт допускает также прореживание с усреднением Cb и Cr не для блока 2х2, а для четырёх расположенных последовательно (по вертикали или по горизонтали) пикселей, то есть для блоков 1х4, 4х1 (схема «4:1:1»), а также 2х4 и 4х2 (схема «4:1:0»). Допускается также использование различных типов прореживания для Cb и Cr, но на практике такие схемы применяются исключительно редко.

Далее яркостный компонент Y и отвечающие за цвет компоненты Cb и Cr разбиваются на блоки 8х8 пикселей. Каждый такой блок подвергается дискретному косинусному преобразованию (ДКП). Полученные коэффициенты ДКП квантуются (для Y, Cb и Cr в общем случае используются разные матрицы квантования) и пакуются с использованием кодирования серий и кодов Хаффмана. Стандарт JPEG допускает также использование значительно более эффективного арифметического кодирования, однако из-за патентных ограничений (патент на описанный в стандарте JPEG арифметический QM-кодер принадлежит IBM) на практике оно используется редко. В популярную библиотеку libjpeg последних версий включена поддержка арифметического кодирования, но с просмотром сжатых с использованием этого метода изображений могут возникнуть проблемы, поскольку многие программы просмотра не поддерживают их декодирование.

Матрицы, используемые для квантования коэффициентов ДКП, хранятся в заголовочной части JPEG-файла. Обычно они строятся так, что высокочастотные коэффициенты подвергаются более сильному квантованию, чем низкочастотные. Это приводит к огрублению мелких деталей на изображении. Чем выше степень сжатия, тем более сильному квантованию подвергаются все коэффициенты.

При сохранении изображения в JPEG-файле кодеру указывается параметр качества, задаваемый в некоторых условных единицах, например, от 1 до 100 или от 1 до 10. Большее число обычно соответствует лучшему качеству (и большему размеру сжатого файла). Однако, в самом JPEG-файле такой параметр отсутствует, а качество восстановленного изображения определяется матрицами квантования, типом прореживания цветоразностных компонентов и точностью выполнения математических операций как на стороне кодера, так и на стороне декодера. При этом даже при использовании наивысшего качества (соответствующего матрице квантования, состоящей из одних только единиц, и отсутствию прореживания цветоразностных компонентов) восстановленное изображение не будет в точности совпадать с исходным, что связано как с конечной точностью выполнения ДКП, так и с необходимостью округления значений Y, Cb, Cr и коэффициентов ДКП до ближайшего целого. Режим сжатия Lossless JPEG, не использующий ДКП, обеспечивает точное совпадение восстановленного и исходного изображений, однако его малая эффективность (коэффициент сжатия редко превышает 2) и отсутствие поддержки со стороны разработчиков программного обеспечения не способствовали популярности Lossless JPEG.

Разновидности схем сжатия JPEG[править | править код]

Стандарт JPEG предусматривает два основных способа представления кодируемых данных.

Наиболее распространённым, поддерживаемым большинством доступных кодеков, является последовательное (sequential JPEG) представление данных, предполагающее последовательный обход кодируемого изображения разрядностью 8 бит на компоненту (или 8 бит на пиксель для чёрно-белых полутоновых изображений) поблочно слева направо, сверху вниз. Над каждым кодируемым блоком изображения осуществляются описанные выше операции, а результаты кодирования помещаются в выходной поток в виде единственного «скана», то есть массива кодированных данных, соответствующего последовательно пройденному («просканированному») изображению. Основной или «базовый» (baseline) режим кодирования допускает только такое представление (и хаффмановское кодирование квантованных коэффициентов ДКП). Расширенный (extended) режим наряду с последовательным допускает также прогрессивное (progressive JPEG) представление данных, кодирование изображений разрядностью 12 бит на компоненту/пиксель (сжатие таких изображений спецификацией JFIF не поддерживается) и арифметическое кодирование квантованных коэффициентов ДКП.

В случае progressive JPEG сжатые данные записываются в выходной поток в виде набора сканов, каждый из которых описывает изображение полностью с всё большей степенью детализации. Это достигается либо путём записи в каждый скан не полного набора коэффициентов ДКП, а лишь какой-то их части: сначала — низкочастотных, в следующих сканах — высокочастотных (метод «spectral selection» то есть спектральных выборок), либо путём последовательного, от скана к скану, уточнения коэффициентов ДКП (метод «successive approximation», то есть последовательных приближений). Такое прогрессивное представление данных оказывается особенно полезным при передаче сжатых изображений с использованием низкоскоростных каналов связи, поскольку позволяет получить представление обо всём изображении уже после передачи незначительной части JPEG-файла.

Обе описанные схемы (и sequential, и progressive JPEG) базируются на ДКП и принципиально не позволяют получить восстановленное изображение абсолютно идентичным исходному. Однако стандарт допускает также сжатие, не использующее ДКП, а построенное на основе линейного предсказателя (lossless, то есть «без потерь», JPEG), гарантирующее полное, бит-в-бит, совпадение исходного и восстановленного изображений. При этом коэффициент сжатия для фотографических изображений редко достигает 2, но гарантированное отсутствие искажений в некоторых случаях оказывается востребованным. Заметно большие степени сжатия могут быть получены при использовании не имеющего, несмотря на сходство в названиях, непосредственного отношения к стандарту JPEG ISO/IEC 10918-1 (ITU T.81 Recommendation) метода сжатия JPEG-LS, описываемого стандартом ISO/IEC 14495-1 (ITU T.87 Recommendation).

Синтаксис и структура[править | править код]

Файл JPEG содержит последовательность маркеров, каждый из которых начинается с байта 0xFF, свидетельствующего о начале маркера, и байта-идентификатора. Некоторые маркеры состоят только из этой пары байтов, другие же содержат дополнительные данные, состоящие из двухбайтового поля с длиной информационной части маркера (включая длину этого поля, но за вычетом двух байтов начала маркера, то есть 0xFF и идентификатора) и собственно данных. Такая структура файла позволяет быстро отыскать маркер с необходимыми данными (например, с длиной строки, числом строк и числом цветовых компонентов сжатого изображения).

Основные маркеры JPEG[6]

Маркер Байты Длина Назначение Комментарии
SOI 0xFFD8 нет Начало изображения
SOF0 0xFFC0 переменный размер Начало фрейма (базовый, ДКП) Показывает, что изображение кодировалось в базовом режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения (двухбайтовые поля со смещением соответственно 5 и 7 относительно начала маркера), количество компонентов (байтовое поле со смещением 9 относительно начала маркера), число бит на компонент — строго 8 (байтовое поле со смещением 4 относительно начала маркера), а также соотношение компонентов (например, 4:2:0).
SOF1 0xFFC1 переменный размер Начало фрейма (расширенный, ДКП, код Хаффмана) Показывает, что изображение кодировалось в расширенном (extended) режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения, количество компонентов, число бит на компонент (8 или 12), а также соотношение компонентов (например, 4:2:0).
SOF2 0xFFC2 переменный размер Начало фрейма (прогрессивный, ДКП, код Хаффмана) Показывает, что изображение кодировалось в прогрессивном режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения, количество компонентов, число бит на компонент (8 или 12), а также соотношение компонентов (например, 4:2:0).
DHT 0xFFC4 переменный размер Содержит таблицы Хаффмана Задает одну или более таблиц Хаффмана.
DQT 0xFFDB переменный размер Содержит таблицы квантования Задает одну или более таблиц квантования.
DRI 0xFFDD 4 байта Указывает длину рестарт-интервала Задает интервал между маркерами RST n в макроблоках. При отсутствии DRI появление в потоке кодированных данных маркеров RSTn недопустимо и считается ошибкой. Если при кодировании маркеры RST n не применяются, маркер DRI либо не используется вовсе, либо интервал повторений в нём указывается равным 0.
SOS 0xFFDA переменный размер Начало сканирования Начало первого или очередного скана изображения с направлением обхода слева направо сверху вниз. Если использовался базовый режим кодирования, используется один скан. При использовании прогрессивных режимов используется несколько сканов. Маркер SOS является разделяющим между информативной (заголовком) и закодированной (собственно сжатыми данными) частями изображения.
RSTn 0xFFDn нет Перезапуск Маркеры перезапуска используются для сегментирования кодированных энтропийным кодером данных. В каждом сегменте данные декодируются независимо, что позволяет распараллелить процедуру декодирования. При повреждении кодированных данных в процессе передачи или хранения JPEG-файла использование маркеров перезапуска позволяет ограничить потери (макроблоки из неповреждённых сегментов будут восстановлены правильно). Вставляется в каждом r-м макроблоке, где r — интервал перезапуска DRI маркера. Не используется при отсутствии DRI маркера. n, младшие 3 бита маркера кода, циклы от 0 до 7.
APPn 0xFFEn переменный размер Задаётся приложением Например, в EXIF JPEG-файла используется маркер APP1 для хранения метаданных, расположенных в структуре, основанной на TIFF.
COM 0xFFFE переменный размер Комментарий Содержит текст комментария.
EOI 0xFFD9 нет Конец закодированной части изображения.

Достоинства и недостатки[править | править код]

К недостаткам сжатия по стандарту JPEG следует отнести появление на восстановленных изображениях при высоких степенях сжатия характерных артефактов: изображение рассыпается на блоки размером 8×8 пикселей (этот эффект особенно заметен на областях изображения с плавными изменениями яркости), в областях с высокой пространственной частотой (например, на контрастных контурах и границах изображения) возникают артефакты в виде шумовых ореолов. Стандарт JPEG (ISO/IEC 10918-1, Annex K, п. K.8) предусматривает использование специальных фильтров для подавления блоковых артефактов, но на практике подобные фильтры, несмотря на их высокую эффективность, практически не используются.

Однако, несмотря на недостатки, JPEG получил очень широкое распространение из-за достаточно высокой (относительно существовавших во время его появления альтернатив) степени сжатия, поддержке сжатия полноцветных изображений и относительно невысокой вычислительной сложности.

Скорость сжатия по стандарту JPEG[править | править код]

Для ускорения процесса сжатия по стандарту JPEG традиционно используется распараллеливание вычислений, в частности — при вычислении ДКП. Исторически одна из первых попыток ускорить процесс сжатия с использованием такого подхода описана в опубликованной в 1993 году статье Касперовича и Бабкина[7], в которой предлагалась оригинальная аппроксимация ДКП, делающая возможным эффективное распараллеливание вычислений с использованием 32-разрядных регистров общего назначения процессоров Intel 80386. Появившиеся позже более производительные вычислительные схемы использовали SIMD-расширения набора инструкций процессоров архитектуры x86. Значительно лучших результатов позволяют добиться схемы, использующие вычислительные возможности графических ускорителей (технологии NVIDIA CUDA и AMD FireStream) для организации параллельных вычислений не только ДКП, но и других этапов сжатия JPEG (преобразование цветовых пространств, run-level, статистическое кодирование и т. п.), причём для каждого блока 8х8 кодируемого или декодируемого изображения. В статье[8] была представлена реализация распараллеливания всех стадий алгоритма JPEG по технологии CUDA, что значительно повысило скорость сжатия и декодирования по стандарту JPEG.

См. также[править | править код]

  • JPEG-LS
  • JPEG 2000
  • libjpeg
  • MJPEG
  • MPEG
  • WebP
  • GIF
  • PNG
  • BMP
  • WBMP

Примечания[править | править код]

Ссылки[править | править код]

  • The JPEG committee homepage
  • Спецификация JFIF 1.02 (текстовый файл)
  • Различные способы оптимизации JPG файлов практически без потери качества. Источник
  • Различные способы открытия JPG файлов. Источник
JPEG

Расширение

.jpg, .jpeg

MIME

image/jpeg

Сигнатура

0xFF 0xD8

Опубликован

1991 год

Развит в

JPEG 2000, JPEG XR, MotionJPEG

JPEG (произносится «джейпег»[1], англ. Joint Photographic Experts Group, по названию организации-разработчика) — один из популярных графических форматов, применяемый для хранения фотоизображений и подобных им изображений. Файлы, содержащие данные JPEG, обычно имеют расширения (суффиксы) .jpeg, .jfif, .jpg, .JPG, или .JPE. Однако из них .jpg является самым популярным на всех платформах. MIME-типом является image/jpeg.

Фотография заката в формате JPEG с уменьшением степени сжатия слева направо

Алгоритм JPEG позволяет сжимать изображение как с потерями, так и без потерь (режим сжатия lossless JPEG). Поддерживаются изображения с линейным размером не более 65535 × 65535 пикселей.

Содержание

  • 1 Область применения
    • 1.1 Сжатие
    • 1.2 Разновидности схем сжатия JPEG
  • 2 Синтаксис и структура
  • 3 Достоинства и недостатки
  • 4 Производительность сжатия по стандарту JPEG
  • 5 Интересные факты
  • 6 См. также
  • 7 Примечания
  • 8 Ссылки

Область применения

Алгоритм JPEG в наибольшей степени пригоден для сжатия фотографий и картин, содержащих реалистичные сцены с плавными переходами яркости и цвета. Наибольшее распространение JPEG получил в цифровой фотографии и для хранения и передачи изображений с использованием сети Интернет.

С другой стороны, JPEG малопригоден для сжатия чертежей, текстовой и знаковой графики, где резкий контраст между соседними пикселами приводит к появлению заметных артефактов. Такие изображения целесообразно сохранять в форматах без потерь, таких как TIFF, GIF или PNG.

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

JPEG не должен использоваться и в тех случаях, когда недопустимы даже минимальные потери, например, при сжатии астрономических или медицинских изображений. В таких случаях может быть рекомендован предусмотренный стандартом JPEG режим сжатия Lossless JPEG (который, однако, не поддерживается большинством популярных кодеков) или стандарт сжатия JPEG-LS.

Сжатие

При сжатии изображение преобразуется из цветового пространства RGB в YCbCr (YUV). Следует отметить, что стандарт JPEG (ISO/IEC 10918-1) никак не регламентирует выбор именно YCbCr, допуская и другие виды преобразования (например, с числом компонентов[2], отличным от трёх), и сжатие без преобразования (непосредственно в RGB), однако спецификация JFIF (JPEG File Interchange Format, предложенная в 1991 году специалистами компании C-Cube Microsystems, и ставшая в настоящее время стандартом де-факто) предполагает использование преобразования RGB->YCbCr.

После преобразования RGB->YCbCr для каналов изображения Cb и Cr, отвечающих за цвет, может выполняться «прореживание» (subsampling[3]), которое заключается в том, что каждому блоку из 4 пикселов (2х2) яркостного канала Y ставятся в соответствие усреднённые значения Cb и Cr (схема прореживания «4:2:0»[4]). При этом для каждого блока 2х2 вместо 12 значений (4 Y, 4 Cb и 4 Cr) используется всего 6 (4 Y и по одному усреднённому Cb и Cr). Если к качеству восстановленного после сжатия изображения предъявляются повышенные требования, прореживание может выполняться лишь в каком-то одном направлении — по вертикали (схема «4:4:0») или по горизонтали («4:2:2»), или не выполняться вовсе («4:4:4»).

Стандарт допускает также прореживание с усреднением Cb и Cr не для блока 2х2, а для четырёх расположенных последовательно (по вертикали или по горизонтали) пикселов, то есть для блоков 1х4, 4х1 (схема «4:1:1»), а также 2х4 и 4х2 (схема «4:1:0»). Допускается также использование различных типов прореживания для Cb и Cr, но на практике такие схемы применяются исключительно редко.

Далее яркостный компонент Y и отвечающие за цвет компоненты Cb и Cr разбиваются на блоки 8х8 пикселов. Каждый такой блок подвергается дискретному косинусному преобразованию (ДКП). Полученные коэффициенты ДКП квантуются (для Y, Cb и Cr в общем случае используются разные матрицы квантования) и пакуются с использованием кодирования серий и кодов Хаффмана. Стандарт JPEG допускает также использование значительно более эффективного арифметического кодирования, однако из-за патентных ограничений (патент на описанный в стандарте JPEG арифметический QM-кодер принадлежит IBM) на практике оно используется редко. В популярную библиотеку libjpeg последних версий включена поддержка арифметического кодирования, но с просмотром сжатых с использованием этого метода изображений могут возникнуть проблемы, поскольку многие программы просмотра не поддерживают их декодирование.

Матрицы, используемые для квантования коэффициентов ДКП, хранятся в заголовочной части JPEG-файла. Обычно они строятся так, что высокочастотные коэффициенты подвергаются более сильному квантованию, чем низкочастотные. Это приводит к огрублению мелких деталей на изображении. Чем выше степень сжатия, тем более сильному квантованию подвергаются все коэффициенты.

При сохранении изображения в JPEG-файле указывается параметр качества, задаваемый в некоторых условных единицах, например, от 1 до 100 или от 1 до 10. Большее число обычно соответствует лучшему качеству (и большему размеру сжатого файла). Однако даже при использовании наивысшего качества (соответствующего матрице квантования, состоящей из одних только единиц) восстановленное изображение не будет в точности совпадать с исходным, что связано как с конечной точностью выполнения ДКП, так и с необходимостью округления значений Y, Cb, Cr и коэффициентов ДКП до ближайшего целого. Режим сжатия Lossless JPEG, не использующий ДКП, обеспечивает точное совпадение восстановленного и исходного изображений, однако его малая эффективность (коэффициент сжатия редко превышает 2) и отсутствие поддержки со стороны разработчиков программного обеспечения не способствовали популярности Lossless JPEG.

Разновидности схем сжатия JPEG

Стандарт JPEG предусматривает два основных способа представления кодируемых данных.

Наиболее распространённым, поддерживаемым большинством доступных кодеков, является последовательное (sequential JPEG) представление данных, предполагающее последовательный обход кодируемого изображения поблочно слева направо, сверху вниз. Над каждым кодируемым блоком изображения осуществляются описанные выше операции, а результаты кодирования помещаются в выходной поток в виде единственного «скана», то есть массива кодированных данных, соответствующего последовательно пройденному («просканированному») изображению. Основной или «базовый» (baseline) режим кодирования допускает только такое представление. Расширенный (extended) режим наряду с последовательным допускает также прогрессивное (progressive JPEG) представление данных.

В случае progressive JPEG сжатые данные записываются в выходной поток в виде набора сканов, каждый из которых описывает изображение полностью с всё большей степенью детализации. Это достигается либо путём записи в каждый скан не полного набора коэффициентов ДКП, а лишь какой-то их части: сначала — низкочастотных, в следующих сканах — высокочастотных (метод «spectral selection» то есть спектральных выборок), либо путём последовательного, от скана к скану, уточнения коэффициентов ДКП (метод «successive approximation», то есть последовательных приближений). Такое прогрессивное представление данных оказывается особенно полезным при передаче сжатых изображений с использованием низкоскоростных каналов связи, поскольку позволяет получить представление обо всём изображении уже после передачи незначительной части JPEG-файла.

Обе описанные схемы (и sequential, и progressive JPEG) базируются на ДКП и принципиально не позволяют получить восстановленное изображение абсолютно идентичным исходному. Однако стандарт допускает также сжатие, не использующее ДКП, а построенное на основе линейного предсказателя (lossless, то есть «без потерь», JPEG), гарантирующее полное, бит-в-бит, совпадение исходного и восстановленного изображений. При этом коэффициент сжатия для фотографических изображений редко достигает 2, но гарантированное отсутствие искажений в некоторых случаях оказывается востребованным. Заметно большие степени сжатия могут быть получены при использовании не имеющего, несмотря на сходство в названиях, непосредственного отношения к стандарту JPEG ISO/IEC 10918-1 (ITU T.81 Recommendation) метода сжатия JPEG-LS, описываемого стандартом ISO/IEC 14495-1 (ITU T.87 Recommendation).

Синтаксис и структура

Файл JPEG содержит последовательность маркеров, каждый из которых начинается с байта 0xFF, свидетельствующего о начале маркера, и байта-идентификатора. Некоторые маркеры состоят только из этой пары байтов, другие же содержат дополнительные данные, состоящие из двухбайтового поля с длиной информационной части маркера (включая длину этого поля, но за вычетом двух байтов начала маркера то есть 0xFF и идентификатора) и собственно данных. Такая структура файла позволяет быстро отыскать маркер с необходимыми данными (например, с длиной строки, числом строк и числом цветовых компонентов сжатого изображения).

Основные маркеры JPEG[5]

Маркер Байты Длина Назначение Комментарии
SOI 0xFFD8 нет Начало изображения
SOF0 0xFFC0 переменный размер Начало фрейма (базовый, ДКП) Показывает что изображение кодировалось в базовом режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения (двухбайтовые поля со смещением соответственно 5 и 7 относительно начала маркера), количество компонентов (байтовое поле со смещением 8 относительно начала маркера), число бит на компонент (байтовое поле со смещением 4 относительно начала маркера), а также соотношение компонентов (например, 4:2:0).
SOF1 0xFFC1 переменный размер Начало фрейма (расширенный, ДКП, код Хаффмана) Показывает что изображение кодировалось в расширенном (extended) режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения, количество компонентов, число бит на компонент, а также соотношение компонентов (например, 4:2:0).
SOF2 0xFFC2 переменный размер Начало фрейма (прогрессивный, ДКП, код Хаффмана) Показывает что изображение кодировалось в прогрессивном режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения, количество компонентов, число бит на компонент, а также соотношение компонентов (например, 4:2:0).
DHT 0xFFC4 переменный размер Содержит таблицы Хаффмана Задает одну или более таблиц Хаффмана.
DQT 0xFFDB переменный размер Содержит таблицы квантования Задает одну или более таблиц квантования.
DRI 0xFFDD 4 байта Указывает интервал повторений Задает интервал между маркерами RST n в макроблоках.
SOS 0xFFDA переменный размер Начало сканирования Начало первого или очередного скана изображения с направлением обхода слева направо сверху вниз. Если использовался базовый режим кодирования, используется один скан. При использовании прогрессивных режимов используется несколько сканов. Маркер SOS является разделяющим между информативной (заголовком) и закодированной (собственно сжатыми данными) частями изображения.
RSTn 0xFFDn нет Перезапуск Вставляется в каждом r макроблоке, где r — интервал перезапуска DRI маркера. Не используется при отсутствии DRI маркера. n, младшие 3 бита маркера кода, циклы от 0 до 7.
APPn 0xFFEn переменный размер Задаётся приложением Например, в EXIF JPEG-файла используется маркер APP1 для хранения метаданных, расположеных в структуре, основанной на TIFF.
COM 0xFFFE переменный размер Комментарий Содержит текст комментария.
EOI 0xFFD9 нет Конец закодированной части изображения.

Достоинства и недостатки

К недостаткам сжатия по стандарту JPEG следует отнести появление на восстановленных изображениях при высоких степенях сжатия характерных артефактов: изображение рассыпается на блоки размером 8×8 пикселов (этот эффект особенно заметен на областях изображения с плавными изменениями яркости), в областях с высокой пространственной частотой (например, на контрастных контурах и границах изображения) возникают артефакты в виде шумовых ореолов. Следует отметить, что стандарт JPEG (ISO/IEC 10918-1, Annex K, п. K.8) предусматривает использование специальных фильтров для подавления блоковых артефактов, но на практике подобные фильтры, несмотря на их высокую эффективность, практически не используются. Однако, несмотря на недостатки, JPEG получил очень широкое распространение из-за достаточно высокой (относительно существовавших во время его появления альтернатив) степени сжатия, поддержке сжатия полноцветных изображений и относительно невысокой вычислительной сложности.

Производительность сжатия по стандарту JPEG

Для ускорения процесса сжатия по стандарту JPEG традиционно используется распараллеливание вычислений, в частности — при вычислении ДКП. Исторически одна из первых попыток ускорить процесс сжатия с использованием такого подхода описана в опубликованной в 1993 г. статье Касперовича и Бабкина [6], в которой предлагалась оригинальная аппроксимация ДКП, делающая возможным эффективное распараллеливание вычислений с использованием 32-разрядных регистров общего назначения процессоров Intel 80386. Появившиеся позже более производительные вычислительные схемы использовали SIMD-расширения набора инструкций процессоров архитектуры x86. Значительно лучших результатов позволяют добиться схемы, использующие вычислительные возможности графических ускорителей (технологии NVIDIA CUDA и AMD FireStream) для организации параллельных вычислений не только ДКП, но и других этапов сжатия JPEG (преобразование цветовых пространств, run-level, статистическое кодирование и т.п.), причём для каждого блока 8х8 кодируемого или декодируемого изображения. В статье [7] была впервые[источник?] представлена реализация распараллеливания всех стадий алгоритма JPEG по технологии CUDA, что значительно ускорило производительность сжатия и декодирования по стандарту JPEG.

Интересные факты

В 2010 году ученые из проекта PLANETS поместили инструкции по чтению формата JPEG в специальную капсулу, которую поместили в специальный бункер в швейцарских Альпах. Сделано это было с целью сохранения для потомков информации о популярных в начале XXI века цифровых форматах.[8]

См. также

  • JPEG-LS
  • JPEG2000
  • libjpeg
  • MJPEG
  • MPEG
  • WebP

Примечания

  1. JPEG pronounced — Поиск в Google
  2. В соответствии с ГОСТ 34.003-90 в области информационных технологий данный термин имеет мужской род
  3. ISO/IEC 10918-1 : 1993(E) p.28. Архивировано из первоисточника 22 августа 2011.
  4. Kerr, Douglas A. «Chrominance Subsampling in Digital Images»
  5. ISO/IEC 10918-1 : 1993(E) p.36. Архивировано из первоисточника 22 августа 2011.
  6. Kasperovich, L.V., Babkin, V.F. «Fast discrete cosine transform approximation for JPEG image compression»
  7. «Использование технологии CUDA для быстрого сжатия изображений по алгоритму JPEG»
  8. Ученые законсервировали для потомков форматы JPEG и PDF. Проверено 21 мая 2010.

Ссылки

  • The JPEG committee homepage
  • Спецификация JFIF 1.02 (текстовый файл)
  • Оптимизация JPEG. Часть 1, Часть 2, Часть 3.
  • Быстрое сжатие JPEG на видеокарте.
 Просмотр этого шаблона Медиаконтейнеры
Видео/аудио

3GP • ASF • AVI • Bink • DMF • DPX • EVO • FLV • Matroska (MKV) • WebM • MPEG-PS • MPEG-TS • MP4 • MXF • NUT • Ogg • Ogg Media • QuickTime • RealMedia • Smacker • RIFF • VOB • сравнение сжатие

Аудио

AIFF • APE • AU • DSD • DXD • MLP • MP3 • FLAC • SHN (англ.) WAV • WMA • сравнение сжатие

Графические форматы (сжатие)
Растровые

Без потерь: BMP • FPX • GIF • ICO • ILBM • JBIG • PCX • PNG • PNM • PSD • RAW • TGA • WBMP • XCF • Включая сжатие с потерями: EXR • ICER • JBIG2 • JPEG / JP2 / JPEG-LS • JPEG XR (HD Photo) • PGF (англ.) • TIFF • WebP • Анимационные: APNG • GIF • MNG

Векторные

AI • CDR • EMF • EPS • PS • SVG • WMF • XPS • Анимационные: SVG • SWF • 3D: 3DS • VRML • X3D

Комплексные

CGM • DjVu • PDF

Метод сжатия с потерями для цифровых изображений

JPEG

Felis silvestris silvestris small gradual decrease of quality.pngФотография европейского wildcat с уменьшенной степенью сжатия и, следовательно, повышением качества, слева направо
расширение имени файла .jpg, . jpeg, .jpe. .jif, .jfif, .jfi
Тип интернет-носителя image / jpeg
Код типа JPEG
Унифицированный идентификатор типа (UTI) public.jpeg
Magic number ff d8 ff
Разработано Joint Photographic Experts Group, IBM, Mitsubishi Electric, ATT, Canon Inc., 16-я Исследовательская группа ITU-T
Первоначальный выпуск 18 сентября 1992 г.; 28 лет назад (1992-09-18)
Тип формата С потерями сжатие изображения формат
Стандарт ITU-T T.81, ITU -T T.83, ITU-T T.84, ITU-T T.86, ISO / IEC 10918
Веб-сайт www.jpeg.org / jpeg /

File:Continuously varied JPEG compression for an abdominal CT scan - 1471-2342-12-24-S1.ogvВоспроизвести мультимедиа Постоянно изменяемое сжатие JPEG (от Q = 100 до Q = 1) для брюшной КТ-компресс

JPEG () — широко используемый метод сжатия потерями для цифровых изображений, особенно для изображений, созданных с помощью цифровых фотографий. Степень сжатия можно регулировать, что позволяет выбирать компромисс между размером хранилища и качества изображения. JPEG обычно нагружает 10: 1 с незначительной потерей качества изображения. С момента своего появления в 1992 году JPEG был наиболее широко используемым стандартом сжатия изображений в мире и наиболее широко используемым цифровым форматом изображений, с использованием миллиардами изображений JPEG, создаваем каждый день как 2015 года.

Термин «JPEG» — это инициализм / акроним для Объединенной группы экспертов по фотографии, которая создала стандарт в 1992 году. Основой для JPEG является дискретный косинус преобразование (DCT), метод сжатия изображений с потерями, который был впервые предложен Насиром Ахмедом в 1972 году. JPEG был в влиятельном ответственном за распространение цифровых изображений и цифровых фотографий по всему миру. Интернет, а позже социальные сети.

Сжатие JPEG используется в некоторых форматах файлов изображений. JPEG / Exif — наиболее распространенный формат, используемые изображения цифровыми камерами и другими устройствами захвата фотографических изображений; Наряду с JPEG / JFIF, это наиболее распространенный формат для хранения и передачи фотографических изображений в World Wide Web. Эти варианты формата часто не различаются и называются просто JPEG.

Тип носителя MIME для JPEG — изображение / jpeg, за исключением более старых версий Internet Explorer, которые предоставляют тип MIME изображения / pjpeg при загрузке изображений JPEG. Файлы JPEG обычно имеют расширение имени файла , равное .jpgили .jpeg. JPEG / JFIF поддерживает максимальный размер изображения 65 535 × 65 535 пикселей, следовательно, до 4 гигапикселей при использовании сторонних сторон 1: 1. В 2000 году JPEG представила формат, который должен был стать преемником, JPEG 2000, но он не смог заменить исходный JPEG в качестве доминирующего стандарта изображения.

Содержание

  • 1 История
    • 1.1 Фон
    • 1.2 Стандарт JPEG
    • 1.3 Патентные споры
  • 2 Типичное использование
  • 3 Сжатие JPEG
    • 3.1 Редактирование без потерь
  • 4 Файлы JPEG
    • 4.1 Расширения файлов JPEG
    • 4.2 Цветовой профиль
  • 5 Синтаксис и структура
  • 6 Пример кодека JPEG
    • 6.1 Кодирование
      • 6.1.1 Преобразование цветового пространства
      • 6.1.2 Пониженная дискретизация
      • 6.1.3 Разделение блоков
      • 6.1. 4 Дискретное косинусное преобразование
      • 6.1.5 Квантование
      • 6.1.6 Энтропийное кодирование
    • 6.2 Степень сжатия и артефакты
    • 6.3 Декодирование
    • 6.4 Требуемая точность
  • 7 Эффекты сжатия JPEG
    • 7.1 Примеры фотографий
  • 8 Дальнейшее сжатие без потерь
  • 9 Производные форматы
    • 9.1 Для стереоскопического 3D
      • 9.1.1 Стереоскопический JPEG
      • 9.1.2 Формат нескольких изображений JPEG
    • 9.2 JPEG XT
    • 9.3 JPEG XL
    • 9.4 Несовместимый формат стандартов JPEG
  • 10 Реализации
  • 11 См. также
  • 12 Ссылки
  • 13 Внешние ссылки

История

Предпосылки

Исходная спецификация JPEG, опубликованная в 1992 году, реализует процессы из более ранние исследовательские работы и патенты, на которые ссылаются CCITT (теперь ITU-T, через 16-я Исследовательская комиссия ITU-T ) и Объединенная группа экспертов по фотографии. Основное использование алгоритма сжатия JPEG с помощью дискретного косинусного преобразователя (DCT), которое впервые было предложено Насиром Ахмедом как метод сжатия изображений в 1972 году. Ахмед разработал практический алгоритм DCT. с Т. Натараджаном из Государственного университета Канзаса и К. Р. Рао из Техасского университета в 1973 году. Их основополагающая статья 1974 года цитируется в статье JPEG вместе с более поздними исследовательскими работами, которые включают дальнейшую работу над DCT, включая Вена 1977 года. -Сюн Чен, Швейцария Смит и С.К. Фралик, которые описали быстрый алгоритм DCT, а также статья 1978 г., написанная Н.Дж. Нарасинья и С.К. Фраликом, и статья Б.Г. Ли. В описании также цитируется статья Wen-Hsiung Chen и W.K. Пратт как влияние на его алгоритм квантования , и статью Дэвида А. Хаффмана 1952 года о его алгоритме кодирования Хаффмана.

JPEG В спецификации цитируются патенты нескольких компаний. Следующие патенты легли в основу алгоритма арифметического кодирования.

  • IBM
    • США Патент 4652856 — 4 февраля 1986 — Коттапурам М.А. Мохиуддин и Йорма Дж. Риссанен — ​​Многоалфавитный арифметический код без умножения
    • США Патент 4905297 — 27 февраля 1990 г. — Г. Лэнгдон, Дж.Л. Митчелл, У. Пеннебейкер и Йорма Дж. Риссанен — ​​Система кодирования и декодирования арифметического кодирования
    • США Патент 4935882 — 19 июня 1990 г. — В. Пеннебейкер и Дж. Л. Митчелл — Вероятная адаптация для арифметических кодеров
  • Mitsubishi Electric
    • JP H02202267 (1021672 ) — 21 января 1989 г. — Тошихиро Кимура, Сигенори Кино, Фумитака Оно, Масаюки Ёсида — Система кодирования
    • JP H03247123 (2-46275 ) — 26 февраля 1990 г. — Фумитака Оно, Томохиро Кимура, Масаюки Йошида и Сигенори Кино — Устройство кодирования и метод кодирования

JPEG В указаниях также упоминаются три других патента IBM. Другие компании, упомянутые в качестве патентообладателей, включают ATT (два патента) и Canon Inc. В списке отсутствуют США. Патент 4698672, зарегистрированный Compression Labs ‘Wen-Hsiung Chen и Daniel J. Klenke в октябре 1986 года. Патент алгоритма сжатия изображения на основе DCT и позже станет причиной разногласий в 2002 (см. Патентный спор ниже). Тем не менее, спецификация JPEG процитировала две более ранние исследовательские работы Wen-Hsiung Chen, опубликованные в 1977 и 1984 годах.

Стандарт JPEG

«JPEG» означает Joint Photographic Experts Group, название комитет, создавший стандарт JPEG, а также другие стандарты кодирования неподвижных изображений. «Джойнт» означает ISO TC97 WG8 и CCITT SGVIII. Основанная в 1986 году, группа разработала стандарт JPEG в конце 1980-х годов. Среди нескольких изученных ими методов кодирования с преобразованием они выбрали дискретное косинусное преобразование (DCT), поскольку это был наиболее эффективный практический метод сжатия. Группа опубликовала стандарт JPEG в 1992.

В 1987 году ISO TC 97 стал ISO / IEC JTC1, а в 1992 году CCITT стал ITU-T. В настоящее время на стороне JTC1 JPEG является одной из двух подгрупп ISO /IEC Объединенного технического комитета 1, Подкомитета 29, Рабочей группы 1 (ISO / IEC JTC 1 / SC 29 / WG 1) — называется «Кодирование неподвижных изображений». Со стороны ITU-T органом является ИК16 ITU-T. Первоначальная группа JPEG была организована в 1986 году, выпустив первый стандарт JPEG в 1992 году, который был утвержден в сентябре 1992 года как ITU-T Рекомендация T.81, а в 1994 году как ISO / IEC 10918-1 .

Стандарт JPEG определяет кодек , который определяет, как изображение сжимается в потоке байтов и распаковывается обратно в изображение, но не формат файла, файл для хранения этого потока. Стандарты Exif и JFIF определяют обычно используемые форматы файлов для обмена изображениями, сжатыми в формате JPEG.

Стандарты JPEG официально называются «Информационные технологии» — цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном. ISO / IEC 10918 состоит из следующих частей:

Цифровое сжатие и кодирование неподвижных способов с непрерывным тоном — Части

Часть Стандарт ISO / IEC Рек. Дата первого публичного выпуска Последнее изменение Название Описание
Часть 1 ISO / IEC 10918-1: 1994 Т.81 (09/92) 18 сентября 1992 г. Требования и руководящие принципы
Часть 2 ISO / IEC 10918-2: 1995 T.83 (11/94) 11 ноября 1994 г. Тестирование на соответствие Правила и проверка на соответствие программного обеспечения (часть 1).
Часть 3 ISO / IEC 10918-3: 1997 T.84 (07/96) 3 июля 1996 г. 1 апреля 1999 г. Расширения Набор расширений для улучшения Части 1, включая Формат файла обмена неподвижными изображениями (SPIFF).
Часть 4 ISO / IEC 10918-4: 1999 T.86 (06/98) 18 июня 1998 г. 29 июня 2012 г. Регистрация профилей JPEG, профилей SPIFF, тегов SPIFF, цветовых пространств SPIFF, маркеров APPn, Типы сжатия SPIFF и методы регистрации (REGAUT) для регистрации некоторых параметров, используемых расширений JPEG
Часть 5 ISO / IEC 10918-5: 2013 T.871 (05/11) 14 мая 2011 г. Формат обмена файлами JPEG (JFIF) Популярный формат, который был де-факто форматом файлов для изображений, закодированных по стандарту JPEG. В 2009 году Комитет JPEG официально учредил Специальную группу для стандартизации JFIF как JPEG Часть 5.
Часть 6 ISO / IEC 10918-6: 2013 T.872 (06/12) Июнь 2012 г. Приложение к системам печати Определение подмножества функций и инструментов для обмена изображениями, закодированными в соответствии с ISO / IEC 10918-1, для печати.
Часть 7 ISO / IEC 10918-7: 2019 T.873 (05/19) Май 2019 г. Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном Предоставляет справочное программное обеспечение для технологий кодирования, применяемых в Рекомендации ITU-T T.81 — ISO / IEC 10918-1. Хотя эталонные реализации также предоставляет кодировщик, проверка их процесса кодирования выходит за рамки данной Спецификации.

Ecma International TR/ 98 определяет формат обмена файлами JPEG (JFIF); первое издание было опубликовано в июне 2009 года.

Патентные споры

В 2002 году Forgent Networks заявила, что она владеет и будет обеспечивать соблюдение патентных прав на технологию JPEG, вытекающих из патентных, поданный 27 октября 1986 г. и выданный 6 октября 1987 г.: США Патент 4698672 Wen-Hsiung Chen и Daniel J. Klenke из Compression Labs. В то время как Forgent не владел Compression Labs, Чен позже продал Compression Labs компании Forgent, прежде чем Чен продолжил работу в Cisco. Это привело к тому, что Форгент получил право собственности на патент. Объявление Forgent в 2002 году произвело фурор, напоминающий попытки Unisys отстоять свои права на стандартные сжатия изображений GIF.

Комитет JPEG исследовал патентные притязания в 2002 году и пришел к выводу, что они были признаны патентными недействительными в соответствии с предшествующим уровнем техники, и эту точку зрения разделяли различные эксперты. В патенте описан алгоритм сжатия изображения, основанный на дискретном косинусном преобразовании (DCT), методе сжатия изображений с потерями, который возник в статье 1974 года Насира Ахмеда, Т. Натараджана и К. Р. Рао. Wen-Hsiung Chen продолжил развитие своей техники DCT, описав быстрый алгоритм DCT в статье 1977 г. с C.H. Смит и С.К. Фралик. В спецификации JPEG 1992 года цитируются как статья Ахмеда 1974 года, так и статья Чена 1977 года, посвященная алгоритму DCT, а также статья 1984 года Чена и В.К. Пратт за его алгоритм квантования . Compression Labs была основана Ченом и стала первой компанией, коммерциализировавшей технологию DCT. К тому времени, когда Чен подал свой патент на сжатие изображений на основе DCT в 1986 году, большая часть того, что позже станет стандартом JPEG, уже было сформулировано в предыдущей литературе. Представитель JPEG Ричард Кларк также утверждал, что сам Чен входил в один из комитетов JPEG, но Форгент отрицал это утверждение.

В период с 2002 по 2004 год Форгент смог получить 105 миллионов долларов США, лицензируя свой патент примерно 30 компании. В апреле 2004 года Иностранец подал в суд на 31 компанию с требованием дополнительных лицензионных платежей. В июле того же года консорциум из 21 крупной компьютерной компании подал встречный иск с целью признания патента недействительным. Кроме того, Microsoft подала отдельный иск против Forgent в апреле 2005 года. В феврале 2006 года Бюро по патентам и товарным знакам США согласилось пересмотреть патентный патент в формате JPEG по запросу Государственный патентный фонд.. 26 мая 2006 г. ВПТЗ США признало патент недействительным на основании предшествующего уровня техники. USPTO также обнаружило, что Forgent знал об известном уровне техники, но намеренно не сообщил об этом в Патентное ведомство. Это делает маловероятным успехом обращения с просьбой восстановить патент.

Форджент также обладает соответствующими патентами, выданным Европейским патентным ведомством в 1994 году, хотя неясно, насколько он подлежит исполнению. 462>

По состоянию на 27 октября 2006 г. 20-летний срок действия патента в США, по всей видимости, истек, и в ноябре 2006 г. Forgent согласился отказаться от исполнения патентных требований в отношении использования стандарта JPEG.

Комитет JPEG в качестве одной из своих явных целей, чтобы их стандарты (в частности, их базовые методы) были реализованы без уплаты лицензионных сборов, и они получили соответствующие лицензионные права на свой стандарт JPEG 2000 от более чем 20 крупных организаций.

Начиная с августа 2007 года, другая компания Global Patent Holdings, LLC заявила, что ее патент (Патент США 5,253,341 ), выданный в 1993 году, нарушается путем загрузки изображений JPEG на любой из веб-сайтов. или по электронной почте. Этот патент на любом веб-сайту, который отображает изображения в формате JPEG, не будет признан недействительным. Патент находился на повторной экспертизе в Управлении по патентам и товарным знакам США с 2000 по 2007 год; в июле 2007 года Патентное ведомство отозвало все предварительные заявки на патент, но обнаружило дополнительную претензию, предложенную Global Patent Holdings (пункт 17), действительна. Затем Global Patent Holdings подала ряд судебных исков по п.17 своего патента.

В своих первых двух исках после повторной экспертизы оба поданных в Чикаго, штат Иллинойс, Global Patent Holdings представила иск Green Bay Packers, CDW, Motorola, Apple, Orbitz, Officemax, Caterpillar, Kraft и Peapod в качестве ответчиков. Третий иск был подан 5 декабря 2007 года в Южной Флориде против ADT Security Services, AutoNation, Florida Crystals Corp., HearUSA, MovieTickets. com, Ocwen Financial Corp. и Tire Kingdom, а также четвертый иск 8 января 2008 г. в Южной Флориде против Курорт и клуб Бока Ратон. Пятый иск был подан против Global Patent Holdings в Неваде. Этот иск был подан Zappos.com, Inc., которой якобы угрожала компания Global Patent Holdings, и требовала судебного объявления о том, что патент «341» недействителен и не нарушается.

Global Patent Holdings также использовала патент ‘341, чтобы подать в суд или запугать откровенных критиков широких патентов на программы, включая Грегори Агарониана и анонимного оператора блога веб-сайта, известного как «Patent Troll Tracker. «21 декабря 2007 г. патентный юрист Вернон Фрэнсиссен из Чикаго обратился в Бюро по патентам и товарным знакам США с просьбой пересмотреть единственную оставшуюся формулу патента« 341 »на основе нового известного уровня техники.

5 марта 2008 г. Бюро В свете повторной экспертизы предполагаемых нарушителей в четырех из пяти ожидающих рассмотрения исков подали ходатайства на приостановлении (приостановлении) рассмотрения их дел 23 апреля 2008 года судья, председательствовавший в двух судебных процессах в Чикаго, штат Иллинойс, удовлетворил ходатайства по этим делам 22 июля 2008 г. Патентное ведомство выпустило первый «иск ведомства» »Второй повторной экспертизы, признав иск недействительным на основании девятнадцати отдельных оснований. 24 ноября 2009 г. было выдано свидетельство о повторной экспертизе, отменяющее все претензии.

С 2011 г. и продолжаясь по состоянию на начало 2013 г., организация, известная как Princeton Digital Image Corporation, расположенная в Восточном Техасе, начала предъявлять иски большому количеству компаний за предполагаемое нарушение США. Патент 4813056. Princeton утверждает, что стандарт сжатия изображений JPEG нарушает «056» и предлагает патент на большое количество веб-сайтов, розничных продавцов, производителей устройств и устройств, а также торговых посредников. Первоначально патентно принадлежал компании General Electric. Срок действия патента истек в декабре 2007 года, но Принстон подал в суд на большое количество компаний за «прошлое нарушение» этого патента. (Согласно патентным законам США, владелец патента может подать в суд за «прошлое нарушение» за шесть лет до подачи иска, поэтому Принстон теоретически мог бы продолжать предъявлять иски компаниям до декабря 2013 года.) По состоянию на март 2013 года в Принстоне находились иски, ожидающие рассмотрения в Нью-Йорк и Делавэр против более 55 компаний. Причастность General Electric к иску неизвестна, хотя протоколы судебных заседаний показывают, что она передала патент Принстону в 2009 году и сохраняет определенные права на патент.

Типичное использование

Алгоритм сжатия JPEG работает на лучше всего подходит для фотографий и картин с реалистичными сценами с плавными вариациями тона и цвета. При использовании в Интернете, где уменьшение объема данных, используемых для изображения, важно для адаптивной презентации, преимущества сжатия JPEG делают его популярным. JPEG / Exif также является наиболее распространенным форматом, сохраняемым цифровыми камерами.

Однако JPEG плохо подходит для штриховых рисунков и другой текстовой или графической графики, где резкие контрасты между соседними пикселями могут вызвать заметные артефакты. Такие изображения лучше сохранять в графическом формате без потерь , таком как TIFF, GIF или PNG. Стандарт JPEG включает режимкодирования без потерь, но этот режим не поддерживается в большинстве продуктов.

Типичное использование JPEG — метод технического сжатия изображений с потерями, который снижает точность изображения, он не подходит для точного воспроизведения данных (например, некоторые научные и медицинские приложения для обработки изображений и некоторых обработки изображений работа).

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

Сжатие JPEG

JPEG использует форму сжатия с потерями на основе дискретного косинусного преобразования (DCT). Эта математическая операция преобразует каждый кадр / поле видеоисточника из пространственной (2D) области в частотную область (также известную как область преобразования). Модель восприятия, частично основанная на психовизуальной системе человека, отбрасывает высокочастотную информацию, то есть резкие переходы в интенсивности и. В области преобразования процесса сокращения информации называется квантованием. Проще говоря, квантование — это метод для оптимального уменьшения масштаба большого числа (с разными вхождениями каждого числа) в меньший, а область преобразования — удобное представление изображения, поскольку высокочастотные коэффициенты вносят меньший вклад. к общей картине, чем другие коэффициенты, характерны небольшие значения с высокой сжимаемостью. Затем квантованные коэффициенты упорядочиваются и без потерь упаковываются в выходной поток битов. Почти все программные реализации JPEG позволяет пользователю управлять степенью сжатия (а также другими дополнительными функциями), позволяя пользователю выбирать между качеством изображения и меньшим размером файла. Во встроенных приложениях, используемых в таких схемах как miniDV, используется предварительная схема сжатия DCT) предварительно выбираются и фиксируются для приложения.

Метод сжатия обычно с потерями, что означает, что некоторая информация об исходном изображении теряется и не может быть восстановлена, что может влиять на качество изображения. В стандарте JPEG есть дополнительный режим без потерь. Однако этот режим не поддерживается широко в продуктах.

Также чересстрочный прогрессивный формат JPEG, в котором данные сжимаются за несколько проходов с прогрессивно более высокой детализацией. Это идеально подходит для больших изображений, которые могут быть при загрузке через медленное соединение, разумный предварительный просмотр после получения только части данных. Однако поддержка прогрессивных JPEG не универсальна. Когда прогрессивные файлы JPEG принимаются программы, которые их не включают (например, версия Internet Explorer до Windows 7 ), программное обеспечение отображает изображение только после того, как оно было полностью загружено.

Редактирование без потерь

Ряд изменений изображения JPEG может быть выполнен без потерь (то есть без повторного сжатия и учтен с этим качеством), если размер изображения кратен 1 блок MCU (минимальная кодированная единица) (обычно 16 пикселей в обоих направлениях для 4: 2: 0 подвыборка цветности ). Утилиты, которые реализуют это, включают:

  • jpegtran и его графический интерфейс Jpegcrop.
  • IrfanView с использованием «JPG Lossless Crop (PlugIn)» и «JPG Lossless Rotation (PlugIn)», которые требуют установки подключаемого модуля JPG_TRANSFORM.
  • FastStone Image Viewer с использованием «Обрезка без потерь в файл» и «Поворот без потерь JPEG».
  • XnViewMP с использованием «Преобразования без потерь JPEG».
  • ACDSee поддерживает вращение без потерь с опцией «Принудительно выполнять операции JPEG без потерь».

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

Верхний и левый край изображения JPEG должны лежать на границе блока 8 × 8 пикселей, но нижний и правый край не должны этого делать. Это ограничивает возможные операции кадрирования без потерь, а также предотвращает переворачивание и повороты изображения, нижний или правый край которого не ограничивает границы блока для всех каналов (поскольку край может оказаться сверху или слева, где — как уже упоминалось — граница блока обязательна).

Повороты, при ширине и высоте изображения не кратны 8 или 16 (в зависимости от субдискретизации цветности), не без потерь. Вращение такого изображения пересчет блоков, что приводит к потере качества.

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

Кроме того, несколько изображений JPEG могут быть соединены вместе без потерь, если они были одинакового качества совпадали с границами блоков.

Файлы JPEG

Формат файла , известный как «формат обмена JPEG» (JIF), указан в Приложении B стандарта. Этот «чистый» формат файла используется редко, в первую очередь из-за сложности программирования кодировщиков и декодеров, которые полностью реализуют все аспекты стандартов, а также из-за определенных недостатков стандарта:

  • Определение цветового пространства
  • Регистрация подвыборки компонентов
  • Определение соотношения сторон пикселя.

Для решения этих проблем было разработано несколько стандартных стандартов. Первым из них, выпущенным в 1992 году, был формат обмена файлами JPEG (или JFIF), за последние годы последовали формат файла сменного изображения (Exif) и ICC цветовые профили. Оба этих формата используют фактическую изменчивость байтов JIF, состоящую из разных маркеров, но, кроме того, используют одну из точек расширения стандарта JIF, а именно маркеры приложений: JFIF использует APP0, а Exif использует APP1. Эти стандарты вводятся для будущего использования в стандарте JIF.

Таким образом, в некотором смысле JFIF представляет собой урезанную версию стандарта JIF, например, он представляет собой ограничение (например, запрет всех различных режимов кодирования), в то время как в других отношениях расширение JIF из-добавленных метаданных. В документации к исходному стандарту JFIF говорится:

Формат обмена файлами JPEG — это минимальный формат файла, который позволяет обмениваться потоками битов JPEG между широким спектром платформ и приложений. Этот минимальный формат не включает никаких дополнительных функций, которые можно найти в спецификации TIFF JPEG или каких-либо форматов файлов для конкретных приложений. Обращение к помощи упрощенного формата изображения.

Файлы изображений, загружаются сжатие JPEG, обычно называются «файлы JPEG» и хранятся в вариантах формата изображения JIF. Большинство устройств захвата изображений (таких как цифровые камеры) выводят JPEG, на самом деле файлы в формате Exif, формате, стандартизированном в индустрии фотоаппаратов для обмена метаданными. С другой стороны, поскольку Exif не допускает цветовых профилей, большинство программ для редактирования изображений хранят JPEG в формате JFIF, а также включают сегмент APP1 из файла Exif для включения метаданных практически совместимым образом; стандарт JFIF интерпретируется несколько гибко.

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

Расширения файлов JPEG

Наиболее распространенными расширениями файлов для файлов, использующих сжатие JPEG, являются .jpgи .jpeg, хотя также используются .jpe, .jfifи .jif. Также возможно встраивание данных JPEG в файлах других типов изображения — файлы с кодировкой TIFF часто включает изображение JPEG в качестве эскиза основного; и файлы MP3 могут содержать JPEG обложки в теге ID3v2.

Цветовой профиль

Многие файлы JPEG включают цветовой профиль ICC (цветовое пространство ). Обычно используемые цветовые профили включают sRGB и Adobe RGB. В этих цветовых пространствах используется нелинейное преобразование, динамический диапазон 8-битного файла JPEG составляет около 11 ступеней ; см. гамма-кривая.

Синтаксис и структура

Изображение JPEG состоит из следующих сегментов, каждый из которых начинается с маркера, каждый из которых начинается с байта 0xFF, за которым следует байт, указывающий тип маркера это. Некоторые маркеры состоят только из этих двух байтов; за другими следуют два байта (старший, младший), следующие следующие за маркером данных полезной нагрузки. (Длина включает два байта маркера, но не два байта маркера следуют данные с энтропийным кодом ; длина такого маркера не включает данные с энтропийным кодом. Обратите внимание, что последовательные байты 0xFF используются в качестве байтов заполнения для целей заполнение, хотя это заполнение байтов должно происходить только для маркеров, сразу за данные данные с энтропийным кодированием (см. Раздел B.1.1.2 спецификации) JPEG и E.1.2 для подробностей, именно: «Во всех случаях, когда маркеры добавляются после сообщения о сжатых данных, необязательные байты заполнения 0xFF могут предшествовать маркеру»).

Внутри данных с энтропийным кодированием для любого байта 0xFF кодировщик вставляет байт 0x00 перед следующим байтом, так что не существует ошибок маркера там, где он не предназначен, что предотвращает кадрирования. Декодеры должны пропускать этот байт 0x00. Этот метод, называемый заполнением байтов (см. Раздел F.1.2.3 спецификации JPEG), применяется только к данным с энтропийным кодированием, а не к данным полезной нагрузки маркера. Однако обратите внимание, что данные с энтропийным кодом имеют несколько собственных маркеров; в частности, маркеры сброса (от 0xD0 до 0xD7), которые используются для выделения фрагментов энтропийно-кодированных данных, чтобы обеспечить параллельное декодирование, и кодеры могут свободно вставлять эти маркеры сброса через равные промежутки времени (хотя не все кодировщики делают это).

Общие маркеры JPEG

Краткое имя Байт Полезная нагрузка Имя Комментарии
SOI 0xFF, 0xD8 нет Начало изображения
SOF0 0xFF, 0xC0 переменный размер Начало кадра (базовый DCT) Указывает, что это базовый JPEG на основе DCT, длина ширины, высота, количество компонентов и подвыборку компонентов (например, 4: 2: 0).
SOF2 0xFF, 0xC2 переменный размер Начало кадра (прогрессивная DCT) Указывает, что это JPEG на основе прогрессивной DCT, и определяет ширину, высоту, количество компонентов и подвыборку компонентов (например, 4: 2: 0).
DHT 0xFF, 0xC4 переменный размер Определить таблицы Хаффмана Определить одну или несколько таблиц Хаффмана.
DQT 0xFF, 0xDB переменный размер Определить таблицу (и) квантования Определить одну или несколько таблиц квантования.
DRI 0xFF, 0xDD 4 байта Define Restart Interval Определяет интервал между маркерами RSTn в минимальных единицах кодирования (MCU). За этим маркером следуют два байта, указывающие фиксированный размер, поэтому его можно рассматривать как любой другой сегмент переменного размера.
SOS 0xFF, 0xDA переменный размер Начало сканирования Начинает сканирование изображения сверху вниз. В базовых изображениях DCT JPEG обычно выполняется одно сканирование. Изображения Progressive DCT JPEG обычно содержат несколько сканированных изображений. Этот маркер указывает, какой фрагмент данных он будет содержать, за ним сразу следуют энтропийно-кодированные данные.
RSTn 0xFF, 0xDn (n = 0..7) нет Restart Вставляются каждые r макроблоков, где r — интервал перезапуска, установленный маркером DRI. Не используется, если не было маркера DRI. Три младших бита кода маркера имеют значение от 0 до 7.
APPn 0xFF, 0xEn переменный размер Зависит от приложения Например, файл Exif JPEG использует маркер APP1 для хранения метаданных, размещенных в структуре, близкой к TIFF.
COM 0xFF, 0xFE размер переменной Комментарий Содержит текстовый комментарий.
EOI 0xFF, 0xD9 нет Конец изображения

Существуют другие маркеры начала кадра, которые вводят другие типы кодирования JPEG.

Поскольку несколько поставщиков могут использовать один и тот же тип маркера APPn, маркеры для конкретных приложений часто начинаются со стандартного имени или имени поставщика (например, «Exif» или «Adobe») или какой-либо другой идентифицирующей строки.

При маркере перезапуска bl Переменные предиктора перехода от одного блока к другому сбрасываются, и поток битов синхронизируется с границей байта. Маркеры перезапуска предназначены средства для восстановления после битового потока, такой как передача по ненадежной сети или передаче файла. Последовательно, через маркеры перезапуска.

Пример кодека JPEG

Хотя файл JPEG можно кодировать различными способами, чаще всего это делается с помощью кодирования JFIF. Процесс кодирования состоит из нескольких этапов:

  1. Представление цветов в изображении преобразуется в Y’C BCR, состоит из одного компонента яркости (Y ‘), представляющего яркость и два компонента цветности (C B и C R), представляющие цвет. Этот шаг иногда пропускают.
  2. Разрешение данных цветности уменьшается, обычно в 2 или 3 раза. Это отражает тот факт, что глаз менее чувствителен к мелким деталям цвета, чем к деталям яркости.
  3. Изображение разбивается на блоки размером 8 × 8 пикселей, и для каждого блока данных Y, C B и C R подвергаются дискретному косинусное преобразование (DCT). DCT аналогичен преобразование Фурье в том смысле, что он создает своего рода пространственный спектр.
  4. Амплитуды частотных компонентов квантуются. Человеческое зрение гораздо более чувствительно к небольшим изменениям цвета или яркости на больших площадях, чем к силе высокочастотных изменений яркости. Следовательно, величины высокочастотных компонентов сохраняются с точностью измерения, чем низкочастотные составляющие. Настройка качества кодировщика (например, 50 или 95 по шкале от 0 до 100 в библиотеке Independent JPEG Group) влияет на то, в какой степени разрешение каждого частотного компонента. Если используется установка слишком низкого качества, высокочастотные компоненты отбрасываются.
  5. Результирующие данные для всех блоков 8 × 8 с помощью алгоритма без потерь, вариантов кодирования Хаффмана.

Процесс декодирования меняет эти шаги на противоположные, за исключением квантования, потому что это необратимо. В оставшейся части этого раздела процессы кодирования и декодирования более подробно.

Кодирование

Многие параметры в стандарте JPEG обычно не используются, и, как упоминалось выше, большинство графических программ использует более простой формат JFIF при создании файла JPEG, который, среди прочего, указывает метод кодирования. Вот краткое описание одного из наиболее распространенных методов кодирования используемого к входу, который имеет 24 бит на пиксель (по восемь для красного, зеленого и синего цветов). Этот конкретным применением является метод сжатия данных с потерями.

Преобразование цветового пространства

Сначала изображение должно быть преобразовано из RGB в другое цветовое пространство, называемое Y’C BCR (или, неофициально, YCbCr). Он имеет три компонента Y ‘, C B и C R : компонент Y’ представляет яркость пикселя, а C B и C R компоненты представляют цветность (разделенную на синюю и красную компоненты). Это в основном то же цветовое пространство, которое используется в цифровом цветном телевидении, а также в цифровом видео, включая видео DVD, и аналогично тому, как цвет представлен в аналоговом PAL видео и MAC (но не по аналогу NTSC, который использует цветовое пространство YIQ ). Преобразование цветового пространства Y’C BCRобеспечивает большее сжатие без значительного воздействия на воспринимаемое качество (или более высокое качество воспринимаемого изображения для того же сжатия). Сжатие более эффективно, потому что информация о яркости, которая важна для конечного качества канятия изображения, ограничена одним каналом изображения. Это больше соответствует восприятию цвета зрительной системой человека. Преобразование цвета также делает сжатие за счет статистической декорреляции.

. Конкретное преобразование в Y’C BCRуказано в стандарте JFIF и должно быть для максимальной совместимости результирующего файла JPEG. Некоторые реализации JPEG в режиме «наивысшего качества» не применяют этот шаг и вместо этого сохраняют информацию о цвете в цветовой модели RGB, где изображение хранится в отдельных каналах для компонентов яркости красного, зеленого и синего цветов. Это приводит к менее эффективному сообщию и причину ли будет, когда размер файла особенно важен.

Даунсэмплинг

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

Преобразование в цветовую модель Y’C BCR включает следующий обычный шаг, который заключается в уменьшении пространственного разрешения компонентов Cb и Cr (так называемое «понижающая дискретизация » или «подвыборка цветности»). Соотношения, при которых используется понижающая дискретизация, обычно выполняется для изображений JPEG, составляют 4: 4: 4 (без понижающей дискретизации), 4: 2: 2 (уменьшение в 2 раза по горизонтали направление) или (чаще всего) 4: 2: 0 (уменьшение в 2 раза как в горизонтальном, так и в вертикальном направлениих). Для остальной части процесса сжатия Y ‘, Cb и Cr

Разделение блоков

После субдискретизации каждый канал должен быть разделен на блоки 8 × 8. В зависимости от субдискретизации цветности это дает блоки минимального кодирования (MCU) размером 8 × 8 (4: 4: 4 — без субдискретизации), 16 × 8 (4: 2: 2) или чаще всего 16 × 16 (4: 2: 0). В сжатии видео микроконтроллеры называются макроблоками.

. Если для канала не укажите собой целое число блоков, то кодер должен заполнить оставшуюся область неполных блоков какой-либо данные фиктивных данных. Заполнение краев фиксированным цветом (например, черным) может создать звенящие артефакты вдоль видимой части границы; повторение краевых пикселей — это распространенный метод, который уменьшает (но не обязательно полностью устраняет) такие методы заполнения границ.

Дискретное косинусное преобразование

Дополнительное изображение 8 × 8, показанное в 8-битной шкале серого

затем каждый блок 8 × 8 каждого компонента (Y, Cb, Cr) преобразуется в представление в частотной области с использованием нормализованного двумерного дискретного косинусного преобразования (DCT) типа II, см. Цитату 1 в дискретном косинусном преобразовании. DCT иногда упоминается как «DCT типа II» в контексте семейства преобразователей, как в дискретное косинусное преобразование, соответствующее обратное преобразование (IDCT) обозначается как «DCT типа III».

В качестве примера одно такое 8-битное 8-битное изображение может быть:

[52 55 61 66 70 61 64 73 63 59 55 90 109 85 69 72 62 59 68 113 144 104 66 73 63 58 71 122 154 106 70 69 67 61 68 104 126 88 68 70 79 65 60 70 77 68 58 75 85 71 64 59 55 61 65 83 87 79 69 68 65 76 78 94]. { Displaystyle влево [{ начинают {массив} {rrrrrrrr} 52 55 61 66 70 61 64 73 \ 63 59 55 90 109 85 69 72 \ 62 59 68 113 144 104 66 73 \ 63 58 71 122 154 106 70 69 \ 67 61 68 104 126 88 68 70 \ 79 65 60 70 77 68 58 75 \ 85 71 64 59 55 61 65 83 \ 87 79 69 68 65 76 78 94 конец {массив}} право]}left[{begin{array}{rrrrrrrr}5255616670616473\63595590109856972\6259681131441046673\6358711221541067069\676168104126886870\7965607077685875\8571645955616583\8779696865767894end{array}}right].

Перед вычислением DCT блока 8 × 8 его значения сдвигаются с положительным диапазоном единицы с центром в нуле. Для 8-битного изображения каждая запись в исходном блоке попадает в диапазон [0, 255] { displaystyle [0,255]}[0,255]. Средняя точка диапазона (в данном случае значение 128) вычитается из каждой записи, чтобы получить диапазон данных с центром на нуле, так что измененный диапазон равен [- 128, 127] { displaystyle [- 128,127]}[-128,127]. Этот шаг снижает требования к динамическому диапазону на следующем этапе обработки DCT.

Результатом этого шага являются следующие значения:

g = x ⟶ [- 76 — 73 — 67 — 62 — 58 — 67 — 64 — 55 — 65 — 69 — 73 — 38 — 19 — 43 — 59 — 56 — 66 — 69 — 60 — 15 16 — 24 — 62 — 55 — 65 — 70 — 57 — 6 26 — 22 — 58 — 59 — 61 — 67 — 60 — 24 — 2 — 40 — 60 — 58 — 49 — 63 — 68 — 58 — 51 — 60 — 70 — 53 — 43 — 57 — 64 — 69 — 73 — 67 — 63 — 45 — 41 — 49 — 59 — 60 — 63 — 52 — 50 — 34] ↓ у. { displaystyle g = { begin {array} {c} x \ longrightarrow \ left [{ begin {array} {rrrrrrrr} -76 -73 -67 -62 -58 -67 -64 -55 -65 -69 -73 -38 -19 -43 -59 -56 \ — 66 -69 -60 -15 16 -24 -62 -55 \ — 65 -70 -57 -6 26 -22 -58 -59 -61 -67 -60 -24 -2 -40 — 60 -58 \ — 49 -63 -68 -58 -51 -60 -70 -53 \ — 43 -57 -64 -69 -73 -67 — 63 -45 \ — 41 -49 -59 -60 -63 -52 -50 -34 end {array}} right] end {array}} { Bigg downarrow} y.}g={begin{array}{c}x\longrightarrow \left[{begin{array}{rrrrrrrr}-76-73-67-62-58-67-64-55\-65-69-73-38-19-43-59-56\-66-69-60-1516-24-62-55\-65-70-57-626-22-58-59\-61-67-60-24-2-40-60-58\-49-63-68-58-51-60-70-53\-43-57-64-69-73-67-63-45\-41-49-59-60-63-52-50-34end{array}}right]end{array}}{Bigg downarrow }y.

DCT преобразует блок входных значений 8 × 8 в линейную комбинацию эти 64 шаблонов. Шаблоны называются двумерными базисными функциями DCT, а выходные значения регистрируются как коэффициенты преобразования. Горизонтальный индекс равен

u { displaystyle u}

u, а вертикальный индекс —

v { displaystyle v}

v.

. Следующим шагом является получение двумерного DCT, которое задается выражением:

G u, v = 1 4 α (u) α (v) ∑ x = 0 7 ∑ y = 0 7 gx, y cos ⁡ [(2 x + 1) U π 16] соз ⁡ [(2 Y + 1) v π 16] { displaystyle G_ {u, v} = { frac {1} {4}} alpha (u) alpha (v) сумма _ {x = 0} ^ {7} sum _ {y = 0} ^ {7} g_ {x, y} cos left [{ frac {(2x + 1) u pi} {16} } right] cos left [{ frac {(2y + 1) v pi} {16}} right]} G_{u,v}={frac {1}{4}}alpha (u)alpha (v)sum _{x=0}^{7}sum _{y=0}^{7}g_{x,y}cos left[{frac {(2x+1)upi }{16}}right]cos left[{frac {(2y+1)vpi }{16}}right]

где

  • u { displaystyle u} u— горизонтальная пространственная частота, для целых чисел 0 ≤ u < 8 {displaystyle 0leq u<8} 0leq u<8.
  • v { displaystyle v} v— вертикальная пространственная частота, для целых чисел 0 ≤ v < 8 {displaystyle 0leq v<8} 0leq v<8.
  • α (u) = {1 2, если u = 0 1, иначе { displaystyle alpha (u) = { begin {ases} { frac {1} { sqrt {2}}}, { mbox {if}} u = 0 \ 1, { mbox {else}} end {cases}}}alpha (u)={begin{cases}{frac {1}{sqrt {2}}},{mbox{if }}u=0\1,{mbox{otherwise}}end{cases}}— это нормализующий масштабный коэффициент для преобразования ортонормированного
  • gx, y { displaystyle g_ {x, y}} g_{x,y}— значение пикселя в координаты (x, y) { displaystyle (x, y)} (x,y)
  • G u, v { displaystyle G_ {u, v}} G_{u,v}— коэффициент DCT в координатах (и, v). { displaystyle (u, v).} (u,v).

Если мы выполним это преобразование в нашей матрице выше, мы получим следующее (с округлением до ближайших двух цифр после десятичной точки):

G = u ⟶ [- 415, 38 — 30,19 — 61,20 27,24 56,12 — 20,10 — 2,39 0,46 4,47 — 21,86 — 60,76 10,25 13,15 — 7,09 — 8, 54 4,88 — 46,83 7,37 77,13 — 24,56 — 28,91 9,93 5,42 — 5,65 — 48,53 12,07 34,10 — 14,76 — 10,24 6,30 1,83 1,95 12,12 — 6,55 — 13,20 — 3,95 — 1,87 1,75 — 2,79 3,14 — 7,73 2,91 2,38 — 5, 94 — 2,38 0,94 4,30 1,85 — 1,03 0,18 0,42 — 2,42 — 0,88 — 3,02 4,12 — 0,66 — 0,17 0, 14 — 1,07 — 4,19 — 1,17 — 0,10 0,50 1,68] ↓ v. { displaystyle G = { begin {array} {c} u \ longrightarrow \ left [{ begin {array} {rrrrrrrr} -415.38 -30.19 -61.20 27.24 56.12 -20.10 — 2,39 и 0,46 \ 4,47 и -21,86 и -60,76 и 10,25 и 13,15 и -7,09 и -8,54 и 4,88 \ — 46,83 и 7,37 и 77,13 и -24,56 и -28,91 и 9,93 и 5,42 и -5,65 \ — 48,53 и 12,07 и 34,10 и -14,76 и -10,24 и 6,30 и 1,83 и 1,95 \ 12,12 и -6,55 и -13,20 и -3,95 и -1,87 и 1,75 и -2, 79 и 3,14 \ — 7,73 и 2,91 и 2,38 и -5,94 и -2,38 и 0,94 и 4,30 и 1,85 \ — 1,03 и 0,18 и 0,42 и -2,42 и -0,88 и -3,02 и 4,12 -0.66 \ — 0.17 0.14 -1.07 -4.19 -1.17 -0.10 0.50 1.68 end {array}} right] end {array}} { Bigg downarrow} v.}G={begin{array}{c}u\longrightarrow \left[{begin{array}{rrrrrrrr}-415.38-30.19-61.2027.2456.12-20.10-2.390.46\4.47-21.86-60.7610.2513.15-7.09-8.544.88\-46.837.3777.13-24.56-28.919.935.42-5.65\-48.5312.0734.10-14.76-10.246.301.831.95\12.12-6.55-13.20-3.95-1.871.75-2.793.14\-7.732.912.38-5.94-2.380.944.301.85\-1.030.180.42-2.42-0.88-3.024.12-0.66\-0.170.14-1.07-4.19-1.17-0.100.501.68end{array}}right]end{array}}{Bigg downarrow }v.

Обратите внимание на запись в верхнем левом углу с довольно большой величиной. Это коэффициент DC (также называемый постоянной составляющей), который определяет основной оттенок для всего блока. Остальные 63 коэффициента — это коэффициенты переменных переменного тока (также называемыми компонентами). Преимущество DCT заключается в его тенденции агрегировать большую часть сигнала в одном из результатов, как можно увидеть выше. Последующий шаг квантования усиливает этот эффект, одновременно уменьшая общий размер DCT-коэффициентов, в результате чего получается сигнал, который легко эффективно сжимать на стадии энтропии.

DCT увеличивает битовую глубину данных, поскольку DCT-коэффициенты 8-битного / компонентного изображения занимают до 11 или более бит (в зависимости от точности вычислений DCT) для хранения. Это может заставить кодек временно использовать 16-битные числа для хранения этих коэффициентов, удваивая размер изображения в этой точке; эти значения обычно уменьшаются обратно до 8-битных значений на этапе квантования. JPEG, обычно только очень небольшая часть изображения сохраняет в полной форме DCT в любой момент времени во время процесса кодирования или декодирования изображения.

Квантование

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

Элементы в матрице квантования управляют степенью сжатия, при этом большие значения производят большее сжатие. Типичная матрица квантования (для качества 50%, как указано в исходном стандарте JPEG) выглядит следующим образом:

Q = [16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99]. { Displaystyle Q = { BEGIN {bmatrix} 16 и 11 и 10 и 16 и 24 и 40 и 51 и 61 \ 12 и 12 и 14 и 19 и 26 и 58, 60 и 55 \ 14 и 13 и 16 24 40 57 69 56 \ 14 17 22 29 51 87 80 62 \ 18 22 37 56 68 109 103 77 \ 24 35 55 64 81 104 113 92 \ 49 64 78 87 103 121 120 101 \ 72 92 95 98 112 100 103 99 конец {bmatrix} }.}Q={begin{bmatrix}1611101624405161\1212141926586055\1413162440576956\1417222951878062\182237566810910377\243555648110411392\49647887103121120101\7292959811210010399end{bmatrix}}.

квантованных коэффициентов DCT вычисляются с

B j, k = round (G j, k Q j, k) для j = 0, 1, 2,…, 7; к = 0, 1, 2,…, 7 { displaystyle B_ {j, k} = mathrm {round} left ({ frac {G_ {j, k}} {Q_ {j, k}}} справа) { mbox {for}} j = 0,1,2, ldots, 7; k = 0,1,2, ldots, 7}B_{j,k}=mathrm {round} left({frac {G_{j,k}}{Q_{j,k}}}right){mbox{ for }}j=0,1,2,ldots,7;k=0,1,2,ldots,7

где G { displaystyle G}G— неквантованные коэффициенты DCT; Q { displaystyle Q}Q— матрица квантования выше; и B { displaystyle B}B— квантованные коэффициенты DCT.

Использование этой матрицы квантования с матрицей коэффициентов DCT, приведенной выше, приводит к:

Слева: окончательное изображение строится из ряда базисных функций. Справа: каждая из базовых функций DCT, составляющих изображение, соответствующий весовой коэффициент. В центре: базовая функция, после умножения на коэффициент: этот компонент добавляется к окончательному изображению. Для наглядности макроблок 8 × 8 в этом примере увеличен в 10 раз с помощью билинейной интерполяции.

B = [- 26 — 3 — 6 2 2 — 1 0 0 0 — 2 — 4 1 1 0 0 0 — 3 1 5 — 1 — 1 0 0 0 — 3 1 2 — 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]. { displaystyle B = left [{ begin {array} {rrrrrrrr} -26 -3 -6 2 2 -1 0 0 \ 0 -2 -4 1 1 0 0 0 \ — 3 1 5 -1 -1 0 0 0 0 \ — 3 1 2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \ 0 0 0 0 0 0 0 0 \ 0 0 0 0 0 0 0 0 end {array}} right].}B=left[{begin{array}{rrrrrrrr}-26-3-622-100\0-2-411000\-315-1-1000\-312-10000\10000000\00000000\00000000\00000000end{array}}right].

Например, используя -415 (коэффициент DC) и округляя до ближайшего целого

округление (- 415,37) (- 25,96) = — 26. { Displaystyle mathrm {round} left ({ frac {-415.37} {16}} right) = mathrm {round} left (-25,96 right) = — 26.}mathrm {round} left({frac {-415.37}{16}}right)=mathrm {round} left(-25.96right)=-26.

Обратите внимание, что большинство высокочастотных элементов субблока (т. Е. Тех, у которых пространственная частота x или y больше 4) квантуются до нулевых значений.

Энтропийное кодирование

Зигзагообразное упорядочение компонентов изображения JPEG

Энтропийное кодирование — это особая форма сжатия данных без потерь. Он включает в себя расположение компонентов изображения в порядке «зигзаг » с использованием алгоритма кодирования длин серий (RLE), который группирует похожие частоты вместе, вставляя нули кодирования длины, используя кодирование Хаффмана на что осталось.

Стандарт JPEG также позволяет, но не требует, чтобы декодеры поддерживали использование арифметического кодирования, которое математически превосходит кодирование Хаффмана. Однако эта функция используется редко, так как исторически она охранялась патентами, требующими лицензионных отчислений, а также потому, что она используется для кодирования по сравнению с кодированием Хаффмана. Арифметическое кодирование обычно уменьшает размер файлов примерно на 5–7%.

Предыдущий квантованный коэффициент DC используется для прогнозирования текущего квантованного коэффициента DC. Разница между ними кодируется, а не фактическое значение. При кодировании 63 квантованных коэффициентов переменного тока такое предсказание разности не используется.

Зигзагообразная последовательность для вышеупомянутых квантованных коэффициентов ниже. (Показанный формат только для простоты понимания / просмотра.)

−26
−3 0
−3 −2 −6
2 −4 1 −3
1 1 5 1 2
−1 1 −1 2 0 0
0 0 0 −1 −1 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0
0 0
0

Если i-й блок представлен B i { displaystyle B_ {i}}B_{i}и позиции в каждом блоке представлены как (p, q) { displaystyle (p, q)}(p,q), где p = 0, 1,…, 7 { displaystyle p = 0,1,…, 7}p=0,1,...,7и q = 0, 1,…, 7 { displaystyle q = 0,1,…, 7}q=0,1,...,7, то любой коэффициент в изображении DCT может быть представлен как B i (p, q) { displaystyle B_ {i } (p, q)}B_{i}(p,q). Таким образом, в приведенной выше схеме порядок кодирования пикселей (для i-го блока) равенство B i (0, 0) { displaystyle B_ {i} (0,0)}B_{i}(0,0), B i (0, 1) { displaystyle B_ {i} (0,1)}B_{i}(0,1), B i (1, 0) { displaystyle B_ {i} (1,0)}B_{i}(1,0), B i (2, 0) { displaystyle B_ {i} (2,0)}B_{i}(2,0), B i (1, 1) { displaystyle B_ {i} (1,1)}B_{i}(1,1), B i (0, 2) { displaystyle B_ {i} (0,2)}B_{i}(0,2), В я (0, 3) { displaystyle B_ {i} (0,3)}B_{i}(0,3), В я (1, 2) { displaystyle B_ {i} (1,2)}B_{i}(1,2)и так далее.

Базовое последовательное кодирование и декодирование JPEG

Этот режим кодирования называется базовым последовательным кодированием. Базовый JPEG также поддерживает прогрессивное кодирование. В то время как последовательное кодирование кодирует коэффициенты одного блока за раз (зигзагообразным образом), идет следующий пакет коэффициентов всех блоков с одинаковым позиционированием за один раз (называемый сканированием)., и так далее. Например, если изображение разделено на N блоков 8 × 8 B 0, B 1, B 2,…, B n — 1 { displaystyle B_ {0}, B_ {1}, B_ {2},…, B_ {n-1}}{displaystyle B_{0},B_{1},B_{2},...,B_{n-1}}, тогда прогрессивное кодирование с 3 сканированием кодирует компонент DC, В я (0, 0) { displaystyle B_ {i} (0,0)}B_{i}(0,0)для всех блоков, т. е. для всех i = 0, 1, 2,…, N — 1 { displaystyle i = 0,1,2,…, N-1}i=0,1,2,...,N-1при первом сканировании. За этим следует второе сканирование, которое кодирует еще несколько компонентов (предположить, что еще четыре компонента, это B i (0, 1) { displaystyle B_ {i} (0,1)}B_{i}(0,1)to B i (1, 1) { displaystyle B_ {i} (1,1)}B_{i}(1,1), по-прежнему зигзагообразно) коэффициенты всех блоков (поэтому последовательность: В 0 (0, 1), В 0 (1, 0), В 0 (2, 0), В 0 (1, 1), В 1 (0, 1), В 1 (1, 0),., BN (2, 0), BN (1, 1) { displaystyle B_ {0} (0,1), B_ {0} (1,0), B_ {0} (2,0), B_ {0} (1, 1), B_ {1} (0,1), B_ {1} (1,0),…, B_ {N} (2,0), B_ {N} (1,1)}{displaystyle B_{0}(0,1),B_{0}(1,0),B_{0}(2,0),B_{0}(1,1),B_{1}(0,1),B_{1}(1,0),...,B_{N}(2,0),B_{N}(1,1)}), за которыми следуют все оставшиеся коэффициенты всех блоков в последнем сканировании.

После того, как все коэффициенты с одинаковым позиционированием были закодированы, следующая позиция, которая должна быть закодирована, — это позиция, встречающаяся следующей в зигзагообразном обходе, как показано на рисунке выше. Было обнаружено, что базовое прогрессивное кодирование JPEG обычно дает лучшее сжатие по сравнению с базовым последовательным JPEG из-за возможности использовать разные таблицы Хаффмана (см. Ниже), адаптированные для разных частот на каждом «сканировании» или «проходе» (что включает аналогичные — позиционированные коэффициенты), хотя разница не слишком велика.

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

Для кодирования сгенерированного выше шаблона коэффициентов JPEG использует кодирование Хаффмана. Стандарт JPEG предоставляет таблицы Хаффмана общего назначения; кодировщики также могут создавать таблицы Хаффмана, оптимизированные для фактических частотных распределений в кодируемых изображениях.

Процесс кодирования зигзагообразных квантованных данных начинается с кодирования длин серий, описанного ниже, где:

  • x — ненулевой квантованный коэффициент AC.
  • RUNLENGTH — это количество нулей, предшествующих этому ненулевому коэффициенту AC.
  • РАЗМЕР — это количество битов, необходимых для представления x.
  • АМПЛИТУДА — это битовое представление x.

кодирование длин серий работает, исследуя каждый ненулевой коэффициент AC x и определяя, сколько нулей было перед предыдущим коэффициентом AC. С помощью этой информации создаются два символа:

Символ 1 Символ 2
(ДЛИНА БЕГА, РАЗМЕР) (АМПЛИТУДА)

ДЛИНА БЕГА и РАЗМЕР опираются на одно byte, что означает, что каждый содержит только четыре бита информации. Старшие биты имеют дело с количеством нулей, а младшие биты обозначают количество битов, необходимых для кодирования значения x.

Это имеет непосредственное следствие того, что символ 1 может хранить информацию только относительно первых 15 нулей, предшествующих ненулевому коэффициенту переменного тока. Однако JPEG определяет два специальных кодовых слова Хаффмана. Один предназначен для преждевременного завершения последовательности, когда оставшиеся коэффициенты равны нулю (так называемый «конец блока» или «EOB»), а другой — когда серия нулей выходит за пределы 15 до достижения ненулевого коэффициента AC. В таком случае, когда перед заданным ненулевым коэффициентом переменного тока встречаются 16 нулей, символ 1 кодируется «специально» как: (15, 0) (0).

Общий процесс продолжается до тех пор, пока не будет достигнут «EOB», обозначенный (0, 0).

Имея это в виду, предыдущая последовательность принимает следующий вид:

(0, 2) (- 3); (1, 2) (- 3); (0, 1) (- 2); (0, 2) (- 6); (0, 1) (2); (0, 1) (- 4); (0, 1) (1); (0, 2) (- 3); (0, 1) (1); (0, 1) (1);
(0, 2) (5); (0, 1) (1); (0, 1) (2); ( 0, 1) (- 1); (0, 1) (1); (0, 1) (- 1); (0, 1) (2); (5, 1) (- 1); (0, 1) (- 1); (0, 0);

(Первое значение в матрице, −26, является коэффициентом постоянного тока; оно не кодируется таким же образом. См. Выше.)

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

Степень сжатия и артефакты

На этом изображении показаны пиксели, которые отличаются между несжатым изображением и тем же изображением JPEG, сжатым с настройкой качества 50. Чем темнее, тем больше разница. Особо обратите внимание на изменения, происходящие вблизи острых краев и имеющие блочную форму. Исходное изображение Сжатые квадраты 8 × 8 видны на увеличенном изображении вместе с другими визуальными артефактами сжатие с потерями.

Результирующая степень сжатия может быть изменена в соответствии с потребностями, более или менее агрессивно применяя делители, используемые на этапе квантования. При сжатии десять к одному обычно получается изображение, которое невозможно отличить от оригинала на глаз. Степень сжатия 100: 1 обычно возможна, но будет отчетливо выглядеть искаженным по сравнению с оригиналом. Подходящий уровень сжатия зависит от цели использования изображения.

Внешнее изображение
image iconИллюстрация загруженности краев

Те, кто пользуется Всемирной паутиной, могут быть знакомы с нарушениями, известными как артефакты сжатия, которые появляются в изображениях JPEG, которые могут принимать форму шума вокруг контрастных краев ( особенно кривые и углы) или «блочные» изображения. Это связано с этапом квантования алгоритма JPEG. Они особенно заметны вокруг острых углов между контрастными цветами (хороший пример — текст, поскольку он содержит много таких углов). Аналогичные артефакты в видео в формате MPEG называются москитным шумом, поскольку результирующая «занятость края» и ложные точки, которые меняются со временем, напоминают комаров, роящихся вокруг объекта.

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

Изображение Сжатие без потерь Сжатие без потерь
Оригинал Lossless-circle.png Lossy-circle.jpg
Обработано с помощью. Canny Edge Detector Lossless-circle-canny.png Lossy-circle-canny.png

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

Поскольку этап квантования всегда приводит к потере информации, стандарт JPEG всегда является кодеком сжатия с потерями. (Информация теряется как при квантовании, так и при округлении чисел с плавающей запятой.) Даже если матрица квантования является матрицей из единиц, информация все равно будет потеряна на этапе округления.

Декодирование

Декодирование для отображения изображения состоит из выполнения всего вышеперечисленного в обратном порядке.

Взятие матрицы коэффициентов DCT (после добавления разности коэффициентов DC)

[- 26 — 3 — 6 2 2 — 1 0 0 0 — 2 — 4 1 1 0 0 0 — 3 1 5 — 1 — 1 0 0 0 — 3 1 2 — 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] { displaystyle left [{ begin {array} {rrrrrrrr} -26 -3 -6 2 2 -1 0 0 \ 0 -2 -4 1 1 0 0 0 \ — 3 1 5 -1 -1 0 0 0 0 \ — 3 1 2 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 % 416 — 33 — 60 32 48 — 40 0 ​​0 0 — 24 — 56 19 26 0 0 0 — 42 13 80 — 24 — 40 0 ​​0 0 — 42 17 44 — 29 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] { displaystyle left [{ begin {array} {rrrrrrrr} -416 -33 -60 32 48 -40 0 0 \ 0 -24 -56 19 26 0 0 0 \ — 42 13 80 -24 -40 0 0 0 \ — 42 17 44 -29 0 0 0 0 0 \ 18 0 0 0 0 0 0 0 \ 0 0 0 0 0 0 0 0 0 0 \ 0 0 0 0 0 0 0i \ 0 0 0 0 } ch очень напоминает исходную матрицу коэффициентов DCT для верхней левой части.

Следующим шагом является использование двумерного обратного ДКП (ДКП 2D типа III), которое определяется как:

fx, y = 1 4 ∑ u = 0 7 ∑ v = 0 7 α (u) α (v) F u, v соз ⁡ [(2 x + 1) u π 16] cos ⁡ [(2 y + 1) v π 16] { displaystyle f_ {x, y} = { frac {1} {4}} sum _ {u = 0} ^ {7} sum _ {v = 0} ^ {7} alpha (u) alpha (v) F_ {u, v} cos left [{ frac {(2x + 1) u pi} {16}} right] cos left [{ frac {(2y + 1) v pi} {16}} right]}f_{x,y}={frac {1}{4}}sum _{u=0}^{7}sum _{v=0}^{7}alpha (u)alpha (v)F_{u,v}cos left[{frac {(2x+1)upi }{16}}right]cos left[{frac {(2y+1)vpi }{16}}right]

где

  • x { displaystyle x} x— строка пикселей для целых чисел 0 ≤ x < 8 {displaystyle 0leq x<8} 0leq x<8.
  • y { displaystyle y} y— столбец пикселей, для целых чисел 0 ≤ y < 8 {displaystyle 0leq y<8} 0leq y<8.
  • α (u) { displaystyle alpha (u)} alpha (u)определяется, как указано выше, для целых чисел 0 ≤ u < 8 {displaystyle 0leq u<8} 0leq u<8.
  • F u, v { displaystyle F_ {u, v}} F_{u,v}— восстановленный приблизительный коэффициент в координатах (u, v). { displaystyle (u, v).} (u,v).
  • fx, y { displaystyle f_ {x, y}} f_{x,y}— значение восстановленного пикселя в координатах (x, y) { displaystyle (x, y)} (x,y)

Округление вывода до целочисленных значений (поскольку исходное имеет целочисленные значения) приводит к изображению со значениями (все еще сдвинутыми вниз на 128)

Заметны небольшие различия между исходным ( вверху) и распакованное изображение (внизу), которое лучше всего видно в нижнем левом углу.

[- 66 — 63 — 71 — 68 — 56 — 65 — 68 — 46 — 71 — 73 — 72 — 46 — 20 — 41 — 66 — 57 — 70 — 78 — 68 — 17 20 — 14 — 61 — 63 — 63 — 73 — 62 — 8 27 — 14 — 60 — 58 — 58 — 65 — 61 — 27 — 6 — 40 — 68 — 50 — 57 — 57 — 64 — 58 — 48 — 66 — 72 — 47 — 53 — 46 — 61 — 74 — 65 — 63 — 62 — 45 — 47 — 34 — 53 — 74 — 60 — 47 — 47 — 41] { displaystyle left [{ begin {array} {rrrrrrrr} -66 -63 -71 -68 -56 -65 -68 -46 \ — 71 -73 -72 -46 -20 -41 -66 — 57 \ — 70 -78 -68 -17 20 -14 -61 -63 \ — 63 -73 -62 -8 27 -14 -60 -58 \ — 58 -65 -61 -27 -6 -40 -68 — 50 \ — 57 и -57 и -64 и -58 -48 -66 -72 -47 \ — 53 -46 -61 -74 -65 -63 -62 -45 \ — 47 -34 -53 -74 -60 -47 -47 -41 end {array} } right]}left[{begin{array}{rrrrrrrr}-66-63-71-68-56-65-68-46\-71-73-72-46-20-41-66-57\-70-78-68-1720-14-61-63\-63-73-62-827-14-60-58\-58-65-61-27-6-40-68-50\-57-57-64-58-48-66-72-47\-53-46-61-74-65-63-62-45\-47-34-53-74-60-47-47-41end{array}}right]

и добавление 128 к каждой записи

[62 65 57 60 72 63 60 82 57 55 56 82 108 87 62 71 58 50 60 111 148 114 67 65 65 55 66 120 155 114 68 70 70 63 67 101 122 88 60 78 71 71 64 70 80 62 56 81 75 82 67 5 4 63 65 66 83 81 94 75 54 68 81 81 87]. { Displaystyle влево [{ начинают {массив} {rrrrrrrr} 62 65 57 60 72 63 60 82 \ 57 55 56 82 108 87 62 71 \ 58 50 60 111 148 114 67 65 \ 65 55 66 120 155 114 68 70 \ 70 63 67 101 122 88 60 78 \ 71 71 64 70 80 62 56 81 \ 75 82 67 54 63 65 66 83 \ 81 94 75 54 68 81 81 87 конец {массив}} право].}left[{begin{array}{rrrrrrrr}6265576072636082\57555682108876271\5850601111481146765\6555661201551146870\706367101122886078\7171647080625681\7582675463656683\8194755468818187end{array}}right].

Это распакованный фрагмент изображения. В общем, процесс распаковки может выдавать значения за пределами исходного диапазона ввода [0, 255] { displaystyle [0,255]}[0,255]. Если это происходит, декодеру необходимо обрезать выходные значения, чтобы удерживать их в этом диапазоне, чтобы предотвратить переполнение при сохранении распакованного изображения с исходной битовой глубиной.

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

[- 10 — 10 4 6 — 2 — 2 4 — 9 6 4 — 1 8 1 — 2 7 1 4 9 8 2 — 4 — 10 — 1 8 — 2 3 5 2 — 1 — 8 2 — 1 — 3 — 2 1 3 4 0 8 — 8 8 — 6 — 4 — 0 — 3 6 2 — 6 10 — 11 — 3 5 — 8 — 4 — 1 — 0 6 — 15 — 6 14 — 3 — 5 — 3 7] { displaystyle left [{ begin {array} {rrrrrrrr} -10 -10 4 6 -2 -2 4 -9 \ 6 4 -1 8 1 -2 7 1 \ 4 8 2 -4 -10 -1 8 \ — 2 3 5 2 -1 -8 2 -1 \ — 3 4 0 1 1 1 1 1 8 \ 8 -6 -4 -0 -3 6 2 -6 \ 10 -11 -3 5 -8 -4 -1 -0 \ 6 -15 -6 14 -3 -5 -3 7 end {array}} right ]}left[{begin{array}{rrrrrrrr}-10-1046-2-24-9\64-181-271\4982-4-10-18\-2352-1-82-1\-3-213408-8\8-6-4-0-362-6\10-11-35-8-4-1-0\6-15-614-3-5-37end{array}}right]

со средней абсолютной ошибкой около 5 значений на пиксель (т. Е. 1 64 ∑ x = 0 7 ∑ y = 0 7 | e (x, y) | = 4.8750 { displaystyle { frac {1} {64}} sum _ {x = 0} ^ {7} sum _ {y = 0} ^ {7} | e (x, y) | = 4.8750}{displaystyle {frac {1}{64}}sum _{x=0}^{7}sum _{y=0}^{7}|e(x,y)|=4.8750}).

Ошибка наиболее заметна в левом нижнем углу, где левый нижний пиксель становится темнее пикселя справа от него.

Требуемая точность

Соответствие кодирования и декодирования и, следовательно, требования к точности указаны в ISO / IEC 10918-2, то есть в части 2 спецификации JPEG. Эта спецификация требует, например, чтобы DCT-коэффициенты (преобразованные в прямом направлении), сформированные из изображения тестируемой реализации JPEG, имели ошибку, которая находится в пределах точности одного блока квантования по сравнению с эталонными коэффициентами. С этой целью ИСО / МЭК 10918-2 предоставляет тестовые потоки, а также коэффициенты DCT, которые кодовый поток должен декодировать.

Точно так же ISO / IEC 10918-2 определяет точность кодировщика в терминах максимально допустимой ошибки в области DCT. Это настолько необычно, поскольку многие другие стандарты определяют только соответствие декодера и требуют от кодера только генерировать синтаксически правильный кодовый поток.

Тестовые изображения, найденные в ISO / IEC 10918-2, представляют собой (псевдо) случайные шаблоны для проверки наихудших случаев. Поскольку ISO / IEC 10918-1 не определяет цветовые пространства и не включает преобразование YCbCr в RGB JFIF (теперь ISO / IEC 10918-5), точность последнего преобразования не может быть проверена ISO / IEC 10918-2.

Для поддержки 8-битной точности на вывод компонента пикселя, деквантование и обратные преобразования DCT обычно реализуются с точностью по меньшей мере 14-битной в оптимизированных декодерах.

Эффекты сжатия JPEG

File:JPEG recompression.webmВоспроизвести носитель

JPEG (произносится «джейпег»[1], англ. Joint Photographic Experts Group, по названию организации-разработчика) — один из популярных растровых графических форматов, применяемый для хранения фотографий и подобных им изображений. Файлы, содержащие данные JPEG, обычно имеют расширения (суффиксы) .jpg (самое популярное), .jfif, .jpe или .jpeg. MIME-тип — image/jpeg.

Фотография заката в формате JPEG с уменьшением степени сжатия слева направо

Фотография заката в формате JPEG с уменьшением степени сжатия слева направо

Алгоритм JPEG позволяет сжимать изображение как с потерями, так и без потерь (режим сжатия lossless JPEG).
Поддерживаются изображения с линейным размером не более 65535 × 65535 пикселов.

В 2010 году с целью сохранения для потомков информации о популярных в начале XXI века цифровых форматах учёные из проекта PLANETS заложили инструкции по чтению формата JPEG в специальную капсулу, которую поместили в специальное хранилище в швейцарских Альпах[2].

Область применения

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

Формат JPEG в режиме сжатия с потерями малопригоден для сжатия чертежей, текстовой и знаковой графики, где резкий контраст между соседними пикселами приводит к появлению заметных артефактов. Такие изображения целесообразно сохранять в форматах без потерь, таких как JPEG-LS, TIFF, GIF, PNG, либо использовать режим сжатия Lossless JPEG.

JPEG (как и другие форматы сжатия с потерями) не подходит для сжатия изображений при многоэтапной обработке, так как искажения в изображения будут вноситься каждый раз при сохранении промежуточных результатов обработки.

JPEG не должен использоваться и в тех случаях, когда недопустимы даже минимальные потери, например при сжатии астрономических или медицинских изображений. В таких случаях может быть рекомендован предусмотренный стандартом JPEG режим сжатия Lossless JPEG (который, однако, не поддерживается большинством популярных кодеков) или стандарт сжатия JPEG-LS.

Сжатие

При сжатии изображение преобразуется из цветового пространства RGB в YCbCr. Стандарт JPEG (ISO/IEC 10918-1) не регламентирует выбор именно YCbCr, допуская и другие виды преобразования (например, с числом компонентов[3], отличным от трёх), и сжатие без преобразования (непосредственно в RGB), однако спецификация JFIF (JPEG File Interchange Format, предложенная в 1991 году специалистами компании C-Cube Microsystems, и ставшая в настоящее время стандартом де-факто) предполагает использование преобразования RGB->YCbCr.

После преобразования RGB->YCbCr для каналов изображения Cb и Cr, отвечающих за цвет, может выполняться «прореживание» (subsampling[4]), которое заключается в том, что каждому блоку из 4 пикселей (2х2) яркостного канала Y ставятся в соответствие усреднённые значения Cb и Cr (схема прореживания «4:2:0»[5]). При этом для каждого блока 2х2 вместо 12 значений (4 Y, 4 Cb и 4 Cr) используется всего 6 (4 Y и по одному усреднённому Cb и Cr). Если к качеству восстановленного после сжатия изображения предъявляются повышенные требования, прореживание может выполняться лишь в каком-то одном направлении — по вертикали (схема «4:4:0») или по горизонтали («4:2:2»), или не выполняться вовсе («4:4:4»).

Пример изображения в формате jpg.

Пример изображения в формате jpg.

Стандарт допускает также прореживание с усреднением Cb и Cr не для блока 2х2, а для четырёх расположенных последовательно (по вертикали или по горизонтали) пикселей, то есть для блоков 1х4, 4х1 (схема «4:1:1»), а также 2х4 и 4х2 (схема «4:1:0»). Допускается также использование различных типов прореживания для Cb и Cr, но на практике такие схемы применяются исключительно редко.

Далее яркостный компонент Y и отвечающие за цвет компоненты Cb и Cr разбиваются на блоки 8х8 пикселей. Каждый такой блок подвергается дискретному косинусному преобразованию (ДКП). Полученные коэффициенты ДКП квантуются (для Y, Cb и Cr в общем случае используются разные матрицы квантования) и пакуются с использованием кодирования серий и кодов Хаффмана. Стандарт JPEG допускает также использование значительно более эффективного арифметического кодирования, однако из-за патентных ограничений (патент на описанный в стандарте JPEG арифметический QM-кодер принадлежит IBM) на практике оно используется редко. В популярную библиотеку libjpeg последних версий включена поддержка арифметического кодирования, но с просмотром сжатых с использованием этого метода изображений могут возникнуть проблемы, поскольку многие программы просмотра не поддерживают их декодирование.

Матрицы, используемые для квантования коэффициентов ДКП, хранятся в заголовочной части JPEG-файла. Обычно они строятся так, что высокочастотные коэффициенты подвергаются более сильному квантованию, чем низкочастотные. Это приводит к огрублению мелких деталей на изображении. Чем выше степень сжатия, тем более сильному квантованию подвергаются все коэффициенты.

При сохранении изображения в JPEG-файле кодеру указывается параметр качества, задаваемый в некоторых условных единицах, например, от 1 до 100 или от 1 до 10. Большее число обычно соответствует лучшему качеству (и большему размеру сжатого файла). Однако, в самом JPEG-файле такой параметр отсутствует, а качество восстановленного изображения определяется матрицами квантования, типом прореживания цветоразностных компонентов и точностью выполнения математических операций как на стороне кодера, так и на стороне декодера. При этом даже при использовании наивысшего качества (соответствующего матрице квантования, состоящей из одних только единиц, и отсутствию прореживания цветоразностных компонентов) восстановленное изображение не будет в точности совпадать с исходным, что связано как с конечной точностью выполнения ДКП, так и с необходимостью округления значений Y, Cb, Cr и коэффициентов ДКП до ближайшего целого. Режим сжатия Lossless JPEG, не использующий ДКП, обеспечивает точное совпадение восстановленного и исходного изображений, однако его малая эффективность (коэффициент сжатия редко превышает 2) и отсутствие поддержки со стороны разработчиков программного обеспечения не способствовали популярности Lossless JPEG.

Разновидности схем сжатия JPEG

Стандарт JPEG предусматривает два основных способа представления кодируемых данных.

Наиболее распространённым, поддерживаемым большинством доступных кодеков, является последовательное (sequential JPEG) представление данных, предполагающее последовательный обход кодируемого изображения разрядностью 8 бит на компоненту (или 8 бит на пиксель для чёрно-белых полутоновых изображений) поблочно слева направо, сверху вниз. Над каждым кодируемым блоком изображения осуществляются описанные выше операции, а результаты кодирования помещаются в выходной поток в виде единственного «скана», то есть массива кодированных данных, соответствующего последовательно пройденному («просканированному») изображению. Основной или «базовый» (baseline) режим кодирования допускает только такое представление (и хаффмановское кодирование квантованных коэффициентов ДКП). Расширенный (extended) режим наряду с последовательным допускает также прогрессивное (progressive JPEG) представление данных, кодирование изображений разрядностью 12 бит на компоненту/пиксель (сжатие таких изображений спецификацией JFIF не поддерживается) и арифметическое кодирование квантованных коэффициентов ДКП.

В случае progressive JPEG сжатые данные записываются в выходной поток в виде набора сканов, каждый из которых описывает изображение полностью с всё большей степенью детализации. Это достигается либо путём записи в каждый скан не полного набора коэффициентов ДКП, а лишь какой-то их части: сначала — низкочастотных, в следующих сканах — высокочастотных (метод «spectral selection» то есть спектральных выборок), либо путём последовательного, от скана к скану, уточнения коэффициентов ДКП (метод «successive approximation», то есть последовательных приближений). Такое прогрессивное представление данных оказывается особенно полезным при передаче сжатых изображений с использованием низкоскоростных каналов связи, поскольку позволяет получить представление обо всём изображении уже после передачи незначительной части JPEG-файла.

Обе описанные схемы (и sequential, и progressive JPEG) базируются на ДКП и принципиально не позволяют получить восстановленное изображение абсолютно идентичным исходному. Однако стандарт допускает также сжатие, не использующее ДКП, а построенное на основе линейного предсказателя (lossless, то есть «без потерь», JPEG), гарантирующее полное, бит-в-бит, совпадение исходного и восстановленного изображений. При этом коэффициент сжатия для фотографических изображений редко достигает 2, но гарантированное отсутствие искажений в некоторых случаях оказывается востребованным. Заметно большие степени сжатия могут быть получены при использовании не имеющего, несмотря на сходство в названиях, непосредственного отношения к стандарту JPEG ISO/IEC 10918-1 (ITU T.81 Recommendation) метода сжатия JPEG-LS, описываемого стандартом ISO/IEC 14495-1 (ITU T.87 Recommendation).

Синтаксис и структура

Файл JPEG содержит последовательность маркеров, каждый из которых начинается с байта 0xFF, свидетельствующего о начале маркера, и байта-идентификатора. Некоторые маркеры состоят только из этой пары байтов, другие же содержат дополнительные данные, состоящие из двухбайтового поля с длиной информационной части маркера (включая длину этого поля, но за вычетом двух байтов начала маркера, то есть 0xFF и идентификатора) и собственно данных. Такая структура файла позволяет быстро отыскать маркер с необходимыми данными (например, с длиной строки, числом строк и числом цветовых компонентов сжатого изображения).

Основные маркеры JPEG[6]

Маркер Байты Длина Назначение Комментарии
SOI 0xFFD8 нет Начало изображения
SOF0 0xFFC0 переменный размер Начало фрейма (базовый, ДКП) Показывает, что изображение кодировалось в базовом режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения (двухбайтовые поля со смещением соответственно 5 и 7 относительно начала маркера), количество компонентов (байтовое поле со смещением 9 относительно начала маркера), число бит на компонент — строго 8 (байтовое поле со смещением 4 относительно начала маркера), а также соотношение компонентов (например, 4:2:0).
SOF1 0xFFC1 переменный размер Начало фрейма (расширенный, ДКП, код Хаффмана) Показывает, что изображение кодировалось в расширенном (extended) режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения, количество компонентов, число бит на компонент (8 или 12), а также соотношение компонентов (например, 4:2:0).
SOF2 0xFFC2 переменный размер Начало фрейма (прогрессивный, ДКП, код Хаффмана) Показывает, что изображение кодировалось в прогрессивном режиме с использованием ДКП и кода Хаффмана. Маркер содержит число строк и длину строки изображения, количество компонентов, число бит на компонент (8 или 12), а также соотношение компонентов (например, 4:2:0).
DHT 0xFFC4 переменный размер Содержит таблицы Хаффмана Задает одну или более таблиц Хаффмана.
DQT 0xFFDB переменный размер Содержит таблицы квантования Задает одну или более таблиц квантования.
DRI 0xFFDD 4 байта Указывает длину рестарт-интервала Задает интервал между маркерами RST n в макроблоках. При отсутствии DRI появление в потоке кодированных данных маркеров RSTn недопустимо и считается ошибкой. Если при кодировании маркеры RST n не применяются, маркер DRI либо не используется вовсе, либо интервал повторений в нём указывается равным 0.
SOS 0xFFDA переменный размер Начало сканирования Начало первого или очередного скана изображения с направлением обхода слева направо сверху вниз. Если использовался базовый режим кодирования, используется один скан. При использовании прогрессивных режимов используется несколько сканов. Маркер SOS является разделяющим между информативной (заголовком) и закодированной (собственно сжатыми данными) частями изображения.
RSTn 0xFFDn нет Перезапуск Маркеры перезапуска используются для сегментирования кодированных энтропийным кодером данных. В каждом сегменте данные декодируются независимо, что позволяет распараллелить процедуру декодирования. При повреждении кодированных данных в процессе передачи или хранения JPEG-файла использование маркеров перезапуска позволяет ограничить потери (макроблоки из неповреждённых сегментов будут восстановлены правильно). Вставляется в каждом r-м макроблоке, где r — интервал перезапуска DRI маркера. Не используется при отсутствии DRI маркера. n, младшие 3 бита маркера кода, циклы от 0 до 7.
APPn 0xFFEn переменный размер Задаётся приложением Например, в EXIF JPEG-файла используется маркер APP1 для хранения метаданных, расположенных в структуре, основанной на TIFF.
COM 0xFFFE переменный размер Комментарий Содержит текст комментария.
EOI 0xFFD9 нет Конец закодированной части изображения.

Достоинства и недостатки

К недостаткам сжатия по стандарту JPEG следует отнести появление на восстановленных изображениях при высоких степенях сжатия характерных артефактов: изображение рассыпается на блоки размером 8×8 пикселей (этот эффект особенно заметен на областях изображения с плавными изменениями яркости), в областях с высокой пространственной частотой (например, на контрастных контурах и границах изображения) возникают артефакты в виде шумовых ореолов. Стандарт JPEG (ISO/IEC 10918-1, Annex K, п. K.8) предусматривает использование специальных фильтров для подавления блоковых артефактов, но на практике подобные фильтры, несмотря на их высокую эффективность, практически не используются.

Однако, несмотря на недостатки, JPEG получил очень широкое распространение из-за достаточно высокой (относительно существовавших во время его появления альтернатив) степени сжатия, поддержке сжатия полноцветных изображений и относительно невысокой вычислительной сложности.

Скорость сжатия по стандарту JPEG

Для ускорения процесса сжатия по стандарту JPEG традиционно используется распараллеливание вычислений, в частности — при вычислении ДКП. Исторически одна из первых попыток ускорить процесс сжатия с использованием такого подхода описана в опубликованной в 1993 году статье Касперовича и Бабкина[7], в которой предлагалась оригинальная аппроксимация ДКП, делающая возможным эффективное распараллеливание вычислений с использованием 32-разрядных регистров общего назначения процессоров Intel 80386. Появившиеся позже более производительные вычислительные схемы использовали SIMD-расширения набора инструкций процессоров архитектуры x86. Значительно лучших результатов позволяют добиться схемы, использующие вычислительные возможности графических ускорителей (технологии NVIDIA CUDA и AMD FireStream) для организации параллельных вычислений не только ДКП, но и других этапов сжатия JPEG (преобразование цветовых пространств, run-level, статистическое кодирование и т. п.), причём для каждого блока 8х8 кодируемого или декодируемого изображения. В статье[8] была представлена реализация распараллеливания всех стадий алгоритма JPEG по технологии CUDA, что значительно повысило скорость сжатия и декодирования по стандарту JPEG.

См. также

  • JPEG-LS
  • JPEG 2000
  • libjpeg
  • MJPEG
  • MPEG
  • WebP
  • GIF
  • PNG
  • BMP
  • WBMP

Примечания

  1. Oxford Dictionary. Дата обращения: 11 ноября 2014. Архивировано 11 ноября 2014 года.
  2. Emma Woollacott. Digital ark aims to preserve dead data formats (англ.). TG Daily (21 мая 2010). Дата обращения: 1 сентября 2016. Архивировано 6 июня 2017 года.
  3. В соответствии с ГОСТ 34.003-90 в области информационных технологий данный термин имеет мужской род
  4. ISO/IEC 10918-1 : 1993(E) p.28 (недоступная ссылка — история). Архивировано 22 августа 2011 года.
  5. Kerr, Douglas A. «Chrominance Subsampling in Digital Images». Дата обращения: 27 мая 2010. Архивировано 24 февраля 2021 года.
  6. ISO/IEC 10918-1 : 1993(E) p.36 (недоступная ссылка — история). Архивировано 22 августа 2011 года.
  7. Kasperovich, L.V., Babkin, V.F. «Fast discrete cosine transform approximation for JPEG image compression». Дата обращения: 3 октября 2017. Архивировано 15 июня 2018 года.
  8. «Использование технологии CUDA для быстрого сжатия изображений по алгоритму JPEG». Дата обращения: 3 декабря 2012. Архивировано 30 марта 2013 года.

Ссылки

  • The JPEG committee homepage
  • Спецификация JFIF 1.02 (текстовый файл)
  • Различные способы оптимизации JPG файлов практически без потери качества. Источник
  • Различные способы открытия JPG файлов. Источник


Эта страница в последний раз была отредактирована 4 августа 2022 в 20:09.

Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.

Понравилась статья? Поделить с друзьями:
  • Как пишется join
  • Как пишется jingle bells песня
  • Как пишется jingle bells на английском
  • Как пишется jeep grand cherokee
  • Как пишется jcb