Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 / Salmon_sjatie_dannyh_izobrajeniy_i_zvuka[torrents.ru]

.pdf
Скачиваний:
24
Добавлен:
05.06.2015
Размер:
7.92 Mб
Скачать

Глава 3. Сэюатие изобраэюений

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

3.7,6. Мода без потери данных

В этой моде метод JPEG использует комбинации разностей пиксе­ лов }\ля уменьшения их значений перед тем, как они будут сжаты. Эти разности называются прогнозами. Величины некоторых близ­ ких пикселов вычитаются из данного пиксела для получения малого числа, которое будет сжиматься по методу Хаффмана или с помо- щъю арифметического кодирования. На рис. 3.57а показан некото­ рый пиксел X и три соседних пиксела А, В и С. На рис. 3.57Ь даны восемь возможных линейных комбинаций (прогнозов) пиксела и его соседей. В моде без потерь пользователь может самостоятельно вы­ брать подходяш;ий прогноз, а декодер вычтет эту комбинацию из пиксела X. Результатом, как правило, является малое число, для ко­ торого будет производиться энтропийное кодирование, очень близ­ кое методу, использованному при кодировании коэффициентов DC в ^ 3.7.5.

 

 

Порядковый номер

Прогноз

 

 

0

нет прогноза

 

 

1

А

С

В

2

В

3

С

А

X

4

А+В-С

 

 

5

А+(В-С)/2

 

 

6

В+(А-С)/2

 

 

7

(А+В)/2

 

(а)

 

(Ь)

Табл. 3.57. Предсказание пикселов в моде без потерь.

Прогноз О используется только в иерархической моде JPEG. Про­ гнозы 1, 2 и 3 называются «одномерными», а прогнозы 4, 5, 6 и 7 - «двумерными».

Следует отметить, что мода без потерь не может быть очень эф­ фективной. Ее фактор сжатия обычно находится около 2, и в этом

S.l. JPEG

OH значительно проигрывает другим методам сжатия изображений без потерь. По этой причине, многие популярные приложения, в ко­ торые встроен JPEG, не предусматривают возможность этой моды. Даже базелинная мода JPEG, если в ней задать в виде параметра ми­ нимальную потерю информации, работает недостаточно эффектив­ но. В результате основные приложения не позволяют устанавливать этот параметр в минимальное значение. Достоинство метода JPEG прежде всего заключается в произведении сильно сжатых изобра­ жений, которые практически невозможно отличить от оригинала. Поняв это, ISO решило выпустить другой стандарт для сжатия без потерь непрерывно-тоновых изображений. Это хорошо известный метод JPEG-LS, который будет описан в § 3.8.

 

 

Сжатый образ

 

 

 

 

S({)I

I Кадр I Е01

 

 

 

 

Кадр

 

 

[Табл.]

Заголовок

Скан!

DNL сегмент

[Скан2]

fCKanN]

 

 

 

Скан

 

 

[Табл.]

Заголовок

ECSO

[RS[rO]

ECS(M-n[RSTdM-l)] ECSM

 

 

СегментО

 

СегментМ

 

мси мои —мои

 

мои мси —мои

Рис. 3.58. Формат файла JPEG.

3.7.7.Союатый файл

JPEG создает сжатый файл, в котором находятся все параметры, маркеры и, конечно, сжатые единицы данных изображения. Пара­ метры состоят из слов длины 4 бита (объединяемых в пары), из одного байта или из двух байт. Маркеры необходимы для разделе­ ния файла на части. Маркеры имеют длину 2 байта. Первый байт равен 'FF'X, а второй - не ноль и не 'FF'X. Перед маркером может стоять несколько байтов с 'FF'X.

В табл. 3.59 перечислены все маркеры JPEG (первые четыре группы состоят из маркеров начала кадра). Сжатые единицы дан­ ных комбинируются в минимальные единицы данных (MCU, mini-

Глава 3. Сжатие изображений

mal data unit), где MCU состоит или из одной единицы (мода без чередования) или из трех единиц данных всех цветных компонент (мода с чередованием).

На рис. 3.58 показаны все основные части выходного файла, сжа­ того по методу JPEG (части, заключенные в квадратные скобки, могут отсутствовать). Файл начинается с маркера SOI и кончается маркером EOI. Между этими маркерами сжатый образ делится на кадры. В иерархической моде может быть несколько кадров, а во всех других модах имеется только один кадр. В каждом кадре ин­ формация об изображении хранится в одном или нескольких сканах; у кадра также имеется заголовок, перед которым могут находиться таблицы (которые, в свою очередь, могут иметь маркеры). За пер­ вым сканом может следовать сегмент DNL (define number of lines, определение числа строк), который начинается маркером DNL. В нем записано число строк сжатого образа, содержащегося в кадре. Скан начинается с таблицы (которая может отсутствовать), за ко­ торой идет заголовок скана, после которого размещается несколько сегментов энтропийного кода (ECS, entropy-coded segment), кото­ рые разделяются маркерами рестарта RST (restart). Каждый ECS состоит из одного или нескольких МСи, где MCU - это или одна единица данных, или три такие единицы.

3.7.8.JFIF

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

JFIF (Jpeg File Interchange Format, формат обмена файлами стан­ дарта JPEG) является графическим форматом данных, который обеспечивает обмен сжатыми файлами JPEG между компьютера­ ми. Основные особенности этого формата заключаются в использо­ вании цветового пространства YCbCr из трех цветовых компонент цветных изображений (или одна компонента для полутоновых изо­ бражений), а также использование маркера для обозначения пара­ метров, отсутствующих в стандарте JPEG, а именно, разрешение изображения, геометрический размер пиксела и некоторые другие параметры, специфические для конкретных приложений.

Маркер JFIF (называемый еще АРРО) начинается строкой сим­ волов JFIF(NUL). Затем записаны информация о пикселах и другие

 

 

 

3.7. JPEG

 

 

Значение

Имя

Описание

 

 

Недифференциальное, кодирование Хаффмана

 

 

FFCO

SOFo

Вазелина DCT

1

 

FFC1

SOFi

Расширенное последовательное DCT

 

 

FFC2

SOF2

Прогрессирующее DCT

 

 

FFC3

SOF3

Без потери (последовательное)

|

 

 

Д ифферен циальное, кодирование Хаффмана

 

 

FFC5

SOFs

Дифференциальное последовательное DCT

1

 

FFC6

SOFe

Дифференциальное прогрессирующее DCT

 

 

FFC7

SOF7

Дифференциальное без потери (последов.)

|

 

Недифференциальное арифметическое кодирование

 

 

FFC8

J P G

Зарезервировано для расширения

1

 

FFC9

SOF9

Расширенное последовательное DCT

 

 

FFCA

SOFio

Прогрессирующее DCT

 

1

FFCB

SOFii

Без потери (последов.)

|

Диф

 

 

 

 

ференци*шьное, арифметическое кодирование

 

 

FFCD

SOFis

Дифференциальное последовательное DCT

|

 

FFCE

SOF14

Дифференциальное прогрессирующее DCT

 

 

F F C F

SOF15

Дифференциальное без потери (последов.)

|

 

 

Таблицы для метода Хаффмана

 

 

FFC4

DHT

Задание таблиц для метода Хаффмана

|

 

Cneiщфикаци и для арифметического кодирования

 

 

FFCC

DAC

Задание условий арифм. кодирования

|

 

 

 

Начало нового интервала

 

 

FFD0-FFD7

RSTm

Рестарт по модулю 8 счетчика т

\

 

 

 

Другие маркеры

 

 

FFD8

SOI

Начало образа

1

 

FFD9

EOI

Конец образа

 

 

FFDA

SOS

Начало скана

 

 

FFDB

D Q T

Задание таблиц квантования

 

 

FFDC

DNL

Задание числа строк

 

 

FFDD

DRI

Задание интервала рестарта

 

 

F F D E

DHP

Задание иерархической прогрессии

 

 

F F D F

EXP

Расширенная компонента ссьыки

 

 

FFEO-FFEF

APPn

Зарезервировано для сегментов приложений

 

 

FFFO-FFFD

JPGn

Зарезервировано для расширения J P E G

 

 

F F F E

COM

Комментарий

|

 

 

3aiрезервированные маркеры

 

 

FFOl

ТЕМ

Для временного использования

1

1 FF02-FFBF

RES

Зарезервированы

|

Табл. 3.59. Маркеры JPEG.

Глава 3. Cofcamue изобраэюений

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

Каждое расширение начинается строкой JFXX(NUL). Далее следу­ ет 1 байт, идентифицирующий конкретное расширение. Расширение может содержать данные, используемые конкретными приложени­ ями. Тогда они могут начинаться другими строками или специаль­ ными идентифицирующими маркерами, отличными от JFIF и JFXX.

Формат первого сегмента маркера АРРО состоит из следующих полей:

1.Маркер АРРО (4 байта): FFD8FFE0.

2.Длина (2 байта): общая длина маркера, включая 2 байта поля «длина», но исключая сам маркер АРРО (поле 1).

3.Идентификатор (5 байтов): 4A46494600i6. Это строка JFIF(NUL), идентифицирующая маркер АРРО.

4.Версия (2 байта). Пример: 0102x6 обозначает версию 1.02.

5.Единица измерения (1 байт) плотности по координатам X и Y. Число О означает отсутствие этой единицы, поля Xdensity и Ydensity обозначают геометрический размер пиксела. Число 1 обозначает, что величины Xdensity и Ydensity измеряются в точках на дюйм, а

2- в точках на сантиметр.

6.Xdensity (2 байта), Ydensity (2 байта): плотность пикселов по го­ ризонтали и по вертикали (обе должны быть ненулевые).

7.Xthumbnail (1 байт), Ythumbnail (1 байт): Размер крохотного пик­ села по горизонтали и вертикали.

8.(RGB)n (Зп байт) упакованные (24-битовые) величины RGB рас­ краски крохотного пиксела, п =Xthumbnailx Ythumbnail.

Синтаксис сегмента расширения маркера АРРО имеет следую­ щий вид.

1.Маркер АРРО.

2.Длина (2 байта): общая длина маркера, включая 2 байта поля «длина» , но исключая сам маркер АРРО (поле 1).

3.Идентификатор (5 байтов): 4A46585800i6. Это строка JFXX(NUL), идентифицирующая расширение.

4.Код расширения (1 байт): lOie означает, что пиксел закодирован JPEG, 1116 - размер пиксел 1 байт/пиксел (монохроматический), 13i6 ~ размер пиксел 3 байт/пиксел (цветной).

5.Данные расширения (переменные): это поле зависит от конкрет­ ного приложения.

3.8. JPEG-LS

3.8. JPEG-LS

Метод сжатия JPEG-LS использует коды Голомба, поэтому мы да­ дим краткое описание этих мало известных кодов.

3.8.1, Коды Голомба

Код Голомба неотрицательного целого числа п [Golomb 66] может быть эффективным кодом Хаффмана. Этот код зависит от выбора некоторого параметра Ь. Прежде всего необходимо вычислить две величины q — \j^\ , т — п — qh — \ (где выражение \_х\ обозначает округление ж), а затем построить код из двух частей; первая часть - это число ^, закодированное с помощью унарного кода (см. стр. 195), а вторая - двоичное выражение для г, состоящее из [log2 Ъ\ бит (для малых остатков) или из [log2 6] бит (для больших). Если взять 6 = 3, то три возможных остатка О, 1 и 2 будут кодироваться как О, 10 и 11. Выбрав 6 = 5, получаем 5 остатков от О до 4, которые кодируются как 00, 01, 100, 101 и 110. В табл. 3.60 приведены некоторые коды Голомба при 6 = 3 и 6 = 5.

 

 

 

 

 

 

 

 

 

 

 

10

6 =

3

0|0

0|10

0|11

10|0

10|10

10|11

110|0

110|10

110|11

1110|0

6 =

5

0|00

0|01

0|100

0|101

10|110

lojoO

10|01

10|100

10|101

110|110

Табл. 3.60. Некоторые коды Голомба при 6 = 3 и 6 = 5.

Предположим, что входной поток данных состоит из целых чи­ сел, причем вероятность числа п равна Р(п) = (1 —'рУ^~'^'р,Здесь р - некоторый параметр, О < р < 1. Можно показать, что коды Го­ ломба будут оптимальными кодами для этого потока данных, если 6 выбрать из условия

(1 - vf + (1 - р)*+1 < к (1 - р)"-' + (1 - р)\

Имея такие данные на входе, легко породить наилучшие коды пере­ менной длины, не прибегая к алгоритму Хаффмана.

3.8.2. Основы метода JPEG-LS

Мы уже отмечали в § 3.7.6, что мода без потерь данных метода JPEG весьма неэффективна, и часто ее даже не включают в кон­ кретные приложения, использующие JPEG. В результате ISO в ко­ операции с IEC разработали новый стандарт для сжатия без потерь

Глава 3. Сжатие изобраэюений

(и почти без потерь) непрерывно-тоновых изображений. Этот ме­ тод официально известен как рекомендация ISO/IEC CD 14495, но его принято называть JPEG-LS. Здесь рассматриваются основные принципы этого метода, который не является расширением или мо­ дификацией метода JPEG. Это совершенно новый метод, простой и быстрый. Он не использует ни DCT, ни арифметическое коди­ рование. Применяется слабое квантование и только в моде почти без потерь. JPEG-LS основан на идеях, развитых в [Weinberger и др. 96] для метода компрессии LOCO-I. JPEG-LS (1) изучает не­ сколько предыдущих соседей текущего пиксела, (2) рассматривает их как контекст этого пиксела, (3) использует контекст для про­ гнозирования пиксела и для выбора распределения вероятностей из нескольких имеющихся, и (4) применяет это распределение для ко­ дирования ошибки прогноза с помощью специального кода Голомба. Имеется также серийная мода, когда длина серии одинаковых пик­ селов кодируется подходящим образом.

Пикселы контекста а^Ь^с, d, используемые для прогнозирования текущего пиксела а;, показаны на рис. 3.61. Кодер изучает пиксе­ лы контекста и устанавливает, в какой моде кодировать данный пиксел X, в серийной или в регулярной. Если контекст указывает, что пикселы у и z, следующие за х, скорее всего будут совпадать, то выбирается серийная мода. В противном случае, используется регулярная мода. Если включена опция «почти без потерь», то вы­ бор моды делается несколько иначе. Если контекст предполагает, что следующие пикселы будут почти совпадать (в соответствии с параметром допустимого отклонения NEAR), то декодер выбирает серийную моду. Если нет, то берется регулярная мода. Дальнейшее кодирование зависит от выбранной моды.

с Ь d

аX У Z

Табл. 3.61. Контекст для прогноза х.

В регулярной моде кодер использует величины пикселов а, 6 и с для вычисления прогноза пиксела х. Этот прогноз вычитается из ж, в результате чего получается ошибка прогноза^ которая обозначает­ ся через Errval. Затем ошибка прогноза корректируется некоторым членом, зависящим от контекста (корректировка делается с целью

3.8. JPEG-LS

компенсирования систематического отклонения прогноза), и потом она кодируется с помощью кодов Голомба. Код Голомба зависит от всех четырех пикселов контекста, а также от ошибок прогноза этих же самых пикселов (эта информация хранится в массивах А и N, которые будут использоваться в § 3.8.3). При компрессии почти без потерь ошибка прогноза еще дополнительно квантуется перед ко­ дированием.

В серийной моде кодер начинает с пиксела х и находит в этой строке наибольшую длину серии пикселов, совпадающих с контекст­ ным пикселом о. Кодер не расширяет эту серию за пределы текущей строки. Поскольку все символы серии совпадают с а (а этот пиксел известен декодеру), то достаточно закодировать длину серии, что делается с помощью массива J из 32 элементов (см. § 3.8.3). (При сжатии почти без потерь, кодер выбирает серию пикселов, близких к а с помощью параметра NEAR.)

Декодер мало отличается от кодера, поэтому JPEG-LS можно считать почти симметричным методом сжатия. Сжатый файл со­ стоит из сегментов данных (содержащих коды Голомба и длины серий), сегментов маркеров (с информацией, необходимой декоде­ ру) и просто маркеров (в качестве которых используются некото­ рые зарезервированные маркеры JPEG). Маркером является байт из одних единиц, за которым следует специальный код, сигнализи­ рующий о начале нового сегмента. Если за маркером следует байт, у которого старший бит равен 1, то этот байт является началом сег­ мента маркеров. В противном случае, начинается сегмент данных.

3.8.3.Кодер

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

При кодировании верхней строки контекстные пикселы с,Ь и d отсутствуют, поэтому их значения считаются нулевыми. Если теку­ щий пиксел находится в начале или конце строки, то пикселы а, с или d не определены. В этом случае для and используется реконстру­ ированное значение Rb пиксела b (или нуль для верхней строки), а для с используется реконструированное значение а при кодировании первого символа предыдущей строки. Все это означает, что кодер должен выполнить часть работы декодера, реконструируя некото­ рые пикселы.

Глава 3. Сжатие изобраоюений

Первый шаг при определении контекста заключается в вычисле­ нии значений градиентов

Dl-= RdRb, D2 = RbRe, D3 = ReRa.

Если все эти величины равны нулю (или в моде почти без потерь их абсолютные значения не превосходят порога NEAR), то кодер пере­ ходит в серийную моду и ищет наибольшую длину серии пикселов, совпадающих с Ra. На шаге 2 кодер сравнивает три градиента Di с некоторыми параметрами и вычисляет зонные числа Qi по некото­ рым правилам (эти правила здесь не обсуждаются). Каждое зонное число Qi может принимать одно из 9 целых значений в интервале [—4,4], поэтому имеется всего 9 x 9 x 9 = 729 троек зонных чисел. На третьем шаге используются абсолютные значения произведений зонных чисел Qi (всего разных троек будет 365, так как одна из 729 величин равна нулю) р^ля вычисления числа Q из интервала [0,364]. Детали этих вычислений не предписываются стандартом JPEG-LS, и кодер может делать это по любому правилу. Число Q становится контекстом текущего пиксела х. Используются индексные массивы А и N VL3 рис. 3.65.

После установления контекста Q, кодер прогнозирует пиксел х за два шага. На первом шаге вычисляется прогноз Рх с помощью правила края, как показано на рис. 3.62. На втором шаге произ­ водится корректировка прогноза (см. рис. 3.63) с помощью числа SIGN (зависящего от трех зонных чисел Qi), корректирующих ве­ личин C{Q) (выводимых из систематических смещений, и здесь не обсуждаемых) и параметра MAXVAL.

if(Rc>=max(Ra,Rb)) Px=min(Ra,Rb)

if(SIGN=+l) Px=Px+C(Q)

e l s e

e l s e Px=Px-C(Q)

i f (Rc<=min(Ra,Rb)) Px=max(Ra,Rb)

endif;

 

e l s e Px=Ra+Rb-Rc

i f (Px>MAXVAL) Px=MAXVAL

endif;

e l s e

i f ( P x < 0 ) Px=0 endif;

endif;

endif;

 

Р и с . 3.62. Обнаружение угла.

Р и с . 3

. 63 . Корректировка прогноза.

Чтобы понять правило края, рассмотрим случай b < а. При этом условии правило края выбирает b в качестве прогноза х во многих случаях, когда вертикальный край изображения находится непо­ средственно слева от х. Аналогично, пиксел а выбирается в качестве прогноза X во многих случаях, когда горизонтальный край находит­ ся непосредственно над х. Если край не обнаруживается, то правило

Errz;a/+NEAR Errval i—-—^..^ , ^——.
2 X NEAR+1

3.8. JPEG-LS

края вычисляет прогноз в виде а -\- Ь — с^ что имеет простую гео­ метрическую интерпретацию. Если каждый пиксел является точкой трехмерного пространства, то прогноз а-\-Ь — с помещает Рх на ту

же плоскость, что и точки а,

б и с .

 

После того,

как прогноз

Рх найден, кодер вычисляет ошибку

прогноза Errval

в виде разности х — Ра;, но меняет знак, если вели­

чина SIGN отрицательная.

 

 

В моде почти без потерь ошибка квантуется, и кодер исполь­

зует это реконструированное

значение Rx пиксела х

так же, как

это будет делать декодер. Основной шаг квантования

заключается

в вычислении

 

 

 

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

Rx^ РхЛ- SIGN X Errval х (2 х NEAR+1).

Ошибка прогноза (после возможного квантования) претерпева­ ет сокращение области (здесь эта процедура опущена). Теперь она готова для главного этапа кодирования.

Коды Голомба были введены в § 3.8.1, где основной параметр был обозначен через Ь. В JPEG-LS этот параметр обозначается т. Если число т уже выбрано, то код Голомба неотрицательного целого чи­ сла п состоит из двух частей: унарного кода целой части числа п/т и двоичного представления nmodm . Этот код является идеальным ^\ля целых чисел, имеющих геометрическое распределение (то есть, когда вероятность числа п равна (1 — г)г^, 0 < г < 1 ) . Для каждого геометрического распределения найдется такое число т , что код Го­ ломба, построенный по т , имеет наименьшую возможную среднюю длину. Простейший случай, когда т равно степени 2 ( т = 2^), при­ водит к простым операциям кодирования/декодирования. Код чи­ сла п состоит в этом случае из к младших разрядов числа п, перед которыми стоит унарный код числа, составленного из остальных старших разрядов числа п. Этот специальный код Голомба обозна­ чается через G{k).

Для примера вычислим код G{2) числа п = 19 = IOOII2. Посколь­ ку /с = 2, то m = 4. Начнем с двух младших разрядов, II2, числа п. Они равны 3, что то же самое, что n m o d m (3 = 19mod4). Остав­ шиеся старшие разряды, IOO2 дадут число 4, которое равно целой

Соседние файлы в папке 1