Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОСы - ответы [2012].doc
Скачиваний:
48
Добавлен:
22.05.2015
Размер:
4.09 Mб
Скачать

3. Графические форматы. Bmp, gif и jpeg.

BMP

Хранит данные о цвете только в модели rgb, поддерживает как индексированные цвета, так и true color, причем в режиме индексированных цветов возможна простейшая компрессия RLE. Вся «мультиплатформенность» формата заключается лишь в поддержке Windows и OS/2.

Чтобы восстановить графический образ на экране из формата bmp не надо проводить никаких сложных и ресурсоемких операций по декодированию — достаточно лишь последовательно считывать номера цветов пикселей в палитре rgb и отображать их поток на экране. Такой простой алгоритм не может не сказаться на степени загрузке процессора при обработке файлов bmp. Вот и используют их для хранения логотипов, splash-screen'ов, иконок и прочих графических бирюлек внутри программ. Bmp — официальный графический формат платформы Windows.

GIF

В 1987 году специалисты из фирмы CompuServe поднатужились и явили миру новый формат для хранения изображений в режиме индексированных цветов — gif (Graphics Interchange Format). Как следует из названия, формат был изначально ориентирован на обмен картинками через узкие каналы связи глобальной сети. В 1989 году формат был модифицирован, и его новая версия получила название gif89a. Gif ориентирован в первую очередь на хранение изображений в режиме индексированных цветов (не более 256), также поддерживает компрессию без потерь LZW. Но главная соковыжималка для картинок в формате gif — это, все таки, приведение их к меньшему числу цветов. Само собой, что такое пройдет без последствий лишь на картинках с изначально небольшим количеством цветов: рисованной графике, элементах оформления, маленьких.

Полезно знать, что gif ввиду ряда особенностей алгоритма компрессии лучше сжимает изображения с последовательностями одинаковых цветов по горизонтали, то есть картинка с горизонтальными полосками при прочих равных условиях будет занимать меньше места, чем картинка того же размера, заполненная вертикальными полосками. Дополнительные «примочки», навешанные на gif в 1989 году это режим interlaced (чересстрочная загрузка изображений), дополнительный альфа-канал для реализации эффекта прозрачности (создатели формата, похоже, искренне верили, что никому никогда не понадобится больше одной градации прозрачности) и возможность хранить в одном файле несколько картинок с указанием времени показа каждой (по-русски это называется одним словом «мультфильм»). Теперь gif является самым распространенным форматом графики в Интернет и одновременно тяжким ярмом висит на шее у всех веб-дизайнеров, уставших от его откровенной убогости, но не использующих более прогрессивные форматы из-за боязни потерять посетителей.

JPG

Гармонический анализ не имеет пространственной локализации, поскольку не имеют пространственной локализации гармонические функции, поэтому для повышения эффективности методов сжатия необходимо дробить данные на фрагменты и применять преобразования Фурье к каждому фрагменту по отдельности. JPEG является стандартом де-факто для полноцветных изображений. Оперирует областями 8*8, на которых яркость и цвет меняются сравнительно плавно. При разложении матрицы такой области в двойной ряд по косинусам значимыми оказываются только первые коэффициенты. Таким образом, сжатие в JPEG осуществляется за счёт плавности изменения цветов в изображении.

1. Переводим изображение из RGB в YUV (Y – luminance, – яркость, V – хроматический красный, U– хроматический синий). Разбиваем изображение на матрицы 8*8. Если установлена слабая степень сжатия, то компоненты YUV кодируются 8 битами как есть. Если сильная, то каналы цветности усредняются по блокам 2*2 пикселей (YUV 4:2:0), т.е. из матрицы 16*16 получается матрица 8*8. При этом мы теряем 3/4 полезной информации о цветовых составляющих изображения и получаем сразу сжатие в два раза.

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

4. Производим квантование - целочисленное деление рабочей матрицы на матрицу квантования поэлементно. Для каждой компоненты (Y, U и V), в общем случае, задаётся своя матрица квантования q[u, v]. На этом шаге осуществляется управление степенью сжатия, и происходят самые большие потери. Задавая МК с большими коэффициентами, мы получим большую степень сжатия. Матрицы для большей или меньшей степени сжатия получают путём умножения исходной матрицы на некоторое число gamma. При больших значениях коэффициента gamma потери в низких частотах могут быть настолько велики, что изображение распадётся на квадраты 8*8. Потери в высоких частотах могут проявиться в так называемом "эффекте Гиббса".

5. Переводим матрицу 8*8 в 64-элементный вектор при помощи "зигзаг"-сканирования. Таким образом, в начале вектора мы получаем коэффициенты матрицы, соответствующие низким частотам, а в конце – высоким.

6. Свёртываем вектор с помощью алгоритма группового кодирования (аналог RLE). При этом получаем пары типа <пропустить, число>, где "пропустить" является счётчиком пропускаемых нулей, а "число" – значение, которое необходимо поставить в ячейку.

7. Свёртываем получившиеся пары кодированием по Хаффману с фиксированной таблицей.

Характеристики алгоритма JPEG:

• Степень сжатия: 2…200 (задаётся пользователем).

• Класс изображений: Полноцветные 24 битные изображения или изображения в градациях серого без резких переходов цветов (фотографии).

• Симметричность: 1.

• Характерные особенности: в некоторых случаях, алгоритм создает "ореол" вокруг резких горизонтальных и вертикальных границ в изображении (эффект Гиббса). Кроме того, при высокой степени сжатия изображение распадается на блоки 8*8 пикселов.

Билет №20 (8)