Автор работы: Пользователь скрыл имя, 14 Февраля 2013 в 15:32, курсовая работа
Впрочем, думается, большинство полиграфистов не пользуется этой возможностью, поскольку она увеличивает время печати. TIFF означает – теговый формат графических файлов. TIFF был создан в 1986 году группой компаний. Среди них были: Aldus, Datacopy, DEST Corporation, Hewlett Packard, Microsoft, Microtek International и New Image Technology. У этого формата относительно короткая история, которая включает шесть новых версий. TIFF был создан для того, чтобы представить жизнеспособный метод передачи данных между сканерами и компьютерными программами. С самого начала TIFF был разработан для полиграфической индустрии. TIFF – один из самых гибких форматов пиксельных файлов.
Введение3
1. Структура5
1.1. Заголовок файла (Image File Header - IFD)5
1.2. Директории файла (Image File Directory)6
2. Определения8
3. Поля9
3.1. Базовые поля9
3.2. Информационные поля17
3.3. Факсимильные поля18
3.4. Поля запоминания и восстановления документов20
3.5. Поля, не рекомендуемые для дальнейшего использования20
4. Частные поля25
5. Обзор форматов файлов для изображений26
6. Дополнительная информация27
Заключение28
Список используемой литературы29
Если число бит в компоненте не является степенью 2, и вы готовы пожертвовать некоторым пространством для достижения более высокого быстродействия, вы можете использовать ближайшее значение, являющееся степенью 2. Например, если ваши данные описываются 6 битами, вы, возможно, захотите указать, что они содержат 8 бит.
Строки должны начинаться с выравниванием
на байт. Следовательно, число байт на
строку должно равняться (ImageWidth*SamplesPerPixel*
В некоторых графических системах требуется, чтобы строки были выровнены на границу слова или на границу двойного слова. Перед передачей строк несжатого TIFF'а в графические программы в такой среде, их следует скопировать в буферы, удовлетворяющие требованиям выравнивания.
Compression=2
Схема сжатия CCITT Group 3. Одно размерное кодирование длинных серий по модифицированной схеме Хаффмана.
Когда вы декодируете данные, которые были сжаты с Compression=2, вы должны транслировать белые серии в последовательность нулей, и черные - в последовательность единиц. Следовательно, стандартным значением PhotometricInterpretation для этого сжатия является 0 (WhiteIsZero). Если программа чтения встретит значение PhotometricInterpretation, равное 1 (BlackIsZero) для такого изображения, оно должно быть высвечено или напечатано с инвертированием черного и белого цветов.
Compression=5
LZW-сжатие для серых и цветных изображений.
Compression=32773
PackBits компрессия, простая схема сжатия с помощью длинных серий, ориентированная на 1-битовые изображения.
Сжатие данных оказывает влияние только на растровые данные, на которые имеется указатель в StripOffsets. Вся другая TIFF-информация остается неизменной.
GrayResponseCurve
Tag = 291 (123h)
Type = SHORT
Length = 2**BitsPerSample
Цель этого тега, а также тега GrayUnits состоит в том, чтобы обеспечить более точную фотометрическую интерпретацию серых изображений в терминах оптической плотности.
Тег GrayScaleResponseUnits указывает точность информации, содержащейся в теге GrayResponseCurve. Поскольку оптическая плотность определяется в терминах фракционных чисел (fractional numbers), этот тег необходим для правильной интерпретации запомненной целой информации. Например, если тег 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 в таких файлах.
Если в IFD существуют одновременно поля GrayResponseCurve и PhotometricInterpretation, то значение GrayResponseCurve замещает значение, определенное в PhotometricInterpretation. Однако, наличие и того и другого поля является неплохой идеей, поскольку некоторые прикладные программы не обращают внимания на GrayResponseCurve.
Авторы программ для записи TIFF-файлов могут купить Kodak Reflection Density Guide (номер каталога 146 5947), который стоит $10 или переписать данные из него. Это поможет формировать правильные кривые для передачи оптической плотности их сканера или другого устройства. Если это покажется вам слишком большой работой, мы рекомендуем кривую, которая линейна в пространстве интенсивность-отражательная способность. Для вычисления отражательной способности от плотности: 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
Tag = 290 (122h)
Type = SHORT
Length = 1
Значение тега позволяет определить в каких единицах оптическая плотность в теге GrayResponseCurve. Возможные значения GrayResponse Unit:
1 = Число представляет десятые доли единицы.
2 = Число представляет сотые доли единицы.
3 = Число представляет тысячные доли единицы.
4 = Число представляет
5 = Число представляет
Влияет на GrayResponseCurve.
ImageLength
Tag = 257 (101h)
Type = SHORT или LONG
Length = 1
Длина (высота) изображения в пикселах (Y: вертикаль). Число строк (иногда их называют как строки развертки) в изображении. См. также ImageWidth.
ImageWidth
Tag = 256 (100h)
Type = SHORT or LONG
Length = 1
Ширина изображения в пикселах (X: горизонталь). Число колонок в изображении.
NewSubfileType
Tag = 254 (FEh)
Type = LONG
Length = 1
Замещает старое поле SubfileType, снимая ограничения, определенные в этом поле.
Общее описание данных, содержащихся в этом суб-файле. Это поле образовано 32 битами-флагами. Предполагается, что неиспользуемые биты должны быть равны 0. Бит 0 является младшим.
В настоящее время определены следующие значения:
Бит 0 равен 1, если изображение является версией с пониженным разрешением другого изображения, имеющегося в этом же TIFF-файле. В противном случае бит равен 0.
Бит 1 равен 1, если изображение является отдельной страницей многостраничного изображения. В противном случае бит равен 0.
Бит 2 равен 1, если изображение определяет маску прозрачности для другого изображения в этом же TIFF-файле. Значение тега PhotometricInterpretation должно равняться 4 (это значение соответствует маске прозрачности).
Эти значения определены как битовые флаги, поскольку они в достаточной степени независимы один от другого. Например, полезно иметь 4 разных изображения в одном TIFF-файле: изображение с полным разрешением, изображение с пониженным разрешением, маску прозрачности для изображения с полным разрешением и маску прозрачности для изображения с пониженным разрешением. Каждое из этих четырех изображений будет иметь различное значение поля NewSubfileType.
PhotometricInterpretation
Tag = 262 (106h)
Type = SHORT
Length = 1
Тег определяет фотометрическую интерпретацию изображения и может принимать значения 0, 1, 2, 3 и 4.
PhotometricInterpretation=0
Для двухуровневых и серых
PhotometricInterpretation=1
Для двухуровневых и серых
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, то он должен применяться и к таблицам цветопередачи. Значение 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-данные запоминаются как красные компоненты в одной плоскости, зеленые компоненты в другой и синие - в третьей.
Если SamplesPerPixel равен 1, PlanarConfiguration не имеет значения и не должен включаться.
Predictor
Tag = 317 (13Dh)
Type = SHORT
Length = 1
Используется при Compression=5 (LZW).
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
Сантиметры.
RowsPerStrip
Tag = 278 (116h)
Type = SHORT или LONG
Length = 1
Число строк в полосе. Данные изображения организуются в полосы, которые затем используются для быстрого доступа к нужной строке, если данные подвергались сжатию (хотя использование этого поля допустимо даже если данные не сжимались).
Теги RowsPerStrip и ImageLength сообщают вам число полос во всем изображении. Уравнение StripsPerImage = (ImageLength + RowsPerStrip - 1) / RowsPerStrip подразумевает использование целой арифметики.
Заметим, что для значения тега могут использоваться типы данных SHORT или LONG. Значение SHORT используется для небольших TIFF-файлов. Однако, следует заметить, что предыдущие описания TIFF-файлов требовали значения LONG и некоторые прикладные программы могут не ожидать появления значения типа SHORT.
По умолчанию равно 2**32-1, что на практике означает бесконечность, т.е. все изображение располагается в одной полосе. Однако, мы не рекомендуем использовать одну полосу. Выбирайте RowsPerStrip таким образом, чтобы каждая полоса занимала приблизительно 8К байтов, даже если данные не сжимаются, поскольку это упрощает буферизацию для программ чтения. Значение 8К является достаточно произвольным, но представляется вполне работоспособным.