![]() | |
расширение имени файла | .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 / |
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 в качестве доминирующего стандарта изображения.
Исходная спецификация 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 В спецификации цитируются патенты нескольких компаний. Следующие патенты легли в основу алгоритма арифметического кодирования.
JPEG В указаниях также упоминаются три других патента IBM. Другие компании, упомянутые в качестве патентообладателей, включают ATT (два патента) и Canon Inc. В списке отсутствуют США. Патент 4698672, зарегистрированный Compression Labs 'Wen-Hsiung Chen и Daniel J. Klenke в октябре 1986 года. Патент алгоритма сжатия изображения на основе DCT и позже станет причиной разногласий в 2002 (см. Патентный спор ниже). Тем не менее, спецификация JPEG процитировала две более ранние исследовательские работы Wen-Hsiung Chen, опубликованные в 1977 и 1984 годах.
«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 использует форму сжатия с потерями на основе дискретного косинусного преобразования (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» (JIF), указан в Приложении B стандарта. Этот «чистый» формат файла используется редко, в первую очередь из-за сложности программирования кодировщиков и декодеров, которые полностью реализуют все аспекты стандартов, а также из-за определенных недостатков стандарта:
Для решения этих проблем было разработано несколько стандартных стандартов. Первым из них, выпущенным в 1992 году, был формат обмена файлами JPEG (или JFIF), за последние годы последовали формат файла сменного изображения (Exif) и ICC цветовые профили. Оба этих формата используют фактическую изменчивость байтов JIF, состоящую из разных маркеров, но, кроме того, используют одну из точек расширения стандарта JIF, а именно маркеры приложений: JFIF использует APP0, а Exif использует APP1. Эти стандарты вводятся для будущего использования в стандарте JIF.
Таким образом, в некотором смысле JFIF представляет собой урезанную версию стандарта JIF, например, он представляет собой ограничение (например, запрет всех различных режимов кодирования), в то время как в других отношениях расширение JIF из-добавленных метаданных. В документации к исходному стандарту JFIF говорится:
Файлы изображений, загружаются сжатие JPEG, обычно называются «файлы JPEG» и хранятся в вариантах формата изображения JIF. Большинство устройств захвата изображений (таких как цифровые камеры) выводят JPEG, на самом деле файлы в формате Exif, формате, стандартизированном в индустрии фотоаппаратов для обмена метаданными. С другой стороны, поскольку Exif не допускает цветовых профилей, большинство программ для редактирования изображений хранят JPEG в формате JFIF, а также включают сегмент APP1 из файла Exif для включения метаданных практически совместимым образом; стандарт JFIF интерпретируется несколько гибко.
Строго, стандарты JFIF и Exif несовместимы, поскольку каждый из них указывает, что появляется его сегмент маркера (APP0 или APP1 соответственно). На практике большинство файлов JPEG содержат сегмент маркера JFIF, который предшествует заголовку Exif. Это позволяет более старым читателям правильно обрабатывать сегмент JFIF старого формата, в то время новые считыватели также обрабатывают следующий сегмент Exif, не требуя, чтобы он появлялся первым сегмент Exif.
Наиболее распространенными расширениями файлов для файлов, использующих сжатие 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), которые используются для выделения фрагментов энтропийно-кодированных данных, чтобы обеспечить параллельное декодирование, и кодеры могут свободно вставлять эти маркеры сброса через равные промежутки времени (хотя не все кодировщики делают это).
Краткое имя | Байт | Полезная нагрузка | Имя | Комментарии |
---|---|---|---|---|
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 можно кодировать различными способами, чаще всего это делается с помощью кодирования JFIF. Процесс кодирования состоит из нескольких этапов:
Процесс декодирования меняет эти шаги на противоположные, за исключением квантования, потому что это необратимо. В оставшейся части этого раздела процессы кодирования и декодирования более подробно.
Многие параметры в стандарте 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 каждого компонента (Y, Cb, Cr) преобразуется в представление в частотной области с использованием нормализованного двумерного дискретного косинусного преобразования (DCT) типа II, см. Цитату 1 в дискретном косинусном преобразовании. DCT иногда упоминается как «DCT типа II» в контексте семейства преобразователей, как в дискретное косинусное преобразование, соответствующее обратное преобразование (IDCT) обозначается как «DCT типа III».
В качестве примера одно такое 8-битное 8-битное изображение может быть:
Перед вычислением DCT блока 8 × 8 его значения сдвигаются с положительным диапазоном единицы с центром в нуле. Для 8-битного изображения каждая запись в исходном блоке попадает в диапазон . Средняя точка диапазона (в данном случае значение 128) вычитается из каждой записи, чтобы получить диапазон данных с центром на нуле, так что измененный диапазон равен
. Этот шаг снижает требования к динамическому диапазону на следующем этапе обработки DCT.
Результатом этого шага являются следующие значения:
. Следующим шагом является получение двумерного DCT, которое задается выражением:
где
Если мы выполним это преобразование в нашей матрице выше, мы получим следующее (с округлением до ближайших двух цифр после десятичной точки):
Обратите внимание на запись в верхнем левом углу с довольно большой величиной. Это коэффициент DC (также называемый постоянной составляющей), который определяет основной оттенок для всего блока. Остальные 63 коэффициента - это коэффициенты переменных переменного тока (также называемыми компонентами). Преимущество DCT заключается в его тенденции агрегировать большую часть сигнала в одном из результатов, как можно увидеть выше. Последующий шаг квантования усиливает этот эффект, одновременно уменьшая общий размер DCT-коэффициентов, в результате чего получается сигнал, который легко эффективно сжимать на стадии энтропии.
DCT увеличивает битовую глубину данных, поскольку DCT-коэффициенты 8-битного / компонентного изображения занимают до 11 или более бит (в зависимости от точности вычислений DCT) для хранения. Это может заставить кодек временно использовать 16-битные числа для хранения этих коэффициентов, удваивая размер изображения в этой точке; эти значения обычно уменьшаются обратно до 8-битных значений на этапе квантования. JPEG, обычно только очень небольшая часть изображения сохраняет в полной форме DCT в любой момент времени во время процесса кодирования или декодирования изображения.
Человеческий глаз хорошо видит небольшие различия в яркости на относительно большой площади, но не так хорошо распознает точную силу высокочастотной яркости вариации. Это позволяет уменьшить количество информации в высокочастотных компонентовх. Это делается посредством простого деления каждого компонента в частотной области на константу этого компонента и последующего округления до ближайшего целого числа. Эта операция округления является единственной операцией с потерями во всем процессе (кроме субдискретизации цветности), если вычисление DCT выполняется с высокой точностью. Как правило, многие высокочастотные компоненты становятся меньшими, чем положительными или отрицательными числами.
Элементы в матрице квантования управляют степенью сжатия, при этом большие значения производят большее сжатие. Типичная матрица квантования (для качества 50%, как указано в исходном стандарте JPEG) выглядит следующим образом:
квантованных коэффициентов DCT вычисляются с
где - неквантованные коэффициенты DCT;
- матрица квантования выше; и
- квантованные коэффициенты DCT.
Использование этой матрицы квантования с матрицей коэффициентов DCT, приведенной выше, приводит к:
Например, используя -415 (коэффициент DC) и округляя до ближайшего целого
Обратите внимание, что большинство высокочастотных элементов субблока (т. Е. Тех, у которых пространственная частота x или y больше 4) квантуются до нулевых значений.
Энтропийное кодирование - это особая форма сжатия данных без потерь. Он включает в себя расположение компонентов изображения в порядке «зигзаг » с использованием алгоритма кодирования длин серий (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-й блок представлен и позиции в каждом блоке представлены как
, где
и
, то любой коэффициент в изображении DCT может быть представлен как
. Таким образом, в приведенной выше схеме порядок кодирования пикселей (для i-го блока) равенство
,
,
,
,
,
,
,
и так далее.
Этот режим кодирования называется базовым последовательным кодированием. Базовый JPEG также поддерживает прогрессивное кодирование. В то время как последовательное кодирование кодирует коэффициенты одного блока за раз (зигзагообразным образом), идет следующий пакет коэффициентов всех блоков с одинаковым позиционированием за один раз (называемый сканированием)., и так далее. Например, если изображение разделено на N блоков 8 × 8 , тогда прогрессивное кодирование с 3 сканированием кодирует компонент DC,
для всех блоков, т. е. для всех
при первом сканировании. За этим следует второе сканирование, которое кодирует еще несколько компонентов (предположить, что еще четыре компонента, это
to
, по-прежнему зигзагообразно) коэффициенты всех блоков (поэтому последовательность:
), за которыми следуют все оставшиеся коэффициенты всех блоков в последнем сканировании.
После того, как все коэффициенты с одинаковым позиционированием были закодированы, следующая позиция, которая должна быть закодирована, - это позиция, встречающаяся следующей в зигзагообразном обходе, как показано на рисунке выше. Было обнаружено, что базовое прогрессивное кодирование JPEG обычно дает лучшее сжатие по сравнению с базовым последовательным JPEG из-за возможности использовать разные таблицы Хаффмана (см. Ниже), адаптированные для разных частот на каждом «сканировании» или «проходе» (что включает аналогичные - позиционированные коэффициенты), хотя разница не слишком велика.
В остальной части статьи предполагается, что сгенерированный шаблон коэффициентов вызван последовательным режимом.
Для кодирования сгенерированного выше шаблона коэффициентов JPEG использует кодирование Хаффмана. Стандарт JPEG предоставляет таблицы Хаффмана общего назначения; кодировщики также могут создавать таблицы Хаффмана, оптимизированные для фактических частотных распределений в кодируемых изображениях.
Процесс кодирования зигзагообразных квантованных данных начинается с кодирования длин серий, описанного ниже, где:
кодирование длин серий работает, исследуя каждый ненулевой коэффициент AC x и определяя, сколько нулей было перед предыдущим коэффициентом AC. С помощью этой информации создаются два символа:
Символ 1 | Символ 2 |
---|---|
(ДЛИНА БЕГА, РАЗМЕР) | (АМПЛИТУДА) |
ДЛИНА БЕГА и РАЗМЕР опираются на одно byte, что означает, что каждый содержит только четыре бита информации. Старшие биты имеют дело с количеством нулей, а младшие биты обозначают количество битов, необходимых для кодирования значения x.
Это имеет непосредственное следствие того, что символ 1 может хранить информацию только относительно первых 15 нулей, предшествующих ненулевому коэффициенту переменного тока. Однако JPEG определяет два специальных кодовых слова Хаффмана. Один предназначен для преждевременного завершения последовательности, когда оставшиеся коэффициенты равны нулю (так называемый «конец блока» или «EOB»), а другой - когда серия нулей выходит за пределы 15 до достижения ненулевого коэффициента AC. В таком случае, когда перед заданным ненулевым коэффициентом переменного тока встречаются 16 нулей, символ 1 кодируется «специально» как: (15, 0) (0).
Общий процесс продолжается до тех пор, пока не будет достигнут "EOB", обозначенный (0, 0).
Имея это в виду, предыдущая последовательность принимает следующий вид:
(Первое значение в матрице, −26, является коэффициентом постоянного тока; оно не кодируется таким же образом. См. Выше.)
Отсюда вычисления частоты производятся на основе вхождений коэффициентов. В нашем примере блока большинство квантованных коэффициентов представляют собой небольшие числа, которым непосредственно не предшествует нулевой коэффициент. Эти более частые случаи будут представлены более короткими кодовыми словами.
Результирующая степень сжатия может быть изменена в соответствии с потребностями, более или менее агрессивно применяя делители, используемые на этапе квантования. При сжатии десять к одному обычно получается изображение, которое невозможно отличить от оригинала на глаз. Степень сжатия 100: 1 обычно возможна, но будет отчетливо выглядеть искаженным по сравнению с оригиналом. Подходящий уровень сжатия зависит от цели использования изображения.
Внешнее изображение | |
---|---|
![]() |
Те, кто пользуется Всемирной паутиной, могут быть знакомы с нарушениями, известными как артефакты сжатия, которые появляются в изображениях JPEG, которые могут принимать форму шума вокруг контрастных краев ( особенно кривые и углы) или "блочные" изображения. Это связано с этапом квантования алгоритма JPEG. Они особенно заметны вокруг острых углов между контрастными цветами (хороший пример - текст, поскольку он содержит много таких углов). Аналогичные артефакты в видео в формате MPEG называются москитным шумом, поскольку результирующая "занятость края" и ложные точки, которые меняются со временем, напоминают комаров, роящихся вокруг объекта.
Эти артефакты можно уменьшить, выбрав более низкий уровень сжатия; их можно полностью избежать, сохранив изображение в формате без потерь, хотя это приведет к увеличению размера файла. Изображения, созданные с помощью программ трассировки лучей, имеют заметные блочные формы на местности. Некоторые артефакты сжатия низкой интенсивности могут быть приемлемы при простом просмотре изображений, но могут быть подчеркнуты, если изображение будет впоследствии обработано, что обычно приводит к неприемлемому качеству. Рассмотрим пример ниже, демонстрирующий влияние сжатия с потерями на этапе обработки обнаружения края.
Изображение | Сжатие без потерь | Сжатие без потерь |
---|---|---|
Оригинал | ![]() | ![]() |
Обработано с помощью. Canny Edge Detector | ![]() | ![]() |
Некоторые программы позволяют пользователю изменять величину при котором сжимаются отдельные блоки. Более сильное сжатие применяется к областям изображения, на которых отображается меньше артефактов. Таким образом можно вручную уменьшить размер файла JPEG с меньшей потерей качества.
Поскольку этап квантования всегда приводит к потере информации, стандарт JPEG всегда является кодеком сжатия с потерями. (Информация теряется как при квантовании, так и при округлении чисел с плавающей запятой.) Даже если матрица квантования является матрицей из единиц, информация все равно будет потеряна на этапе округления.
Декодирование для отображения изображения состоит из выполнения всего вышеперечисленного в обратном порядке.
Взятие матрицы коэффициентов DCT (после добавления разности коэффициентов DC)