Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книга1(полный конспект).docx
Скачиваний:
55
Добавлен:
23.12.2018
Размер:
49.16 Mб
Скачать

10.11.Форматы пространственных данных.

Пространственные данные хранятся в среде ЭВМ в определенных графических форматах

Их можно разделить на две группы: растровые и векторные.

К растровым относятся форматы : PCX, IMG, BMP, GIF, IFF, TIFF и др. В этом случае изображение представляется в виде совокупности точек. Растровый формат наиболее эффективен при обработке фотоснимков. Данным способом создается изображение на экране, а также хранится сканированное изображение.

Недостатками растрового изображения является следующее:

а) возникают искажения при масштабировании изображений;

б) печать растровых изображений осуществляется только на точечных устройствах вывода;

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

К векторным форматам относятся форматы HP-GL/2, GEM, WMF,DXF,CGM и др.. В данном формате изображение описывается в виде совокупности графических объектов ( точек, линий, векторов, полигонов, окружностей и т.д. ).

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

а) для вывода изображения необходимо наличие векторно-ориентированного устройства (плоттера);

б) для вывода изображения на принтер его необходимо преобразовать в растровый формат.

Формат PCX ( расширение PCX)

Настоящий формат хранения растровых изображений на РС был разработан фирмой Zsoft для программы PaintBrush.

Файл программы РСХ состоит из заголовка. Все версии файлов РСХ имеют заголовок одинаковой структуры длиной 128 байт. Структура заголовка приведена в таблице 10.2.

Таблица 10.2. Структура заголовка РСХ.

Смещение

Длина в байтах

Примечание

1

2

3

0

1

Байт идентификации: 0АН=файл РСХ

1

1

Версия файла - 2,5

2 = версия 2,8 с описанием палитры

3 = версия 2,8 без описания палитры

5 = версия 3,0

2

1

Ключ кодирования (уплотнения данных)

0 = без кодирования

1 = уплотнение RLE методом

3

1

Количество битов на пиксель (количество битовых плоскостей)

4

8

Координаты углов рисунка XMIN, YMIN, XMAX, YMAX (рис. 27)

12

2

Разрешение по горизонтали dpi (dots per inch) - число точек на дюйм

14

2

Разрешение по вертикали dpi (dots per inch) - число точек на дюйм

16

48

Описание палитры в поле (16х3)м байтов

64

1

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

65

1

Число битовых плоскостей (не более 4)

66

2

Число байтов на строку изображения (четное число)

68

2

Параметры палитры 1 = ч/б

2 = уровни серого

70

80

Пустые (для выравнивания заголовка до 128 байт)

Следует отметить, что данные заголовка читаются справа налево. Вначале (слева) находятся низшие разряды числа, а справа - старшие. Например число FF31 записано так 31FF.

Формат РСХ рассчитан для хранения прямоугольного участка изображения, состоящего из N строк по X пикселей в строке. Запоминание изображения осуществляется построчно, причем число битов (Х) четно и должно быть кратным 16-ти. Если оригинальный рисунок имеет другие размеры, то в конце строки добавляется несколько точек. Число строк в рисунке должно быть кратным 8-и. Для этого в нижней части рисунка (рис. 10.15) иногда вводятся дополнительные пустые строки.

Рис. 10.15

Следующие за заголовком графические данные располагаются в следующем порядке.

Каждый рисунок считывается построчно и разделяется на битовые плоскости. (рис 10.16). Плоскость 0 - соответствует синему цвету, 1 - зеленому, 2 - красному, 3 - интенсивности.

Рис. 10.16

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

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

В файлах РСХ используется два метода укладки графических данных в файл : без уплотнения и с уплотнением. Если данные хранятся без уплотнения, то в байт со смещением 02 заголовка заносится число отличное от единицы, например 0.

Уплотнение (кодировка) данных в файле РСХ осуществляется так.

  1. Если оба старших бита (6,7) байта заполнены 1, то последующая информация находится в уплотненной форме. В этом случае биты 0-5 указывают необходимое количество повторов цепочки битов, записанных в следующий байт.

  2. Если хотя бы в одном из старших битов (6,7) содержится нуль, то данный байт следует трактовать именно как байт данных. В этом случае все биты 0-7 обрабатываются непосредственно как данные изображения, т.е. при загрузке неуплотненных данных два старших бита представляют точки изображения.

Например, пусть пара байтов соответствует коду С2FA, что в двоичном исчислении имеет вид : 1100001011111010.

Поскольку в первом байте биты 6 и 7 единичные, а в битах 0-5 записано десятичное число 2, то цепочка битов второго байта повторится дважды : 1111101011111010.

Если же , например, байт имеет вид 1А, что в битовом представлении соответствует 00011010, то эта цепочка битов является частью строки изображения.

Для исключения неопределенности в случае, когда байт данных содержит единицы в 6 и 7 битах поступают так. Поскольку этот байт данных представляется лишь раз, то перед ним записывается байт-признак такого представления - С1. Пусть имеется байт данных С9. Здесь шестой,седьмой биты единичны. Тогда в РСХ-формате он представится так: С1С9.

Дамп файла РСХ представлен на рисунке 10.17.

Рис.10.17.

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

Windows– формат (BMP).

В программе Windows для хранения растровых графических изображений используется ВМР – формат. Его главным достоинством является независимость от устройств отображения.

ВМР – файл состоит из нескольких блоков данных:

BITMAP_FILE – заголовок

BITMAP_INFO

(BITMAP_INFO – заголовок)

(RGB_QUAD)

BITMAP – данные рисунка

Заголовок BITMAP­­­­­­­­_FILE имеет следующую структуру (таблица 10.4)

Таблица 10.4. Структура заголовка ВМР – файла.

Смещение

Длина в байтах

Имя

Значение

00Н

2

bf Type

Метка файла (‘BM’)

02H

4

bf Size

Длина файла в байтах

06Н

2

Резервные (содержат 0)

08Н

2

Резервные (содержат 0)

0АН

4

bf offs

Смещение области данных

Четырехбайтовое имя offs содержит смещение от начала файла

до первого байта графических данных.

BITMAP_FILE – заголовок описывает данные в целом.

Детально параметры хранимого изображения описаны в BITMAP_INFO блоке, который следует непосредственно за заголовком файла. Этот блок состоит из BITMAP_INFO – заголовка, в котором хранятся общие сведения об изображении, и RGB_QUAD, в котором задается палитра цветов. Структура BITMAP_INFO заголовка представлена в таблице 10.5.

Таблица 10.5.Структура BITMAP_INFO – блока

Смещение

Длина в байтах

Имя

Значение

BITMAP_INFO – заголовок

0ЕН

4

biSize

Длина – заголовка в байтах

12Н

4

biWidth

Ширина битовой карты в пикселах

16Н

4

biHeight

Высота битовой карты в пикселах

1А Н

2

biPlanes

Цветовые плоскости (должно быть значение)

1СН

2

biBitlnt

Количество битов на пиксел

1ЕН

4

biCompr

Тип сжатия данных

22Н

4

biSizeIm

Размер графического изображения в байтах

26Н

4

bixPels/m

Разрешение по горизонтали

2АН

4

bixPels/m

Разрешение по вертикали

2ЕН

4

biClrUsed

Количество используемых цветов

32Н

4

biClImp

Количество основных цветов

RGB-QUAD

36Н

n*4

Определение для n цветов с раскладкой

rgbBlue

1 байт – интенсивность голубого цвета

rgbGreen

1 байт – интенсивность зеленого цвета

rgbRed

1 байт – интенсивность красного цвета

rgbres

1 байт – резервный

Со смещением 1AH определяется количество основных плоскостей выводного устройства. Значение этого поля может быть равно 1 или 4 в зависимости от количества битовых плоскостей. В поле HbiBitCnt со смещением 1C записывается количество битов на один пиксел. 1 – определяет один бит на пиксел. В этом случае значение бита, равное 1 определяет один цвет пиксела, а 0 – второй цвет. Одному байту будет соответствовать восемь пикселов, 4 – определяет четыре бита на пиксел. В этом случае 1 байту соответствует 2 пиксела. Всего цветов – 16. 8 – определяет 1 байт на пиксел. Всего цветов 256. 24 – определяет 3 байта (24 бита) на пиксел. В 24 битах помещается число 224 (16 миллионов). Это может соответствовать такому же количеству цветов. Поскольку такая палитра была бы очень большой, практически оставляют 256 цветов от 0 до 255. При этом каждый цвет определяется тремя байтами, соответствующими соответственно красному, зеленому и синему цветам. В каждом байте определяется доля соответствующего цвета. При 24-битовом представлении данных графического изображения палитра в BITMAP_INFO – блоке отсутствует.

Существуют следующие способы сжатия (упаковки) данных в файлах ВМР:

BI_RGB – данные не упакованы

BI_RLE8 – используется способ Run_Length – Encoding (RLE) (для битовой карты с 8 битами на пиксел)

BI_RLE4 – используется способ Run_Length – Encoding (RLE) (для битовых карт с 4 битами на пиксел).

Этим типам сжатия соответствуют следующие константы

BI_RGB=0; BI_RLE8=1; BI_RLE4=2

Эти константы записаны в поле «Тип сжатия данных» со смещением 1EН. Поле «bisizeImage» (смещение 22) задает длину области данных упакованных битовой карты в байтах. Поля «bixPels на метр» и «biyPels на метр» определяют число Pels (picture elements на метр).

Поле «biClrUser» (смещение 2ЕН) определяет количество цветов палитры. При значении 0 используется вся палитра.

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