JPEG

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

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Рек.Дата первого публичного выпускаПоследнее изменениеНазваниеОписание
Часть 1ISO / IEC 10918-1: 1994 Т.81 (09/92) 18 сентября 1992 г.Требования и руководящие принципы
Часть 2ISO / IEC 10918-2: 1995 T.83 (11/94) 11 ноября 1994 г.Тестирование на соответствиеПравила и проверка на соответствие программного обеспечения (часть 1).
Часть 3ISO / IEC 10918-3: 1997 T.84 (07/96) 3 июля 1996 г.1 апреля 1999 г.РасширенияНабор расширений для улучшения Части 1, включая Формат файла обмена неподвижными изображениями (SPIFF).
Часть 4ISO / IEC 10918-4: 1999 T.86 (06/98) 18 июня 1998 г.29 июня 2012 г.Регистрация профилей JPEG, профилей SPIFF, тегов SPIFF, цветовых пространств SPIFF, маркеров APPn, Типы сжатия SPIFF и методы регистрации (REGAUT)для регистрации некоторых параметров, используемых расширений JPEG
Часть 5ISO / IEC 10918-5: 2013 T.871 (05/11) 14 мая 2011 г.Формат обмена файлами JPEG (JFIF)Популярный формат, который был де-факто форматом файлов для изображений, закодированных по стандарту JPEG. В 2009 году Комитет JPEG официально учредил Специальную группу для стандартизации JFIF как JPEG Часть 5.
Часть 6ISO / IEC 10918-6: 2013 T.872 (06/12) Июнь 2012 г.Приложение к системам печатиОпределение подмножества функций и инструментов для обмена изображениями, закодированными в соответствии с ISO / IEC 10918-1, для печати.
Часть 7ISO / 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
Краткое имяБайтПолезная нагрузкаИмяКомментарии
SOI0xFF, 0xD8нетНачало изображения
SOF00xFF, 0xC0переменный размерНачало кадра (базовый DCT)Указывает, что это базовый JPEG на основе DCT, длина ширины, высота, количество компонентов и подвыборку компонентов (например, 4: 2: 0).
SOF20xFF, 0xC2переменный размерНачало кадра (прогрессивная DCT)Указывает, что это JPEG на основе прогрессивной DCT, и определяет ширину, высоту, количество компонентов и подвыборку компонентов (например, 4: 2: 0).
DHT0xFF, 0xC4переменный размерОпределить таблицы ХаффманаОпределить одну или несколько таблиц Хаффмана.
DQT0xFF, 0xDBпеременный размерОпределить таблицу (и) квантованияОпределить одну или несколько таблиц квантования.
DRI0xFF, 0xDD4 байтаDefine Restart IntervalОпределяет интервал между маркерами RSTn в минимальных единицах кодирования (MCU). За этим маркером следуют два байта, указывающие фиксированный размер, поэтому его можно рассматривать как любой другой сегмент переменного размера.
SOS0xFF, 0xDAпеременный размерНачало сканированияНачинает сканирование изображения сверху вниз. В базовых изображениях DCT JPEG обычно выполняется одно сканирование. Изображения Progressive DCT JPEG обычно содержат несколько сканированных изображений. Этот маркер указывает, какой фрагмент данных он будет содержать, за ним сразу следуют энтропийно-кодированные данные.
RSTn0xFF, 0xDn (n = 0..7)нетRestartВставляются каждые r макроблоков, где r - интервал перезапуска, установленный маркером DRI. Не используется, если не было маркера DRI. Три младших бита кода маркера имеют значение от 0 до 7.
APPn0xFF, 0xEnпеременный размерЗависит от приложенияНапример, файл Exif JPEG использует маркер APP1 для хранения метаданных, размещенных в структуре, близкой к TIFF.
COM0xFF, 0xFEразмер переменнойКомментарийСодержит текстовый комментарий.
EOI0xFF, 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\\8779696865767894\end{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-34\end{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)u\pi }{16}}\right]\cos \left[{\frac {(2y+1)v\pi }{16}}\right]

где

  • u {\ displaystyle \ u}\ u- горизонтальная пространственная частота, для целых чисел 0 ≤ u < 8 {\displaystyle \ 0\leq u<8}\ 0\leq u<8.
  • v {\ displaystyle \ v}\ v- вертикальная пространственная частота, для целых чисел 0 ≤ v < 8 {\displaystyle \ 0\leq v<8}\ 0\leq v<8.
  • α (u) = {1 2, если u = 0 1, иначе {\ displaystyle \ alpha (u) = {\ begin {ases} {\ frac {1} {\ sqrt {2}}}, {\ t_dv {if}} u = 0 \\ 1, {\ t_dv {else}} \ end {cases}}}\alpha (u)={\begin{cases}{\frac {1}{\sqrt {2}}},{\t_dv{if }}u=0\\1,{\t_dv{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.68\end{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\\7292959811210010399\end{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}}} \ справа) {\ t_dv {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){\t_dv{ 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\\00000000\end{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.96\right)=-26.

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

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

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

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

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

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

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

−26
−30
−3−2−6
2−41−3
11512
−11−1200
000−1−100
00000000
0000000
000000
00000
0000
000
00
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)u\pi }{16}}\right]\cos \left[{\frac {(2y+1)v\pi }{16}}\right]

где

  • x {\ displaystyle \ x}\ x- строка пикселей для целых чисел 0 ≤ x < 8 {\displaystyle \ 0\leq x<8}\ 0\leq x<8.
  • y {\ displaystyle \ y}\ y- столбец пикселей, для целых чисел 0 ≤ y < 8 {\displaystyle \ 0\leq y<8}\ 0\leq y<8.
  • α (u) {\ displaystyle \ \ alpha (u)}\ \alpha (u)определяется, как указано выше, для целых чисел 0 ≤ u < 8 {\displaystyle \ 0\leq u<8}\ 0\leq 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-41\end{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\\8194755468818187\end{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-37\end{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Воспроизвести носитель
Последняя правка сделана 2021-05-24 10:15:38
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте