Реализация LZW алгоритма сжатия с использованием возможностей современных GPU

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Широкое распространение получила разработанная в апреле 1987 года модификация формата 4.0, которая могла поддерживать обработку несжатых цветных RGB-изображений. TIFF модификации 5.0 (появившийся в августе 1988 года) позволял хранить цветные изображения с палитрой и поддерживать алгоритм сжатия LZW. Выпущенный в июне 1992 года TIFF 6.0 расширил свои функциональные возможности поддержкой цветных изображений моделей СМYK и YCbCr, а также использовал метод сжатия JPEG.

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

TIFF стал общим форматом для систем ввода изображений со сканеров, используется в издательских системах и входит в состав дистрибутивных приложений Windows.

Организация файла. Файлы TIFF состоят из трех разделов: заголовка файла изображения (Image File Header - IFH), директории файла изображений (Image File Directory - IFD) и растровых данных (Тэг). Из них необходимыми являются только IFH и IFD. Следовательно, допускается возможность существования файла TIFF, не содержащего растровых данных. Файл TIFF, содержащий несколько изображений будет включать столько же директорий файла и разделов растровых данных (по одному для каждого изображения). Структура формата представлена на рисунке.

Рис. Обобщенная структура TIFF - файла

В составе структуры TIFF - файла можно выделить:

. Заголовок, включающий:

идентификатор порядка байтов в файле (от старших к младшим или наоборот);

номер версии;

указатель на первую директорию IFD;

. Директория (IFD) - содержит описание одного изображения:

счетчик тэгов в директории;

последовательность тэгов;

указатель на следующую директорию IFD;

. Тэг:

идентификатор поля;

тип поля (базовое, информационное, факсимильное и поле запоминания и восстановления документов);

длина поля;

смещение в файле к данным.

Начальный заголовок содержит 8 байт. Вся информация и параметры, имеющие отношение к изображению, хранятся в полях признаков. Современные версии TIFF включает 45 таких полей. Однако фактически есть два отдельных поля признака для точного определения размеров изображения, а также поля для определения ПЭВМ, программного обеспечения, даты создания файла и т. д. Несколько полей содержат значения по умолчанию и, следовательно, не требуют уточнения. TIFF снабжен полями, которые позволяют правильно отображать изображения с нестандартной разрешающей способностьюявляется сложным форматом, поскольку местоположение каждой директории и ее данных (включая растровые данные) может изменяться. Единственной составной частью файла TIFF, которая имеет постоянное место, является заголовок - он всегда располагается в первых 8 байтах каждого файла TIFF. Все остальные данные файла создаются с использованием информации IFD. Директория файла изображения и связанный с ней растр составляют субфайл TIFF. Ограничений на количество субфайлов в файле TIFF не существует.

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

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

Файл TIFF может содержать любое количество изображений (включая нулевое). Каждое изображение рассматривается как отдельный растровый субфайл, данные которого описываются информацией IFD. Каждый субфайл TIFF может быть записан в виде отдельного файла или вместе с другими субфайлами объединен в один файл TIFF. Каждый растровый субфайл имеет свою директорию файла изображения и может располагаться в любом месте (после заголовка). Каждому изображению может соответствовать только одна директория.

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

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

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

Тег формата TIFF имеет следующую структуру:

алгоритм сжатие графический формат

Typedef struct _TifTag

{ Tagid; /* Идентификатор