Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TIFF спецификация полная.docx
Скачиваний:
3
Добавлен:
26.08.2019
Размер:
264.91 Кб
Скачать

2. Определения

——————————————

Отметим, что структура TIFF, описанная в предыдущем разделе никак

не связана с изображениями. Единственная связь описанной

структуры с изображениями, заключается в том, что поля описывают

различные характеристики и свойства изображений.

Перед тем, как определить поля, мы определим некоторые базовые

понятия. По определению изображение является прямоугольным

массивом пикселов, каждый из которых состоит из одного или

нескольких компонент (samples). В монохромных данных каждый пиксел

состоит из одной компоненты, и понятия компонента и пиксел

являются равнозначными. В цветных RGB-данных одному пикселу

соответствуют три компоненты.

.

- 15 -

3. Поля

———————

Данный раздел описывает поля, определенные в настоящей редакции

TIFF. В будущем могут быть добавлены новые поля, однако, по мере

возможности это будет делаться таким образом, чтобы не разрушить

старые программы при встрече с новыми TIFF-файлами.

Документация для каждого поля содержит имя поля (достаточно

произвольное, но согласованное), значение для поля Tag value, тип

поля (Type), ожидаемое число значений (N), комментарий,

описывающий поле и значения по умолчанию, если таковые существуют.

Если поле отсутвует, программы чтения TIFF должны принимать эти

значения по умолчанию.

Текст "Нет умолчаний" не означает, что программа записи TIFF не

должна обращать внимание на это поле. Он просто означает, что для

него ничего не принимается по умолчанию. Если программа записи

имеет причины предполагать, что программе чтения понадобится

значение этого поля, она должна записать в него соответствующее

значение. Программы чтения TIFF могут делать что угодно, если они

обнаружат отсутствие нужного им поля, для которого не определены

значения по умолчанию. Например, если программа записи не запишет

поле PhotometricInterpretation (фотометрическая интерпретация), то

некоторые программы чтения будут интерпретировать изображение

правильно, а другие будут высвечивать его инвертированным. Это

нельзя признать удовлетворительным, и поэтому программы записи

должны быть достаточно аккуратны, чтобы не допускать подобных

ситуаций.

Поля сгруппированы по нескольким категориям: базовые,

информационные, факсимильные, запоминания и восстановления

документа и не рекомендуемые в дальнейшем. В будущих версиях

описания некоторые из этих категорий могут быть помещены в

отдельные справочные документы.

В этом документе описано много полей, но большинство не являются

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

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

полезных TIFF-файлах.

Базовые поля

Базовыми полями являются поля, которые являются фундаментальными

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

BitsPerSample

Tag = 258 (102h)

Type = SHORT

Length = SamplesPerPixel

Значения этого тега определяют число битов в каждой компоненте

пиксела. Отметим, что этот тег допускает различное число бит для

.

- 16 -

каждой компоненты, соответствующей пикселу. Например, цветные

RGB-данные могут использовать различное число бит для компонент

каждой из трех цветовых плоскостей. Большинство RGB-файлов имеют

одинаковое число BitsPerSample для каждой компоненты. Даже в этом

случае следует включать все три элемента. Запись только 8 вместо

8,8,8 создает ошибочную ситуацию для других полей.

По умолчанию = 1. См. также SamplesPerPixel.

——————————————————————————————————————————————————————————————————

ColorMap

Tag = 320 (140h)

Type = SHORT

Length = 3 * (2**BitsPerSample)

Этот тег определяет цветовую RGB таблицу для изображений с

цветовой палитрой. Значения пикселов цветовой палитры

используются как индексы в трех таблицах цветопередачи (для

каждого из трех основных цветов). Например, если пиксел цветовой

палитры имеет значение, равное 0, то он должен высвечиваться в

соответствии в 0 элементом красной (Red), зеленой (Green) и синей

(Blue) таблиц цветопередачи.

Таблицы цветопередачи запоминаются последовательно. Сначала идут

элементы красного, затем зеленого и затем синего цветов. Длина

каждой таблицы равна 2**BitsPerSample (Для таких изображений

SamplePerPixel всегда равно 1). Следовательно, элемент ColorMap

для изображения с 8-битными палитровыми цветами должен составлять

3*256 элементов. Ширина каждого элемента равна 16 бит, поскольку

используется тип SHORT. 0 отвечает минимуму интенсивности и 65535

- максимуму. Черному цвету соответствует 0,0,0, и белому - 65535,

65535, 65535. Цель цветовой таблицы состоит в том, чтобы создать

таблицу поиска RGB-триплексов для пикселов, имеющих значения от 0

до 2**BitsPerSample-1.

Поле ColorResponseCurves может использоваться совместно с полем

ColorMap для более полного определения RGB-триплексов в ColorMap.

Однако, в большинстве случаев достаточно значения

ColorResponseCurves по умолчанию.

См. также PhotometricInterpretation.

Нет умолчаний. Поле ColorMap должно включаться для всех цветных

палитровых изображений.

——————————————————————————————————————————————————————————————————

ColorResponseCurves

Tag = 301 (12Dh)

Type = SHORT

Length = 3 * (2**BitsPerSample)

Этот тег определяет три таблицы цветопередачи, одну для красной,

одну для зеленой и одну для синей компонент цвета. Таблицы

цветопередачи запоминаются последовательно. Сначала идут элементы

.

- 17 -

красного, затем зеленого и затем синего цветов. Длина каждой

таблицы равна 2**BitsPerSample, причем используется значение

BitsPerSample, соответствующее каждой компоненте. Ширина каждого

элемента равна 16 бит, поскольку используется тип SHORT. 0

отвечает минимуму интенсивности и 65535 - максимуму. Черному цвету

соответствует 0,0,0, и белому - 65535, 65535, 65535.

Следовательно, элемент ColorResponseCurve для RGB-данных, где

каждая компонента содержит 8 битов, занимает 3*256 элементов,

причем каждый элемент имеет тип SHORT.

Цель этих таблиц цветопередачи состоит в определении содержимого

цветных RGB-изображений.

Для более подробной информации см. Приложение H, раздел VII.

Умолчание: таблицы базируются на рекомендованном NTSC значении

гамма=2.2. (См. Приложение H)

——————————————————————————————————————————————————————————————————

Compression

Tag = 259 (103h)

Type = SHORT

Length = 1

Значение тега определяет схему сжатия растровых данных. В

настоящее время для этого тега определены значения 1, 2, 5 и

32773.

Compression=1

Нет сжатия, но данные пакуются в байты настолько плотно,

насколько это возможно, так, чтобы не было неиспользуемых

битов (за исключением конца строк). Байты запоминаются как

массив типа BYTE, для BitsPerSample <= 8, SHORT, если

BitsPerSample > 8 и <= 16, и LONG, если BitsPerSample > 16 и

<= 32. Порядок байтов в данных, содержащих более 8 бит

должен соответствовать тому, который был указан в заголовке

TIFF-файла (байты 0 и 1). В формате II младшие байты

предшествуют старшим, в формате MM наоборот.

Если число бит в компоненте не является степенью 2, и вы

готовы пожертвовать некоторым пространством для достижения

более высокого быстродействия, вы можете использовать

ближайшее значение, являющееся степенью 2. Например, если

ваши данные описываются 6 битами, вы, возможно, захотите

указать, что они содержат 8 бит.

Строки должны начинаться с выравниванием на байт.

Следовательно, число байт на строку должно равняться

(ImageWidth*SamplesPerPixel*BitsPerSample + 7)/8, имея в виду

целую арифметику, для PlanarConfiguration=1. Для

PlanarConfiguration=2 это число равно (ImageWidth *

BitsPerSample + 7)/8.

.

- 18 -

В некоторых графических системах требуется, чтобы строки были

выровнены на границу слова или на границу двойного слова.

Перед передачей строк несжатого TIFF'а в графические

программы в такой среде, их следует скопировать в буферы,

удовлетворяющие требованиям выравнивания.

Compression=2

Схема сжатия CCITT Group 3. Одно размерное кодирование

длинных серий по модифицированной схеме Хаффмана. См.

Приложение B: Сжатие данных - Схема 2. Значение

BitsPerSample должно быть равно 1, поскольку этот тип сжатия

определен только для двухуровневых изображений.

Когда вы декодируете данные, которые были сжаты с

Compression=2, вы должны транслировать белые серии в

последовательность нулей, и черные - в последовательность

единиц. Следовательно, стандартным значением

PhotometricInterpretation для этого сжатия является 0

(WhiteIsZero). Если программа чтения встретит значение

PhotometricInterpretation, равное 1 (BlackIsZero) для такого

изображения, оно должно быть высвечено или напечатано с

инвертированием черного и белого цветов.

Compression=5

LZW-сжатие для серых и цветных изображений. См. Приложение F.

Compression=32773

PackBits компрессия, простая схема сжатия с помощью длинных

серий, ориентированная на 1-битовые изображения. См.

Приложение С.

Сжатие данных оказывает влияние только на растровые данные, на

которые имеется указатель в StripOffsets. Вся другая

TIFF-информация остается неизменной.

По умолчанию = 1.

——————————————————————————————————————————————————————————————————

GrayResponseCurve

Tag = 291 (123h)

Type = SHORT

Length = 2**BitsPerSample

Цель этого тега, а также тега GrayUnits состоит в том, чтобы

обеспечить более точную фотометрическую интерпретацию серых

изображений в терминах оптической плотности.

Тег GrayScaleResponseUnits указывает точность информации,

содержащейся в теге GrayResponseCurve. Поскольку оптическая

плотность определяется в терминах фракционных чисел (fractional

numbers), этот тег необходим для правильной интерпретации

запомненной целой информации. Например, если тег

.

- 19 -

GrayScaleResponseUnits равен 4 (десятитысячные доли), и значение

GrayScaleResponseCurve для серого уровня 4 равно 3455, то

получаемое действительное значение равно 0.3455. Оптические

измерители плотности обычно выдают значения в диапазоне от 0.0

до 2.0.

Если известна кривая передачи оптической плотности для данных в

TIFF-файле, и известна аналогичная кривая для выходного

устройства, то может быть выполнено осмысленное обращение между

входными данными и выходным устройством. Например, вывод может

точно соответствовать исходным данным. Кроме того, если исходное

изображение недостаточно контрастно (это нужно увидеть из его

таблицы отображения плотности), то может быть быть выполнено

априорное улучшение контрастности.

Цель данного тега состоит в создании таблицы поиска, которая

содержит 2**BitsPerSample-1 значений оптической плотности. Нулевой

элемент массива GrayResponseCurve используется для определения

плотности для всех пикселов, имеющих значение 0, первый элемент

массива GrayResponseCurve - для определения пикселов со значением

1, и т.д. до 2**BitsPerSample-1.

Если ваши данные на самом деле являются, скажем, 7-битными, но вы

добавили один бит к каждому пикселу, чтобы превратить их в

8-битные, все будет по-прежнему работать. Если ваши данные

выровнены по старшим разрядам, то половина элементов

GrayResponseCurve (возможно, только нечетные) никогда не будут

использоваться, но вам и не надо о них заботиться. Если данные

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

в диапазоне от 0 до 127, и вам нужно соответствующим образом

составить таблицу GrayResponseCurve. Что эта таблица содержит в

диапазоне от 128 до 255 не имеет значения. Отметим, что

выравнивание по младшим разрядам, возможно, не лучшая идея,

поскольку не все приложения работают так, как GrayResponseCurve.

Заметим также, что LZW-сжатие дает одинаковую степень сжатия вне

зависимости от того проводилось выравнивание по младшим или по

старшим разрядам.

Наличие GrayResponseCurve допустимо даже для двухуровневых

(1-битных) изображений. В этом случае GrayResponseCurve будет

иметь два значения. Следует однако заметить, что программы чтения

TIFF-файлов класса B не обращают внимания на наличие

GrayResponseCurves в таких файлах. См. Приложение G.

Если в IFD существуют одновременно поля GrayResponseCurve и

PhotometricInterpretation, то значение GrayResponseCurve замещает

значение, определенное в PhotometricInterpretation. Однако,

наличие и того и другого поля является неплохой идеей, поскольку

некоторые прикладные программы не обращают внимания на

GrayResponseCurve.

Авторы программ для записи TIFF-файлов могут купить Kodak

Reflection Density Guide (номер каталога 146 5947), который стоит

$10 или переписать данные из него. Это поможет формировать

.

- 20 -

правильные кривые для передачи оптической плотности их сканера или

другого устройства. Если это покажется вам слишком большой

работой, мы рекомендуем кривую, которая линейна в пространстве

интенсивность-отражательная способность. Для вычисления

отражательной способности от плотности: R = 1/pow(10,D). Для

вычисления плотности в зависимости от отражательной способности: D

= log10(1/R). Типичная GrayResponseCurve для 4-битных изображений

будет выглядеть, следовательно, как: 2000, 1177, 875, 699, 574,

477, 398, 331, 273, 222, 176, 135, 97, 62, 30, 0, при

GrayResponseUnit=3. Такая кривая согласуется с

PhotometricInterpretation=1.

См. также GrayResponseUnit, PhotometricInterpretation, ColorMap.

——————————————————————————————————————————————————————————————————

GrayResponseUnit

Tag = 290 (122h)

Type = SHORT

Length = 1

Значение тега позволяет определить в каких единицах оптическая

плотность в теге GrayResponseCurve. Возможные значения

GrayResponse Unit:

1 = Число представляет десятые доли единицы.

2 = Число представляет сотые доли единицы.

3 = Число представляет тысячные доли единицы.

4 = Число представляет десятитысячные доли единицы.

5 = Число представляет стотысячные доли единицы.

Влияет на GrayResponseCurve.

См. также GrayResponseCurve.

По историческим причинам значение по умолчанию равно 2. Однако,

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

——————————————————————————————————————————————————————————————————

ImageLength

Tag = 257 (101h)

Type = SHORT или LONG

Length = 1

Длина (высота) изображения в пикселах (Y: вертикаль). Число строк

(иногда их называют как строки развертки) в изображении. См. также

ImageWidth.

Нет умолчаний.

——————————————————————————————————————————————————————————————————

.

- 21 -

ImageWidth

Tag = 256 (100h)

Type = SHORT or LONG

Length = 1

Ширина изображения в пикселах (X: горизонталь). Число колонок в

изображении). См. также ImageLength.

Нет умолчаний.

———————————————————————————————————————————————————————————————————

NewSubfileType

Tag = 254 (FEh)

Type = LONG

Length = 1

Замещает старое поле SubfileType, снимая ограничения, определенные

в этом поле.

Общее описание данных, содержащихся в этом суб-файле. Это поле

образовано 32 битами-флагами. Предполагается, что неиспользуемые

биты должны быть равны 0. Бит 0 является младшим.

В настоящее время определены следующие значения:

Бит 0 равен 1, если изображение является версией с пониженным

разрешением другого изображения, имеющегося в этом же

TIFF-файле. В противном случае бит равен 0.

Бит 1 равен 1, если изображение является отдельной страницей

многостраничного изображения (см. описание тега PageNumber).

В противном случае бит равен 0.

Бит 2 равен 1, если изображение определяет маску прозрачности для

другого изображения в этом же TIFF-файле. Значение тега

PhotometricInterpretation должно равняться 4 (это значение

соответствует маске прозрачности).

Эти значения определены как битовые флаги, поскольку они в

достаточной степени независимы один от другого. Например, полезно

иметь 4 разных изображения в одном TIFF-файле: изображение с

полным разрешением, изображение с пониженным разрешением, маску

прозрачности для изображения с полным разрешением и маску

прозрачности для изображения с пониженным разрешением. Каждое из

этих четырех изображений будет иметь различное значение поля

NewSubfileType.

Значение по умолчанию равно 0.

——————————————————————————————————————————————————————————————————

.

- 22 -

PhotometricInterpretation

Tag = 262 (106h)

Type = SHORT

Length = 1

Тег определяет фотометрическую интерпретацию изображения и может

принимать значения 0, 1, 2, 3 и 4.

PhotometricInterpretation=0

Для двухуровневых и серых изображений: 0 означает, что пиксел

белый, 2**BitsPerSample-1 что он черный. Если существует тег

GrayResponseCurve, он переопределяет значение тега

PhotometricInterpretation, хотя безопаснее согласовать их

значения, поскольку старые прикладные программы могут

по-прежнему игнорировать GrayResponseCurve. Это обычное

значение для Compression=2.

PhotometricInterpretation=1

Для двухуровневых и серых изображений: 0 означает, что пиксел

черный, 2**BitsPerSample-1 что он белый. Если существует тег

GrayResponseCurve, он переопределяет значение тега

PhotometricInterpretation, хотя безопаснее согласовать их

значения, поскольку старые прикладные программы могут

по-прежнему игнорировать GrayResponseCurve. Если это

значение указано для Compression=2, то при высвечивании или

печати изображение должно быть инвертировано.

PhotometricInterpretation=2

RGB. В RGB модели цвет описывается как комбинация трех

основных цветов света (красного, зеленого и синего) в

соответствующих концентрациях. Для каждой из трех компонент

0 представляет минимум интенсивности и 2**BitsPerSample-1 -

максимум. Так, в RGB значение (0,0,0) представляет черный, а

значение (255,255,255) белый цвет при 8-битных компонентах.

При PlanarConfiguration=1 компоненты запоминаются в указанном

порядке: сначала красный, затем зеленый, затем синий. При

PlanarConfiguration=2 StripOffsets для плоскости каждой

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

StripOffsets для красной плоскости, затем StripOffsets для

зеленой плоскости, затем StripOffsets для синей плоскости.

Поле ColorResponseCurves может использоваться для глобального

уточнения или изменения цветового баланса в RGB-изображениях

без изменения значений самих пикселов.

PhotometricInterpretation=3

Цветное изображение с палитрой. В этом режиме цвет

описывается одной компонентой. Эта компонента используется

как индекс в таблицах цветопередачи тега ColorMap для

красной, зеленой и синей компонент, чтобы определить триаду

RGB, которая задает действительное значение цвета. Если

используется тег PhotometricInterpretation, то он должен

.

- 23 -

применяться и к таблицам цветопередачи. Значение

SamplesPerPixel должно равняться 1.

PhotometricInterpretation=4

Маска прозрачности. Это означает что последующее изображение

используется для определения нерегулярной области другого

изображения, расположенного в этом же TIFF-файле. Теги

SamplesPerPixel и BitsPerSample должны иметь значение 1.

Рекомендуется использование схемы сжатия PackBits. Единичный

бит определяет внутреннюю часть области, а нулевой - внешнюю.

Маска прозрачности должна иметь те же значения тегов

ImageLength и ImageWidth, что и основное изображение.

Программы чтения могут использовать эту маску для определения

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

основного изображения, соответствующие единичным битам маски

выводятся на экран или принтер, а пикселы, соответствующие

нулевым битам - нет.

Возможно обобщение понятия маски прозрачности для ввода

частичной прозрачности, однако не очевидно, что такая

информации будет полезна для настольных издательских систем.

Нет умолчаний. Это означает, что если вас волнует, чтобы ваше

изображение не было высвечено или напечатано как инвертированное,

вы должны записать это поле. Не полагайтесь, что прикладная

программа поступит с вашим изображением по умолчанию так, как вам

нужно! Для черно-белых и серых изображений рекомендуется значение

PhotometricInterpretation = 1 (за исключением Compression=2),

чем достигается популярный пользовательский интерфейс для

изменения яркости и контрастности изображений.

PlanarConfiguration

Tag = 284 (11Ch)

Type = SHORT

Length = 1

Тег определяет последовательность запоминания компонент пикселов в

цветных изображениях и может принимать значения 1 и 2.

PlanarConfiguration=1

Значения компонент пикселов запоминаются последовательно так,

что они располагаются в одной плоскости изображения. См. тег

PhotometricInterpretation для определения порядка компонент

внутри пиксельных данных. Следовательно, для RGB-данных

данные запоминаются как RGBRGBRGB... и т.д.

PlanarConfiguration=2

Компоненты запоминаются в отдельных компонентных плоскостях.

Значения тегов StripOffsets и StripByteCounts образуются как

двумерные массивы с SamplesPerPixel строк и StripsPerImage

колонок (сначала запоминаются все колонки для строки 0, затем

все колонки для строки 1, и т.д.). PhotometricInterpretation

описывает тип данных, который запомнен в каждой компонентной

плоскости. Например, RGB-данные запоминаются как красные

.

- 24 -

компоненты в одной плоскости, зеленые компоненты в другой и

синие - в третьей.

Если SamplesPerPixel равен 1, PlanarConfiguration не имеет

значения и не должен включаться.

По умолчанию равно 1. См. также BitsPerSample, SamplesPerPixel.

——————————————————————————————————————————————————————————————————

Predictor

Tag = 317 (13Dh)

Type = SHORT

Length = 1

Используется при Compression=5 (LZW). См. Приложение F.

1 = Нет схемы предварительных операций перед кодированием.

По умолчанию равно 1.

——————————————————————————————————————————————————————————————————

ResolutionUnit

Tag = 296 (128h)

Type = SHORT

Length = 1

Используется совместно с тегами XResolution и YResolution и

определяет единицы, в которых задаются значения этих тегов.

ResolutionUnit=1

Нет абсолютных единиц измерения. Используется для

изображений, которые могут иметь неквадратный

пространственный коэффициент пропорциональности по

горизонтали и вертикали (aspect ratio), но для которых не

важны абсолютные размеры. Недостаток ResolutionUnit=1

состоит в том, что разные прикладные программы могут

переводить изображение в разные размеры. Даже если решение

является достаточно произвольным, возможно лучше использовать

число точек на дюйм или на сантиметр, и задавать для

XResolution и YResolution такие значения, чтобы сохранялся

коэффициент пропорциональности (aspect ratio) и максимальный

размер изображения составлял, например, 4 дюйма.

ResolutionUnit=2

Дюймы.

ResolutionUnit=2

Сантиметры.

По умолчанию равно 2. См. также XResolution, YResolution.

——————————————————————————————————————————————————————————————————

.

- 25 -

RowsPerStrip

Tag = 278 (116h)

Type = SHORT или LONG

Length = 1

Число строк в полосе. Данные изображения организуются в полосы,

которые затем используются для быстрого доступа к нужной строке,

если данные подвергались сжатию (хотя использование этого поля

допустимо даже если данные не сжимались).

Теги RowsPerStrip и ImageLength сообщают вам число полос во всем

изображении. Уравнение

StripsPerImage = (ImageLength + RowsPerStrip - 1) / RowsPerStrip

подразумевает использование целой арифметики.

Заметим, что для значения тега могут использоваться типы данных

SHORT или LONG. Значение SHORT используется для небольших

TIFF-файлов. Однако, следует заметить, что предыдущие описания

TIFF-файлов требовали значения LONG и некоторые прикладные

программы могут не ожидать появления значения типа SHORT. Для

получения дополнительных рекомендаций см. Приложение G.

По умолчанию равно 2**32-1, что на практике означает

бесконечность, т.е. все изображение располагается в одной полосе.

Однако, мы не рекомендуем использовать одну полосу. Выбирайте

RowsPerStrip таким образом, чтобы каждая полоса занимала

приблизительно 8К байтов, даже если данные не сжимаются, поскольку

это упрощает буферизацию для программ чтения. Значение 8К является

достаточно произвольным, но представляется вполне работоспособным.

См. также ImageLength, StripOffsets, StripByteCounts.

——————————————————————————————————————————————————————————————————

SamplesPerPixel

Tag = 277 (115h)

Type = SHORT

Length = 1

Число компонент в пикселе. SamplesPerPixel равно 1 для

двухуровневых, серых и палитровых изображений и равно 3 для

RGB-изображений.

По умолчанию=1.

См. также BitsPerSample, PhotometricInterpretation.

——————————————————————————————————————————————————————————————————

.

- 26 -

StripByteCounts

Tag = 279 (117h)

Type = SHORT or LONG

Length = StripsPerImage для PlanarConfiguration=1.

= SamplesPerPixel*StripsPerImage для

PlanarConfiguration=2

Для каждой полосы число байтов в полосе. Существование этого поля

значительно упрощает подсчет и буферизацию сжатых данных, если

полоса имеет осмысленный размер.

Нет умолчаний. См. также StripOffsets, RowsPerStrip.

——————————————————————————————————————————————————————————————————

StripOffsets

Tag = 273 (111h)

Type = SHORT or LONG

Length = StripsPerImage для PlanarConfiguration=1.

= SamplesPerPixel*StripsPerImage для

PlanarConfiguration=2

Для каждой полосы ее байтовое смещение в файле. Смещение

указывается по отношению к началу TIFF-файла. Заметим, что наличие

этого поля делает положение текущей полосы независимым от

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

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

нахождения данных изображения для программ чтения и,

следовательно, должно существовать.

Заметим, что для значения тега могут использоваться типы данных

SHORT или LONG. Значение SHORT используется для небольших

TIFF-файлов. Однако, следует заметить, что предыдущие описания

TIFF-файлов требовали значения LONG и некоторые прикладные

программы могут не ожидать появления значения типа SHORT. Для

получения дополнительных рекомендаций см. Приложение G.

Нет умолчаний. См. также StripByteCounts, RowsPerStrip.

XResolution

Tag = 282 (11Ah)

Type = RATIONAL

Length = 1

Число пикселов на единицу, определенную полем ResolutionUnit в

направлении X, т.е. в направлении ImageWidth. Это, конечно не

гарантирует, что изображение действительно будет напечатано с

размерами, определяемыми этим параметром. Он предназначен для

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

усмотрению.

Нет умолчаний. См. также YResolution, ResolutionUnit.

——————————————————————————————————————————————————————————————————

.

- 27 -

YResolution

Tag = 283 (11Bh)

Type = RATIONAL

Length = 1

Число пикселов на единицу, определенную полем ResolutionUnit в

направлении Y, т.е. в направленииImageLength.

Нет умолчаний. См. также XResolution, ResolutionUnit.

——————————————————————————————————————————————————————————————————

Информационные поля

Информационными полями являются поля, которые могут содержать

некоторую полезную информацию для пользователя, например, откуда

пришло изображение. Большинство из них является ASCII-полями.

Прикладные программы могут иметь диалоговое окно типа More Info...

для высвечивания такой информации.

Artist

Tag = 315 (13Bh)

Type = ASCII

Имя человека, создавшего изображение.

Если вам нужно добавить к изображению замечание типа Copyright, то

это то место, где это следует сделать. На практике вы возможно

захотите записать содержимое этого поля сразу после 8-байтового

TIFF-заголовка. Проверьте, что ваш IFD и указатели полей

выставлены надлежащим образом, и сделайте это.

DateTime

Tag = 306 (132h)

Type = ASCII

Length = 20

Дата и время создания изображения. Используйте формат YYYY:MM:DD

HH:MM:SS с 24 часовым диапазоном значений для часов и одним

пробелом между датой и временем. Длина строки вместе с нулевым

символом составляет 20 байтов.

——————————————————————————————————————————————————————————————————

HostComputer

Tag = 316 (13Ch)

Type = ASCII

Компьютер, на котором создано изображение. ENIAC или что-то еще.

См. также Make, Model, Software.

——————————————————————————————————————————————————————————————————

.

- 28 -

ImageDescription

Tag = 270 (10Eh)

Type = ASCII

Например, пользователь может по своему усмотрению добавить к

изображению комментарий типа "1988 Компания на пикнике".

Предполагается, что это то, что в газетах и журналах называется

"подписью под иллюстрацией".

——————————————————————————————————————————————————————————————————

Make

Tag = 271 (10Fh)

Type = ASCII

Тип сканера, видеодигитайзера и т.п.

См. также Model, Software.

——————————————————————————————————————————————————————————————————

Model

Tag = 272 (110h)

Type = ASCII

Название/номер модели сканера, видеодигитайзера и т.п.

Этот тег предназначен исключительно для информации пользователю.

См. также Make, Software.

Software

Tag = 305 (131h)

Type = ASCII

Название и версия программы, создавшей изображение.

Этот тег предназначен исключительно для информации пользователю.

См. также Make, Model.

——————————————————————————————————————————————————————————————————

.

- 29 -

Факсимильные поля

Факсимильные поля могут быть полезны для вас, если вы используете

TIFF для запоминания факсимильных сообщений в их исходном виде. Их

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

типа настольных издательств.

Compression (базовый тег)

Tag = 259 (103h)

Type = SHORT

Length = 1

Значение тега определяет схему сжатия растровых данных. В

настоящее время для этого тега определены значения 3 и 4.

Compression=3

Факсимильно-совместимая схема сжатия CCITT Group 3, в

точности соответствующая документу "Standardization of Group

3 facsimile apparatus for document transmission,

Recommendation T.4, Volume VII, Fascicle VII.3, Terminal

Equipment and Protocols for Telematic Services, The

International Telegraph and Telephone Consultative Committee

(CCITT), Geneva, 1985, pp. 16-31". Каждая полоса должна

начинаться с выравниванием на байт (напоминаем, что

изображение может состоять целиком из одной полосы). Строки,

которые не являются первыми в полосе не обязательно

начинаются с границы байта. Данные запоминаются как байты,

никакие перестановки байтов внутри слов не допускаются. Для

задания таких опций Group 3, как 1D и 2D используется поле

Group3Options.

Compression=4

Факсимильно-совместимая схема сжатия CCITT Group 4, в

точности соответствующая документу "Facsimile Coding Schemes

and Coding Control Functions for Group 4 Facsimile Apparatus,

Recommendation T.6, Volume VII, Fascicle VII.3, Terminal

Equipment and Protocols for Telematic Services, The

International Telegraph and Telephone Consultative Committee

(CCITT), Geneva, 1985, pp. 40-48". Каждая полоса должна

начинаться с выравниванием на байт. Строки, которые не

являются первыми в полосе не обязательно начинаются с границы

байта. Данные запоминаются как байты, но не как слова.

перестановки байтов внутри слов не допускаются. Опции для

Group 4 определены в поле Group4Options.

——————————————————————————————————————————————————————————————————

Group3Options

Tag = 292 (124h)

Type = LONG

Length = 1

См. Compression=3. Это поле образовано 32 битами-флагами.

Неиспользуемые биты должны быть нулевыми. Бит с номером 0 является

.

- 30 -

младшим. Наверное, не имеет смысла пытаться читать файл, если один

из этих битов имеет единичное значение, но вы не знаете, что он

означает.

Бит 0 равен 1 для двумерного кодирования (в противном случае

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

задано более одной полосы, каждая полоса должна начинаться с

одномерной схемы. Т.е. RowsPerStrip должен быть умножен на

"Parameter K", как это указано в документации CCITT.

Бит 1 равен 1, если используется режим без компрессии.

Бит 2 равен 1, если перед кодом EOL добавляются биты-заполнители,

чтобы EOL всегда заканчивался на границе байта. Это

обеспечивает, что EOL-последовательность всегда заканчивается

единичным байтом, которому предшествуют по крайней мере два

нулевых: xxxx-0000-0000-0001.

По умолчанию равен 0 для базового одномерного кодирования.

См. также Compression.

——————————————————————————————————————————————————————————————————

Group4Options

Tag = 293 (125h)

Type = LONG

Length = 1

См. Compression=4. Это поле образовано 32 битами-флагами.

Неиспользуемые биты должны быть нулевыми. Бит с номером 0 является

младшим. Наверное, не имеет смысла пытаться читать файл, если один

из этих битов имеет единичное значение, но вы не знаете, что он

означает. В настоящее время изучаются схемы кодирования для серых

и цветных изображений. Они будут добавлены, когда это изучение

закончится.

При двумерной схеме кодирования каждая полоса кодируется так, как

если бы она была отдельным изображением. В частности, каждая

полоса начинается с границы байта и кодирование для первой строки

полосы проводится независимо от предыдущих строк с использованием

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

пустой). Каждая полоса заканчивается 24-битным блока конца

факсимильного сообщения (end-of-facsimile block - EOFB).

Бит 0 не используется.

Бит 1 равен 1, если используется режим без компрессии.

По умолчанию равно 0, для двумерной двоичной компрессии.

См. также Compression.

——————————————————————————————————————————————————————————————————

.

- 31 -

Поля запоминания и восстановления документов

Эти поля могут полезны для запоминания и восстановления

документов. Не рекомендуется их использование для обмена с

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

DocumentName

Tag = 269 (10Dh)

Type = ASCII

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

Нет умолчаний.

См. также PageName.

——————————————————————————————————————————————————————————————————

PageName

Tag = 285 (11Dh)

Type = ASCII

Название страницы, с которой было просканировано изображение.

См. также DocumentName.

Нет умолчаний.

——————————————————————————————————————————————————————————————————

PageNumber

Tag = 297 (129h)

Type = SHORT

Length = 2

Этот тег используется для указания номера страницы для

многостраничных (в том числе факсимильных) документов. Задаются

два значения типа SHORT. Первое значение является номером

страницы; второе - номером страницы в документе.

Отметим, что страницы не обязательно должны следовать в порядке их

номеров. Номер первой страницы равен 0.

Нет умолчаний.

——————————————————————————————————————————————————————————————————

XPosition

Tag = 286 (11Eh)

Type = RATIONAL

X-смещение левого края изображения относительно левого края

страницы, заданное в единицах, определяемых тегом ResolutionUnits.

Нет умолчаний. См. также YPosition.

——————————————————————————————————————————————————————————————————

.

- 32 -

YPosition

Tag = 287 (11Fh)

Type = RATIONAL

Y-смещение верхнего края изображения относительно верхнего края

страницы, заданное в единицах, определяемых тегом ResolutionUnits.

В координатной схеме TIFF положительным направлением для Y

считается направление вниз, поэтому YPosition всегда положительно.

Нет умолчаний. См. также XPosition.

——————————————————————————————————————————————————————————————————

Поля, не рекомендуемые для дальнейшего использования

Эти поля не рекомендуются в дальнейшем, за исключением, может

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

изображениями. Они либо были заменены другими полями, либо в них

были обнаружены существенные недостатки, либо они бесполезны сами

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

CellLength

Tag = 265 (109h)

Type = SHORT

Length = 1

Длина в одно битных компонентах матрицы для полутонирования или

дифферинга. Считается, что Threshholding = 2.

Это поле, а также поля CellWidth и Threshholding, находятся под

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

создания изображений в серых тонах из черно-белых изображений,

полученных методами дифферинга или полутонирования (в этом состоит

их единственное правдоподобное назначение). Единственный

корректный способ выполнения такой операции состоит не в обработке

этих полей, а написании удовлетворительных программ, которые

способны оперировать с экранными углами, не кратными 45 градусам и

разрешать другие проблемы, возникающие при полутонировании.

Поэтому мы не рекомендуем пытаться конвертировать изображения,

созданные с помощью полутонирования и дифферинга, в серые

изображения. Дифферинг и полутонирование требуют аккуратного

обращения, которое позволяло бы избегать появления "протяженных

раковин", но они могут возникать. Если вы хотите получить серое

изображение возьмите его непосредственно со сканера или другого

аналогичного устройства.

Нет умолчаний. См. также Threshholding.

——————————————————————————————————————————————————————————————————

.

- 33 -

CellWidth

Tag = 264 (108h)

Type = SHORT

Length = 1

Ширина в одно битных компонентах матрицы полутонирования/

дифферинга.

Нет умолчаний.

См. также Threshholding и комментарий для тега CellLength.

——————————————————————————————————————————————————————————————————

FillOrder

Tag = 266 (10Ah)

Type = SHORT

Length = 1

Порядок значений данных внутри байта (1 или 2).

FillOrder=1

Старшие биты располагаются в байтах первыми. Т.е. значения

данных (или кодовых слов) упорядочены от битов старших

порядков к битам младших порядков внутри байта.

FillOrder=2

Младшие биты располагаются в байте первыми. Поскольку такой

порядок битов представляет ограниченный интерес, и поскольку

для программ чтения этот порядок несложно инвертировать

(используя таблицу перекодировки из 256 байтов), мы

рекомендуем использовать FillOrder=2 только для частных

целей, не связанных с обменом информацией.

По умолчанию FillOrder = 1.

——————————————————————————————————————————————————————————————————

FreeByteCounts

Tag = 289 (121h)

Type = LONG

Для каждого свободного блока в файле число байтов в этом блоке.

Программы чтения TIFF-файлов могут игнорировать теги FreeOffsets и

FreeByteCounts, если таковые присутствуют.

Теги FreeOffsets и FreeByteCounts не переопределяют логическое

адресное пространство внутри файла.

.

- 34 -

Поскольку эта информация может быть извлечена путем просмотра

директорий и тегов StripOffsets и StripByteCounts, то в тегах

FreeByteCounts и FreeOffsets нет необходимости. Кроме того,

неясно, что делать, если эти теги присутствуют в нескольких

директориях.

См. также FreeOffsets.

——————————————————————————————————————————————————————————————————

FreeOffsets

Tag = 288 (120h)

Type = LONG

Для каждого свободного блока файла его байтовое смещение.

См. также FreeByteCounts.

——————————————————————————————————————————————————————————————————

MaxSampleValue

Tag = 281 (119h)

Type = SHORT

Length = SamplesPerPixel

Максимальное используемое значение компоненты пикселов. Например,

если изображение состоит из 6-битовых данных, выровненных в

младших битах 8-битовых байтов, то значение MaxSampleValue не

может быть больше 63. Это поле никак не влияет на визуальные

характеристики изображения и не оказывает влияния на интерпретацию

других полей. Используется только для статистических целей.

По умолчанию равно 2**(BitsPerSample) - 1.

——————————————————————————————————————————————————————————————————

MinSampleValue

Tag = 280 (118h)

Type = SHORT

Length = SamplesPerPixel

Минимальное используемое значение компонент пикселов. Это поле

никак не влияет на визуальные характеристики изображения. См.

комментарий к тегу MaxSampleValue.

По умолчанию равно 0.

——————————————————————————————————————————————————————————————————

SubfileType

Tag = 255 (FFh)

Type = SHORT

Length = 1

Общее указание на то, какой тип данных содержится в данном

суб-файле. В настоящее время определены следующие значения:

.

- 35 -

SubfileType=1

Изображение с полным разрешением. Поля ImageWidth,

ImageLength и StripOffsets являются обязательными.

SubfileType=2

Изображение с уменьшенным разрешением. Поля ImageWidth,

ImageLength и StripOffsets обязательны. Далее предполагается,

что это изображение является версией другого изображения,

находящегося в этом же файле, но с уменьшенным разрешением.

SubfileType=3

Отдельная страница многостраничного изображения (см.

описание тега PageNumber).

Отметим, что в одном TIFF-файле может находиться несколько

изображений, причем каждое из них описывается собственной IFD.

Нет умолчаний.

Дальнейшее использование этого поля не рекомендуется. Программы

записи должны использовать вместо него более общее поле

NewSubfileType.

——————————————————————————————————————————————————————————————————

Orientation

Tag = 274 (112h)

Type = SHORT

Length = 1

Значение тега определяет ориентацию изображения на экране.

Возможны следующие значения:

Orientation=1

При высвечивании нулевая строка соответствует верхнему краю

изображения и нулевая колонка - левой его стороне.

Orientation=2

При высвечивании нулевая строка соответствует верхнему краю

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

Orientation=3

При высвечивании нулевая строка соответствует нижнему краю

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

Orientation=4

При высвечивании нулевая строка соответствует нижнему краю

изображения и нулевая колонка - левой его стороне.

Orientation=5

При высвечивании нулевая строка соответствует левой стороне

изображения и нулевая колонка - верхнему его краю.

.

- 36 -

Orientation=6

При высвечивании нулевая строка соответствует правой стороне

изображения и нулевая колонка - верхнему его краю.

Orientation=7

При высвечивании нулевая строка соответствует правой стороне

изображения и нулевая колонка - нижнему его краю.

Orientation=8

При высвечивании нулевая строка соответствует левой стороне

изображения и нулевая колонка - нижнему его краю.

По умолчанию равно 1.

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

с обменом информацией. Для большинства программ чтения слишком

накладно выполнять вращение изображения "на лету", т.е. при печати

и передаче. Кроме того, пользователи большинства настольных

издательств не ожидают, что переданный им файл должен непрерывно

изменяться подобным образом.

——————————————————————————————————————————————————————————————————

Threshholding

Tag = 263 (107h)

Type = SHORT

Length = 1

Значение тега определяет тип двухуровнего изображения. Возможны

следующие значения:

Threshholding=1

Двухуровневое изображение со сплошными линиями.

BitsPerSample должен быть равен 1.

Threshholding=2

Изображение, полученное с помощью дифферинга из изображения с

непрерывными тонами (типа фотографии). BitsPerSample должен

быть равен 1.

Threshholding=3

То же, что 2, но получено путем рассеивания ошибки (Error

Diffused).

По умолчанию Threshholding=1. См. также CellWidth, CellLength.

.

- 37 -

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]