Jpeg что это: Файл JPEG — что это за формат и основные программы
Jpeg | это… Что такое Jpeg?
JPEG (произносится «джейпег»[1], англ. Joint Photographic Experts Group — объединённая группа экспертов в области фотографии) — является широкоиспользуемым методом сжатия фотоизображений. Формат файла, который содержит сжатые данные обычно также называют именем JPEG; наиболее распространённые расширения для таких файлов .jpeg, .jfif, .jpg, .JPG, или .JPE. Однако из них .jpg самое популярное расширение на всех платформах.
Фотография заката в формате JPEG с уменьшением степени сжатия слева направо
Алгоритм JPEG является алгоритмом сжатия с потерей качества.
Содержание
|
Область применения
Формат является форматом сжатия с потерями, поэтому некорректно считать что JPEG хранит данные как 8 бит на канал (24 бит на пиксель).
При сохранении JPEG-файла можно указать степень качества, а значит и степень сжатия, которую обычно задают в некоторых условных единицах, например, от 1 до 100 или от 1 до 10. Большее число соответствует лучшему качеству, но при этом увеличивается размер файла. Обыкновенно, разница в качестве между 90 и 100 на глаз уже практически не воспринимается. Следует помнить, что побитно восстановленое изображение всегда отличается от оригинала. Распространённым заблуждением является мнение о том, что качество JPEG тождественно доле сохраняемой информации.
Сжатие
При сжатии изображение переводится в цветовую систему Jpeg. Далее каналы изображения Cb и Cr, отвечающие за цвет, уменьшаются в 2 раза (по линейному масштабу). Уже на этом этапе необходимо хранить только четверть информации о цвете изображения.
Реже используется уменьшение цветовой информации в 4 раза или сохранение размеров цветовых каналов как есть. Количество программ, которые поддерживают сохранение в таком виде, относительно невелико.
Далее цветовые каналы изображения, включая черно-белый канал Y, разбиваются на блоки 8 на 8 пикселей. Каждый блок подвергается дискретно-косинусному преобразованию. Полученные коэффициенты подвергаются квантованию и упаковываются с помощью кодов Хаффмана (см. Алгоритм Хаффмана).
Матрица, используемая для квантования коэффициентов, хранится вместе с изображением. Обычно она строится так, что высокочастотные коэффициенты подвергаются более сильному квантованию, чем низкочастотные. Это приводит к огрублению мелких деталей на изображении. Чем выше степень сжатия, тем более сильному квантованию подвергаются все коэффициенты.
Варианты хранения
Progressive JPEG — такой способ записи сжатого изображения в файл, при котором старшие (низкочастотные) коэффициенты находятся в начале файла. Это позволяет получить уменьшенное изображение при загрузке лишь небольшой части файла и повышать детализацию изображения по мере загрузки оставшейся части. Поэтому Progressive JPEG получил широкое распространение в Internet. В целом алгоритм основан на дискретном косинусоидальном преобразовании (ДКП), которое является разновидностью дискретного преобразования Фурье, применяемом к матрице изображения для получения некоторой новой матрицы коэффициентов. Для получения исходного изображения применяется обратное преобразование. ДКП раскладывает изображение по амплитудам некоторых частот. Таким образом, при преобразовании мы получаем матрицу, в которой многие коэффициенты либо близки, либо равны нулю. Кроме того, благодаря несовершенству человеческого зрения, можно аппроксимировать коэффициенты более грубо без заметной потери качества изображения. Для этого используется квантование коэффициентов. В самом простом случае — это арифметический побитовый сдвиг вправо. При этом преобразовании теряется часть информации, но могут достигаться большие коэффициенты сжатия.
Процесс сжатия по схеме JPEG включает ряд этапов:
- преобразование изображения в оптимальное цветовое пространство;
- субдискретизация компонентов цветности усреднением групп пикселей;
- применение дискретных косинусных преобразований для уменьшения избыточности данных изображения;
- квантование каждого блока коэффициентов ДКП с применением весовых функций, оптимизированных с учетом визуального восприятия человеком;
- кодирование результирующих коэффициентов (данных изображения) с применением алгоритма группового кодирования и алгоритма Хаффмана для удаления избыточности информации.
Синтаксис и структура
Изображение JPEG содержит последовательность маркеров, каждый из которых начинается с байта 0xFF, свидетельствующий о начале маркера. Некоторые маркеры состоят только из этого байта; другие же, кроме него содержат информация о длине полезной информации (длина включает в себя два байта длины, исключая длину маркера).
Аббревиатура | Байты | Длина | Имя | Комментарии | ||
---|---|---|---|---|---|---|
SOI | 0xFFD8 | нет | Начало изображения | |||
SOF0 | 0xFFC0 | переменный размер | Начало фрагмента (Базовый DCT) | Показывает что это JPEG изображение относится к базовому DCT и содержит длину, высоту, количество компонент, и соотношение компонент (например, 4:2:0). | ||
SOF2 | 0xFFC2 | переменный размер | Начало фрагмента (Прогрессивный DCT) | Показывает что это JPEG изображение относится к прогрессивному DCT и содержит длину, высоту, количество компонент, и соотношение компонент (например, 4:2:0). | ||
DHT | 0xFFC4 | переменный размер | Содержит таблицы Хафмана | Задает одну или более таблиц Хафмана. | ||
DQT | 0xFFDB | переменный размер | Содержит таблицы квантизации | Задает одну или более таблиц квантизации. | ||
DRI | 0xFFDD | 2 байта | Указывает интервал повторений | Задает интервал между маркерами RST n, в макроблоках. | ||
SOS | 0xFFDA | переменный размер | Начало сканирования | Начинает сканирование изображение сверху вниз. В базовом DCT JPEG изображении, используется один проход сканирования. В прогрессивных DCT JPEG изображения используется несколько проходов сканирования. Данный маркер является разделяющим между информативной и закодированной частью изображения. | ||
RSTn | 0xFFDn | переменный размер | Перезапуск | Вставляется в каждом r макроблоке, где r — интервал перезапуска DRI маркера. Не используется при отстутствии DRI маркера. n, младшие 4 бита маркера кода, циклы от 0 до 7. | ||
APPn | 0xFFEn | переменный размер | Задается приложением | Например, в Exif JPEG файле используется APP1 маркер для хранения метаданных, расположены в структуре, основанной на | Комментарий | Содержит текст комментария. |
EOI | 0xFFD9 | нет | Конец изображения |
Достоинства и недостатки
К недостаткам формата следует отнести то, что при сильных степенях сжатия дает знать о себе блочная структура данных, изображение «дробится на квадратики» (каждый размером 8×8 пикселей). Этот эффект особенно заметен на областях с низкой пространственной частотой (плавные переходы изображения, например, чистое небо). В областях с высокой пространственной частотой (например, контрастные границы изображения), возникают характерные «артефакты» — иррегулярная структура пикселей искаженного цвета и/или яркости. Кроме того, из изображения пропадают мелкие цветные детали. Не стоит также забывать и о том, что данный формат не поддерживает прозрачность.
Однако, несмотря на недостатки, JPEG получил очень широкое распространение из-за высокой степени сжатия, относительно существующих во время его появления альтернатив.
См. также
- JPEG2000
- libjpeg
Примечания
- ↑ ISO/IEC 10918-1 : 1993(E) p. 36.
Ссылки
- The JPEG committee homepage
- Подробное описание алгоритма сжатия
- Спецификация формата (текстовый файл)
- Оптимизация JPEG. Часть 1, Часть 2, Часть 3.
JPEG. Алгоритм сжатия / Хабр
И снова здравствуйте! Я нашел эту статью, написанную еще мае 2019-ого года. Это — продолжение серии статей о WAVE и JPEG, Вот первая. Эта публикация включит в себе информацию об алгоритме кодирования изображений и о самом формате в целом.
Щепотку истории
Столовую ложку статьи из Википедии:
JPEG (Joint Photographic Experts Group) — один из популярных растровых графических форматов, применяемый для хранения фотоизображений и подобных им изображений.
Разработан этот стандарт был Объединенной группой экспертов по фотографии еще в 1991 году для эффективного сжатия изображений.
Какой путь проходят изображения от сырого вида до JPEG
Некоторые считают, что JPEG-картинки — сжатые методом Хаффмана сырые данные, но это не так. Перед контрольным сжатием данные проходят длинный путь.
Сначала цветовую модель меняют с RGB на YCbCr. Для этого даже есть специальный алгоритм — здесь. Y не трогают, так как он отвечает за яркость, и его изменение будет заметно.
Первое, что делают с изображением — это «прореживание» (subsampling). Понять это просто: берется 2х2 массив пикселей, далее берутся Cb и Cr — средние значения каждого из компонентов YCbCr этих 4 пикселей. И так, мы выиграли 6 байт, вместо 4 Y, 4 Cb, 4 Cr мы получили 4 Y и одинаковые для каждого из них Cb и Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 — 6 = 6). В масштабах даже 2×2 сжатие с потерей с коэффициентом сжатия 2:1 звучит солидно. Это применяется ко всему изображению. И так — сбросили половину размера. А такой прием мы можем использовать благодаря нашему цветовому восприятию. Человек с легкостью заметит разницу в яркости, но не в цвете, если он усредненный в маленьком блоке пискелей. Также прореживание может выполняться в линию, 4 пикселя по горизонтали и вертикали.
Наглядная иллюстрация прореживания (Хабр не дал вставить гифку) — https://i.ibb.co/Rg5Th9H/150953010617579181.gif
Основная часть подготовки
ДКП
Теперь самая сложная и необходимая часть. Вся картинка разбивается на блоки 8×8 (используют заполнение в случае, если разрешение не кратно стороне блока).
Теперь к каждому блоку применяют ДКП (Дискретно-косинусное преобразование). В этой части из картинки вынимают все лишнее. Используя ДКП надо понять, описывает ли данный блок (8×8) какую-нибудь монотонную часть изображения: неба, стены; или он содержит сложную структуру (волосы, символы и т.д.). Логично, что 64 похожих по цвету пикселей можно описать всего 1-им, т.к. размер блока уже известен. Вот вам и сжатие: 64 к 1.
ДКП превращает блок в спектр, и там, где показания резко сменяются, коэффициент становится положительным, и чем резче переход, тем выше будет выход. Там, где коэффициент выше, на картинке изображенны четкие переходы в цвете и яркости, где он ниже — слабые (плавные) смены величин компонентов YCbCr в блоке.
Квантование
Тут уже применяются настройки сжатия. Каждый из коэффициентов в каждой из матриц 8×8 делится на определенное число. Если качество изображения после всех его модификаций вы более уменьшать не будете, то делитель должен быть единицей. Если вам важнее память, занимаемая этой фотографией, то делитель будет больше 1, и частное округляется. Так выходит, что после округления нередко получается много нулей.
Квантование делают для создания возможности еще большего сжатия. Вот как это выглядит на примере квантования графика y = sin(x):
Сжатие
Сначала проходим по матрице зиг-загом:
Получаем одномерный массив с числами. Мы видим, что в нем много нулей, их можно убрать. Для этого вместо последовательности из множества нулей мы вписываем 1 нуль и после него число, обозначающее их количество в последовательности. Таким образом можно сбросить до 1/3 размера всего массива. А дальше просто сжимает этот массив методом Хаффмана и вписываем уже в сам файл.
Где используется
Везде. Как и PNG, JPEG используется в фотокамерах, OS’ях (в качестве логотипов компании, иконок приложений, thumbnail’ов) и во всех возможных сферах, где нужно эффективно хранить изображения.
Вывод
На данный момент знания о JPEG сейчас ценны лишь в образовательных целях, ведь он уже везде встроен и оптимизирован большими группами людей, но гранит науки все-же вкусный.
Источники
Статья про YCbCr на Википедии
Статья о JPEG на Википедии
Немного про ДКП с поста Пикабу
Статья о ДКП на Википедии
404: Страница не найдена
Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы извиняемся за любые неудобства.
Что я могу сделать сейчас?
Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:
Поиск- Пожалуйста, свяжитесь с нами, чтобы сообщить, что эта страница отсутствует, или используйте поле выше, чтобы продолжить поиск
- Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, WhatIs.com.
- Посетите нашу домашнюю страницу и просмотрите наши технические темы
Просмотр по категории
Сеть
- поставщик сетевых услуг (NSP)
Поставщик сетевых услуг (NSP) — это компания, которая владеет, управляет и продает доступ к магистральной инфраструктуре Интернета и …
- неэкранированная витая пара (UTP)
Неэкранированная витая пара (UTP) — это повсеместно распространенный тип медных кабелей, используемых в телефонной проводке и локальных сетях (LAN).
- Многопротокольная коммутация по меткам (MPLS)
Многопротокольная коммутация по меткам (MPLS) — это механизм коммутации, используемый в глобальных сетях (WAN).
Безопасность
- Требования PCI DSS 12
Требования PCI DSS 12 представляют собой набор мер безопасности, которые предприятия должны внедрить для защиты данных кредитных карт и соблюдения …
- данные держателя карты (CD)
Данные держателя карты (CD) — это любая личная информация (PII), связанная с лицом, у которого есть кредитная или дебетовая карта.
- Уровни продавца PCI DSS
Стандарт безопасности данных индустрии платежных карт (PCI DSS)
ранжирует продавцов по количеству транзакций за …
ИТ-директор
- системное мышление
Системное мышление — это целостный подход к анализу, который фокусируется на том, как взаимодействуют составные части системы и как…
- краудсорсинг
Краудсорсинг — это практика обращения к группе людей для получения необходимых знаний, товаров или услуг.
- синтетические данные
Синтетические данные — это информация, созданная искусственно, а не в результате событий реального мира.
HRSoftware
- вовлечения сотрудников
Вовлеченность сотрудников — это эмоциональная и профессиональная связь, которую сотрудник испытывает к своей организации, коллегам и работе.
- кадровый резерв
Кадровый резерв — это база данных кандидатов на работу, которые могут удовлетворить немедленные и долгосрочные потребности организации.
- разнообразие, равенство и инклюзивность (DEI)
Разнообразие, равенство и инклюзивность — термин, используемый для описания политики и программ, которые способствуют представительству и …
Обслуживание клиентов
- требующий оценки
Оценка потребностей — это систематический процесс, в ходе которого изучается, какие критерии должны быть соблюдены для достижения желаемого результата.
- точка взаимодействия с клиентом
Точка соприкосновения с покупателем — это любой прямой или косвенный контакт покупателя с брендом.
- устав обслуживания клиентов
Устав обслуживания клиентов — это документ, в котором описывается, как организация обещает работать со своими клиентами наряду с …
JPEG — формат файла изображения
Что такое файл JPEG?
JPEG — это тип формата изображения, который сохраняется с использованием метода сжатия с потерями. Выходное изображение в результате сжатия представляет собой компромисс между размером хранилища и качеством изображения. Пользователи могут настроить уровень сжатия для достижения желаемого уровня качества и в то же время уменьшить размер хранилища. Качество изображения незначительно ухудшается, если к изображению применяется сжатие 10:1. Чем выше значение сжатия, тем выше ухудшение качества изображения.
Спецификации формата файла
Формат файла изображения JPEG был стандартизирован Объединенной группой экспертов по фотографии, отсюда и название JPEG. Формат был выбран для хранения и передачи фотографических изображений в Интернете. Почти все операционные системы теперь имеют средства просмотра, поддерживающие визуализацию изображений JPEG, которые также часто хранятся с расширением JPG. Даже веб-браузеры поддерживают визуализацию изображений JPEG. Прежде чем перейти к спецификациям формата файла JPEG, необходимо упомянуть общий процесс, связанный с созданием JPEG.
Шаги сжатия JPEG
Преобразование: Цветные изображения преобразуются из RGB в изображение яркости/цветности (глаз чувствителен к яркости, а не к цветности, так что часть цветности может потерять много данных и, следовательно, может быть сильно сжата.
Понижающая выборка: Понижающая выборка выполняется для цветного компонента, а не для яркостной составляющей. Понижающая выборка выполняется с соотношением 2:1 по горизонтали и 1:1 по вертикали (2h 1 V). Таким образом, изображение уменьшается в размере, поскольку Компонент «у» не тронут, заметной потери качества изображения нет.
Организация в группы: Пиксели каждого цветового компонента организованы в группы 8×2 пикселей, называемые «единицами данных», если количество строк или столбцов не кратно 8, нижняя строка и крайний правый столбец дублируются.
Дискретное косинусное преобразование: Дискретное косинусное преобразование (ДКП) затем применяется к каждой единице данных для создания карты 8×8 преобразованных компонентов. ДКП приводит к некоторой потере информации из-за ограниченной точности компьютерной арифметики. Это означает, что даже без карты будет некоторая потеря качества изображения, но обычно она невелика.
Квантование: Каждый из 64 преобразованных компонентов в единице данных делится на отдельное число, называемое его «Коэффициентом квантования (КК)», а затем округляется до целого числа. Здесь информация теряется безвозвратно, большой контроль качества приводит к большим потерям. В целом, большинство реализаций JPEG позволяют использовать таблицы контроля качества, рекомендованные стандартом JPEG.
Кодирование: 64 квантованных преобразованных коэффициента (которые теперь являются целыми числами) каждого блока данных кодируются с использованием комбинации RLE и кодирования Хаффмана.
Добавление заголовка: Последний шаг добавляет заголовок и все используемые параметры JPEG и выводит результат.
Декодер JPEG использует шаги в обратном порядке для создания исходного изображения из сжатого.
Структура файла
Изображение JPEG представлено в виде последовательности сегментов, где каждый сегмент начинается с маркера. Каждый маркер начинается с байта 0xFF, за которым следует флаг маркера, представляющий тип маркера. Полезная нагрузка, за которой следует маркер, зависит от типа маркера. Общие типы маркеров JPEG перечислены ниже:
Short Name | Bytes | Payload | Name | Comments | ||||
---|---|---|---|---|---|---|---|---|
SOI | 0xFF, 0xD8 | none | Start of Image | |||||
S0F0 | 0xFF, 0xC0 | переменный размер | Начало кадра | |||||
S0F2 | 0xFF, 0xC2 | переменный размер | Начало кадра 9017 | 0176 DHT | 0xFF, 0xC4 | variable size | Define Huffman Tables | |
DQT | 0xFF, 0xDB | variable size | Define Quantization Table(s) | |||||
DRI | 0xFF, 0xDD | 4 bytes | Define Restart Interval | |||||
SOS | 0xFF, 0xDA | variable size | Start Of Scan | |||||
RSTn | 0xFF, 0xD//n//(//n//#0. .7) | нет | Перезапуск | |||||
APPn | 0xFF, 7xE 7 90717 6 размер переменная//n// | 6 переменная Application specific|||||||
COM | 0xFF, 0xFE | variable size | Comment | |||||
EOI | 0xFF, 0xD9 | none | End Of Image |
Within the entropy-coded данные, после любого байта 0xFF кодировщик вставляет байт 0x00 перед следующим байтом, чтобы не было маркера там, где он не предназначен, что предотвращает ошибки кадрирования. Декодеры должны пропустить этот байт 0x00. Этот метод, называемый заполнением байтов (см. раздел F.1.2.3 спецификации JPEG), применяется только к данным с энтропийным кодированием, а не к данным полезной нагрузки маркера. Обратите внимание, однако, что данные с энтропийным кодированием имеют несколько собственных маркеров; в частности, маркеры сброса (от 0xD0 до 0xD7), которые используются для изоляции независимых фрагментов данных с энтропийным кодированием, чтобы обеспечить параллельное декодирование, и кодировщики могут свободно вставлять эти маркеры сброса через равные промежутки времени (хотя не все кодеры делают это).