Что такое jpg формат, его характеристики и как с ним работать Блог Ивана Кунпана

Что такое jpg формат, его характеристики и как с ним работать Блог Ивана Кунпана Расшифровка

Использование в видеорегистраторах

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

Поскольку зависимости между отдельными
последовательными кадрами не берутся в расчет, такой способ позволяет получить
только относительно небольшой уровень сжатия по сравнению со стандартами,
использующими сжатие видеоизображения, например такими, как разновидности Н.26х
или MPEG, которые описаны на сайте отдельно.

https://www.youtube.com/watch?v=subscribe_

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

 Цифровые видеорегистраторы,
работающие с MPEG-4 становятся все более популярными в системах видеонаблюдения.

4.2 Формат MPEG-4

MPEG-4 — это международный стандарт, используемый
преимущественно для сжатия цифрового аудио и видео. Он появился в 1998 году, и
включает в себя группу стандартов сжатия аудио и видео
и смежные технологии, одобренные ISO — Международной Организацией по
стандартизации/IEC MovingPictureExpertsGroup (MPEG).

Стандарт MPEG-4 в основном используется для вещания (потоковое видео), записи
дисков с фильмами на компакт-диски, видеотелефонии
(видеотелефон), и широковещания, в которых активно используется сжатие цифровых
видео и звука.

Формат MPEG-4 предоставляет конечным пользователям
широкий спектр возможностей, позволяющих взаимодействовать с различными
анимированными объектами.

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

·                    
Аудио потоки, видео и аудиовизуальные данные могут быть как естественными,
так и искусственно созданными. Это означает, что они могут быть
как записаны на видеорегистратор или микрофон, так и
созданы с помощью компьютера и специального программного обеспечения.

·                    
MPEG-4
обеспечивает технологии, позволяющие осуществлять доступ не к пикселам, а к объектам, просматривать их и манипулировать
ими.

·                    
MPEG-4 отличается
большой устойчивостью к ошибкам и работой с несколькими диапазонами значений
скорости передачи данных.

·                    
Сфера применения
стандарта варьируется в широком диапазоне от цифрового телевидения, мультимедийных данных в мобильных коммуникациях, игр и до видеонаблюдения.

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

Стандарт MPEG-4 открывает пользователям новые возможности для
создания, редактирования, доступа и потребления аудиовизуальной
информации. В основе технологии MPEG-4 лежит объектно-ориентированный подход,
где сцена моделируется как состоящая из объектов, как естественных, так и
синтезированных, с которыми пользователь может взаимодействовать.

Стандарт MPEG-4 был оптимизирован для передачи данных
в трех диапазонах скоростей: менее 64 кбит/с, 64 — 384 кбит/с и 384 кбит/с — 4
Мбит/с.

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

MPEG-4 разрабатывался не как монолитный стандарт, а
скорее как набор инструментов, которые вместе с профилями обеспечивают решение
конкретных задач. Хотя MPEG-4 представляет собой достаточно обширный стандарт,
он имеет такую структуру, которая позволяет получать доступ к разным
инструментам по мере необходимости.

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

MPEG-4 не заменяет, как считают
некоторые, стандарт MPEG-2, но предлагает большую гибкость в работе на
низкоскоростных каналах связи и позволяет передавать практически «живое» видео
при скорости передачи 256 кбит/с. Некоторые производители включают MPEG-4 в
свои цифровые видеорегистраторы для удаленного
просмотра и управления, тогда как для локальной записи используются другие
алгоритмы сжатия.

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

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

Заключение

На основе JPEG — метода сжатия построены
многочисленные форматы, например, формат TIFF/JPEG, известный как TIFF 6.0,
TIFF, QuickTime и др.

Файлы с графикой в формате JPEG имеют расширение *.jpg.

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

В случае просмотра цветного изображения
на экране монитора большая глубина цвета (например, 32 бит/пиксел)
практически не отличается от изображения с глубиной цвета в 24 бит/пиксел. Тот же результат наблюдается и при распечатке
изображения на большинстве доступных принтеров. Глубина цвета в 32 бит/пиксел, как правило, используется в издательской
деятельности.

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

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

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

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

Этикетки могут быть
закодированы методом JPEG; сохранены в формате 1 байт/пиксел
(т.е. в виде полутонового изображения) или представлены в виде полноцветного изображения с 16,7 млн.цветов(24
бит/пиксел).

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

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

Схема JPEG была специально разработана для сжатия
цветных и полутоновых многоградационных изображений
фотографий, телевизионных заставок, другой сложной графики. Конечный
пользователь может «отрегулировать» качество кодировщика JPEG, использовав параметр, который иногда называют установкой
качества или Q-фактором.

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

Оптимальное значение Q-фактора зависит
от содержимого изображения и, следовательно, подбирается индивидуально. Особым
искусством при сжатии JPEG является выбор минимального значения Q-фактора,
позволяющего создать изображение приемлемого качества и наиболее близкое к
оригиналу.

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

В настоящее время JPEG стали использовать для
сжатия  видеоинформации, однако авторам не известны  полученные
результаты.

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

Список литературы

1.     Д.С. Ватолин.
“Сжатие статических изображений” Открытые системы сегодня. Номер 8 (29) Апрель
1995

2.     Д.С. Ватолин.
“Тенденции развития алгоритмов архивации графики” Открытые системы. Номер 4.
Зима 1995

3.     А.С. Климов “Форматы
графических файлов”,НИПФ “ДиаСофт
Лтд”, 1995

Маркеры dri

Маркер DRI (DefineRestartInterval – Определение
интервала перезапуска) задает число MCU’s между
маркерами перезапуска (restartmarkers)
внутри сжатых данных.

Значение поля длиной 2 байта, следующего за маркером,
всегда равно 4. В маркере есть только одно поле данных — 2-байтовое значение,
которое определяет интервал перезапуска (restartinterval). Если интервал равен нулю, это означает, что
маркеры перезапуска не используются.

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

Другие сокращения:  Что такое SEO, основы SEO-оптимизации для чайников

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

Число пропускаемыхMCU’s = Интервал перезапуска × ((8 Идентификатор
текущего маркера — Идентификатор последнего маркера) mod
8)

Пример: Предположим, что интервал перезапуска равен
10. После того, как были декодированы 80 MCU’s, из
входного потока считывается маркер RST7. Если декодер встречает
искаженные данные до того, как приступит к чтению следующего маркера
перезапуска (RST0), он прекращает декодирование и сканирует входной
поток в поисках следующего маркера перезапуска.

Если следующим маркером
является RST3, декодер пропускает 40 MCUs
(= 10 × ((8 3 — 7) mod 8)), начиная с
последней известной точки (80), Декодер возобновляет декодирование со 121-го
MCU в изображении.

Маркеры sofn

Маркер SOFN (StartofFrame – Начало кадра)
определяет кадр. Хотя существует множество типов кадров, у всех у них
одинаковые форматы. Маркер SOF состоит из фиксированного заголовка следующего
после поля длины маркера.

Таблица
6. Структура маркера
SOS.

Таблица
7. Описание дескриптора
в маркере SOS.

Дескрипторы компонентов располагаются в той же
последовательности, в которой компоненты располагаются в MCU’s
данных скана. Хотя не все компоненты из маркера SOFN могут быть в
наличии, порядок компонентов в маркере SOS должен совпадать с порядком
компонентов в маркере SOFN.

Идентификатор компонента в дескрипторе
скана должен соответствовать значению идентификатора компонента, определяемому
в маркере SOFN. Идентификаторы таблиц Хаффмана АС и DC должны совпадать с
идентификаторами таблиц Хаффмана, определяемыми в предшествующем маркере DHT.

Стандарт JPEG допускает присутствие в скане от 1 до 4
компонентов, но существует ряд других ограничений, накладываемых на число
компонентов. Формат JFIF ограничивает изображение тремя компонентами. В
прогрессивных сканах может присутствовать только 1 компонент, если начало
спектрального выделения отлично от нуля.

В последовательном скане начало спектрального
выделения должно быть равно нулю, конец спектрального выделения – 63, а
последовательное приближение – нулю. Если в прогрессивном скане начало
спектрального выделения равно нулю, то конец спектрального выделения тоже
должен быть равен нулю.

В файле маркер SOS должен появляться после маркера SOFN.
Ему должны предшествовать маркеры DHT, которые определяют все таблицы Хаффмана,
используемые в скане, и маркеры DQT, которые определяют все таблицы
квантования, используемые компонентами скана.

3. АЛГОРИТМ ОБРАБОТКИ ДАННЫХ JPEG

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

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

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

Практически JPEG хорошо работает только с изображениями,
имеющими глубину хотя бы 4 или 5 битов/пиксель на цветовой канал. Основы
стандарта определяют глубину входного образца в 8 бит/пиксель. Данные с меньшей
битовой глубиной могут быть обработаны посредством масштабирования до 8
бит/пиксель, но результат для исходных данных с низкой  глубиной цвета
может быть неудовлетворительным, поскольку между атрибутами соседних пикселей
будут существенные различия.

Процесс сжатия по схеме JPEG включает ряд этапов (рис.
1):

— Преобразование изображения в оптимальное цветовое
пространство.

-Субдискретизация
компонентов цветности усреднением групп пикселей.

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

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

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

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

Рис. 1 Структура JPEG-
преобразований

Цветовое
пространство

В принципе алгоритм
JPEG способен кодировать изображения, основанные на любом типе цветового
пространства. JPEG кодирует каждый компонент цветовой модели отдельно, что
обеспечивает его полную независимость от любой модели цветового пространства
(например, от RGB, HSI или CMYК).

В случае применения
цветового пространства яркость/цветность, например такого, как YUV или YCbCr, достигается лучшая степень сжатия. Компонента Y
представляет собой интенсивность, а U и V — цветность. Эта модель может быть
переведена в RGB посредством преобразования без какой-либо коррекции
насыщенности.

Преобразование
цветовой модели RGB в модель Y CbCr
осуществляется с помощью следующих соотношений:

Y = 0,299 R 0,587
G
0,114 B;

Cb = — 0,1687R — Cr = 0,5R — CbCr в модель RGB
осуществляется с помощью подобных соотношений:

R = Y 1,402 (Cr-128);

G = Y — 0,34414 (Cb-128) — 0,71414 (Cr-128);

B = Y 1,772 (Cb-128).

Субдискретизация компонентов цветности

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

Большая часть визуальной информации, к которой
наиболее чувствительны глаза человека, состоит из высокочастотных, полутоновых
компонентов яркости (Y) цветового пространства YCbCr.
Две других составляющих цветности (Сb и Сr) содержат высокочастотную
цветовую информацию, к которой глаз человека менее чувствителен.

Следовательно,
определенная ее часть может быть отброшена и, тем самым, можно уменьшить
количество учитываемых пикселей для каналов цветности. Например, в изображении
размером 1000×1000 пикселей можно использовать яркости всех 1000×1000 пикселей,
но только 500х500 пикселей для каждого компонента цветности.

При таком
представлении каждый пиксел цветности будет
охватывать ту же область, что и блок 2х2 пиксела (для
яркости). В результате мы сохраним для каждого блока 2х2 всего 6 пиксельных
значений (4 значения яркости и по 1 значению для каждого из двух каналов
цветности) вместо того, чтобы использовать 12 значений при обычном описании.

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

Уменьшение разрешения каналов цветности путем субдискретизации, или усреднения групп пикселей
осуществляется компрессором JPEG.

Стандарт JPEG предлагает несколько различных вариантов
определения коэффициентов дискретизации, или относительных размеров каналов субдискретизации. Канал яркости всегда остается с полным
разрешением (дискретизация 1:1).

Для обоих каналов цветности обычно
производится субдискретизация 2 — в горизонтальном
направлении и 1:1 или 2:1 — в вертикальном. При этом
подразумевается, что цветности пикселов будет
охватывать ту же область, что и блок 2х1 или 2х2 яркости пикселей. Согласно
терминологии JPEG, эти процессы называются 2h1v — и 2h2v — дискретизацией
соответственно.

Другой общепринятой спецификацией дискретизации 2hlv
является 4:2:2, а дискретизации 2h2v — 4:2:0; последняя спецификация связана с
телевидением. Дискретизация 2hlv используется достаточно широко, поскольку
соответствует стандарту NTSC (Национальный комитет по телевизионным стандартам
США), однако при весьма незначительном выигрыше в качестве она обеспечивает
меньшую степень сжатия, чем дискретизация 2h2v.

Цветовые модели RGB, HSI и CMY используют в полезной
визуальной информации все три цветовых компонента. Это затрудняет ее выборочное
отбрасывание, а, следовательно, и уменьшает степень сжатия данных. Полутоновые
изображения не имеют цветового пространства и, следовательно, не нуждаются в
преобразовании.

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

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

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

Первоначально в спецификациях формата не была
предусмотрена субтрактивная цветовая модель CMYK.
Фирма Adobe ввела поддержку функции цветоделения.
Однако использование цветовой модели CMYK в JPEG для многих программ
проблематично. Более надежным решением считается использование JPEG-сжатия в
EPS-файлах (Photoshop).

3.1
Сегментация изображения

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

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

Другие сокращения:  Хроники "Великого плана" ЖГД — @дневники: асоциальная сеть

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

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

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

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

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

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

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

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

Таким образом, чем выше уровень компрессии, тем больше
данных отбрасывается и тем ниже качество изображения. Используя JPEG можно
получить файл в 1-500 раз меньше, чем ВМР. Формат аппаратно независим,
полностью поддерживается на РС и Macintosh.

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

Ключевым компонентом работы алгоритма является
дискретное косинусное преобразование. Дискретное косинусное преобразование
представляет собой разновидность преобразования Фурье и, так же как и оно,
имеет обратное преобразование. Графическое изображение можно рассматривать как
совокупность пространственных волн, причем оси X и Y совпадают с шириной и
высотой картинки, а по оси Z откладывается значение цвета соответствующего
пикселя изображения.

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

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

Формула дискретного косинусного преобразования.

ДКПЧто такое jpg формат, его характеристики и как с ним работать Блог Ивана Кунпана

Формула
обратного дискретного косинусного преобразования.

ДКПЧто такое jpg формат, его характеристики и как с ним работать Блог Ивана КунпанаДКПЧто такое jpg формат, его характеристики и как с ним работать Блог Ивана Кунпана

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

Реализация
дискретного косинусного преобразования. Время, необходимое для вычисления каждого элемента матрицы
дискретного косинусного преобразования, сильно зависит от ее размера. Так как
используются два вложенных цикла, время вычислений составляет
О (NxN).

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

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

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

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

ДКП = КП * Точки * КПт

Где:

— ДКП — дискретное косинусное преобразование;

— КП — матрица косинусного
преобразования размером NxN, элементы которой
определяются по формуле

Точки —
матрица размером NxN, состоящая из пикселов изображения;

Кпт — транспонированная матрица КП.

При перемножении матриц “цена” вычисления одного
элемента результирующей матрицы составляют N умножений и N сложений, при
вычислении матрицы дискретного косинусного преобразования — 2xN соответственно.
По сравнению с O(NxN) это заметное повышение
производительности.

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

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

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

Выбор матрицы округления

От выбора матрицы округления зависит баланс между
степенью сжатия изображения и его качеством после восстановления. Стандарт JPEG
позволяет использовать любую матрицу округления, однако ISO разработала набор
матриц округления.

Матрица округления
строится при помощи очень простого алгоритма. Для того чтобы определить шаг
роста значений в матрице округления, задается одно значение в диапазоне [1,
25], называемое фактором качества. Затем матрица заполняется следующим образом:

for (i = 0; i
< N; i )

for (j = 0; j < N; j )

Matrix[i][j] = 1 (1
i j) * QualityFactor;

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

Рис. 2. Матрица округления с
фактором качества, равным 2.

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

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

Прежде чем отбросить определенный объем информации,
компрессор делит каждое выходное значение DCT на «коэффициент
квантования», округляя результат до целого. Чем больше коэффициент
квантования, тем больше данных теряется, поскольку реальное DCT-значение
представляется все менее и менее точно.

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

На этом этапе большинство JPEG-компрессоров
управляются с помощью установки качества. Компрессор использует встроенную
таблицу, рассчитанную на среднее качество, и наращивает или уменьшает значение
каждого элемента таблицы обратно пропорционально требуемому качеству.

Выбор соответствующей таблицы квантования является
«высоким искусством». Большинство существующих компрессоров
используют таблицу, разработанную Комитетом JPEG ISO. Возможно, со временем
будут предложены таблицы, позволяющие осуществлять сжатие более эффективно и
при сохранении качества изображения.

3.3 Кодирование.  Заключительная стадия работы кодера JPEG

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

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

Коэффициенты
матрицы дискретного косинусного преобразования обходятся зигзагом. После чего
нулевые значения кодируются с использованием алгоритма кодирования повторов
(RLE), а потом результат обрабатывается с помощью “кодирования энтропии”, то
есть алгоритмов Хаффмана или арифметического кодирования, в зависимости от
реализации.

“Кодирование
энтропии”. Результатом работы,
упрощенной схемы кодирования, являются тройки следующего вида:

Здесь:

КоличествоНулей — количество повторяющихся нулей, предшествующих
текущему (ненулевому) элементу матрицы дискретного косинусного преобразования;

КоличествоБитов — количество битов, следующих далее, кодирующих
значение коэффициента;

Коэффициент — значение ненулевого элемента матрицы
дискретного косинусного преобразования.

Соответствие между полями КоличествоБитов
и Коэффициент приведено в Таблице 2.

               Таблица 8

Количество битов
Коэффициент

1

[-1, 1]

2

[-3, -2], [2,
3]

3

[-7, -4], [4,
7]

4

[-15, -8], [8,
15]

5

[-31, -16],
[16, 31]

6

[-63, -32],
[32, 63]

7

[-127, -64],
[64, 127]

8

[-255, -128],
[128, 255]

9

[-511, -256],
[256, 511]

10

[-1023, -512],
[512, 1023]

Другие сокращения:  Армянская Советская Социалистическая Республика (АрмССР) - Время СССР

Такое кодирование не столь эффективно, как кодирование
Хаффмана, но на определенных данных оно дает аналогичные результаты.

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

Формат JFIF

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

4.
Основы сжатия видеоизображения: кодирование и декодирование

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

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

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

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

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

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

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

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

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

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

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

Обе описанные схемы (и sequential, и progressive JPEG) базируются на ДКП и принципиально не позволяют получить восстановленное изображение абсолютно идентичным исходному. Однако стандарт допускает также сжатие, не использующее ДКП, а построенное на основе линейного предсказателя (lossless, то есть «без потерь», JPEG), гарантирующее полное, бит-в-бит, совпадение исходного и восстановленного изображений.

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

Этап сжатия №2: дискретное косинусное преобразование и квантование

На этом этапе все изображение разбивается на отдельные квадраты размером 8×8 пикселей и над каждым из них производится преобразование. При этом каждый квадрат раскладывается на составные цвета для подсчета частоты появления их по всему изображению.

Этот уровень сжатия в значительной степени является определяющей особенностью JPEG. После преобразования цветов в YCbCr компоненты сжимаются по отдельности. Дискретное косинусное преобразование (Discrete Cosine Transform – DCT) – это процесс разбиения изображения на блоки 8×8 и преобразования каждого блока в комбинацию из 64 паттернов.

Звучит невероятным то, что любое изображение может быть представлено с использованием 64 особых шаблонов (паттернов). Но это то же самое, что сказать, что любое место на Земле можно представить с использованием только двух чисел: долготы и широты. Поверхность Земли можно представить как двумерную, поэтому здесь нужны только два числа. Изображение 8х8 имеет шестьдесят четыре измерения, поэтому нам нужно шестьдесят четыре числа.

С точки зрения сжатия, не очевидно, как это помогает нам. Если нам нужно шестьдесят четыре числа для представления изображения 8×8, почему это лучше, чем хранить шестьдесят четыре компонента яркости? Мы делаем это по той же причине, по которой мы преобразовали три числа RGB в три числа YCbCr: это позволяет нам удалять детали, которые менее заметны.

Трудно понять, как именно выглядят детали, которые удаляются на этом этапе сжатия, потому что JPEG применяет дискретное косинусное преобразование только к блокам по 8×8 пикселей за один раз. Однако нет причин, по которым мы не можем применить его ко всему изображению.

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

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

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

Этап сжатия №3: длина цикла, дельта и кодирование хаффмана

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

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

Как происходит сжатие, если не отсекается какая-то информация?

Подумайте о простом сплошном черном изображении. JPEG использует около 5000 чисел, чтобы представить его, но мы можем сделать намного лучше. Как можно сделать это с наименьшим количеством байтов? Наименьшее, что можно придумать, это четыре байта: три для указания цвета и один для определения количества пикселей, имеющих этот цвет.

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

Дельта-кодирование – это метод хранения каждого байта в качестве относительного значения по сравнению с чем-то перед ним, вместо сохранения его абсолютного значения.

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

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

Таблицы Хаффмана оказывают такое сильное влияние на изображение, потому что они говорят нам, как читать отдельные биты. До сих пор мы имели дело с двоичными числами в десятичном виде. Это скрывает тот факт, что если вы хотите сохранить число 1 в байте, оно будет выглядеть как 00000001, потому что каждый байт должен иметь ровно восемь битов, даже если ему нужен только один бит.

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

Оцените статью
Расшифруй.Ру