Основные тэги формата tiff: Основные тэги формата TIFF | это… Что такое Основные тэги формата TIFF?

Основные тэги формата TIFF | это… Что такое Основные тэги формата TIFF?

TIFF (англ. Tagged Image File Format) — формат хранения растровых графических изображений. Изначально был разработан компанией Microsoft, для использования с NeXTStep, и из неё поддержка этого формата перешла в Mac OS X. Владелец спецификаций Adobe, владеющей в настоящее время авторским правом на эти спецификации.[уточнить]

Файлы формата TIFF, как правило, имеют расширение .tiff или .tif.

Содержание

  • 1 Поддерживаемые форматы хранения данных
  • 2 Сжатие
  • 3 Теги формата TIFF
    • 3.1 Основные теги
    • 3.2 Расширенные теги
    • 3.3 Специальные теги формата TIFF

Поддерживаемые форматы хранения данных

Формат является весьма гибким. Позволяет сохранять изображения в режиме цветов с палитрой, а также в различных цветовых пространствах:

  • Черно-белого битового
  • Полутоновом
  • С индексированой палитрой
  • CMYK
  • YCbCr
  • CIE Lab

Поддерживаются режимы 8, 16, 32 и 64 бит на канал при целочисленном, а также 32 и 64 бит на канал при представлении цвета числом с плавающей запятой.

Сжатие

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

  • PackBits (RLE)
  • Lempel-Ziv-Welch (LZW)
  • ZIP
  • JPEG

При этом JPEG является просто инкапсуляцией формата JPEG в формат TIFF. Формат TIFF позволяет хранить изображения, сжатые по стандарту JPEG, без потерь данных.

Алгоритмы CCITT Group 3 и 4 (иногда называют Fax 3, Fax 4) предназначены для кодирования бинарных растровых изображений. Первоначально они были разработаны для сетей факсимильной связи. В настоящий момент также используются в полиграфии, системах цифровой картографии и географических информационных системах. Алгоритм Group 3 напоминает RLE, т. к. кодирует линейные последовательности пикселов, а Group 4 — двумерные поля пикселов.

Теги формата TIFF

Так как TIFF является теговым форматом, то нужно сказать, что различают следущие виды тегов:

Основные теги

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

КодHexИмяОписание
2540x00FENewSubfileTypeТип данных, хранящихся в этом файле. Этот тег является заменой тегу SubfileType, и является очень полезным, когда в одном TIFF файле хранится несколько изображений.
2550x00FFSubfileTypeТип данных, хранящихся в этом файле (старый).
2560x0100ImageWidthКоличество колонок в изображении.
2570x0101ImageLengthКоличество строк в изображении.
2580x0102BitsPerSampleКоличество бит в компоненте. Этот тег предполагает различное число битов в каждом компоненте (хотя в большинстве случаев оно одинаковое). Например, для RGB может быть 8 для всех компонентов — красного, зеленого и голубого, или 8,8,8 для каждого из компонентов.
2590x0103CompressionИспользуемый вид компресии.
2620x0106PhotometricInterpretationИспользуемая цветовая модель.
2630x0107ThreshholdingВид преобразования серого в черное и белое для черно-белых изображений.
2640x0108CellWidthКоличество колонок в матрице преобразования из серого в черное и белое.
2650x0109CellWidthКоличество строк в матрице преобразования из серого в черное и белое.
2660x010AFillOrderЛогический порядок битов в байте.
2700x010EImageDescriptionОписание изображения.
2710x010FMakeПроизводитель изображения.
2720x0110ModelМодель или серийный номер.
2730x0111StripOffsetsСмещение для каждой полосы изображения в байтах.
2740x0112OrientationОриентация изображения.
2770x0115SamplesPerPixelКоличество компонентов на пиксель.
2780x0116RowsPerStripКоличество строк на полосу.
2790x0117StripByteCountsКоличество байт на полосу после компресии.
2800x0118MinSampleValueМинимальное значение, используемое компонентом.
2810x0119MaxSampleValueМаксимальное значение, используемое компонентом.
2820x011AXResolutionКоличество пикселей в ResolutionUnit строки.
2830x011BYResolutionКоличество пикселей в ResolutionUnit столбца.
2840x011CPlanarConfigurationМетод хранения компонентов каждого пикселя.
2880x0120FreeOffsetsСмещение в байтах к строке неиспользуемых байтов.
2890x0121FreeByteCountsКоличество байтов в строке неиспользуемых байтов.
2900x0122GrayResponseUnitРазрешение данных, хранящихся в GrayResponseCurve.
2910x0123GrayResponseCurveВеличина плотности серого.
2960x0128ResolutionUnitРазрешение данных, хранящихся в XResolution, YResolution.
3050x0141SoftwareИмя и версия программного продукта.
3060x0142DateTimeДата и время создания изображения.
3160x013BArtistИмя создателя изображения.
3150x013СHostComputerКомпьютер и операционная система, использованные при создании изображения.
3200x0140ColorMapЦветовая таблица для изображений, использующих палитру цветов.
3380x0152ExtraSamplesОписание дополнительных компонентов.
334320x8298CopyrightИмя владельца прав на хранимое изображение.

Расширенные теги

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

Специальные теги формата TIFF

Специальные теги TIFF формата изначально были определены фирмой Adobe. Они предназначены для хранения в TIFF формате специальных типов данных производителей программного обеспечения, и должны быть зарегистрированы фирмой Adobe.

Основные тэги формата TIFF | это… Что такое Основные тэги формата TIFF?

TIFF (англ. Tagged Image File Format) — формат хранения растровых графических изображений. Изначально был разработан компанией Microsoft, для использования с NeXTStep, и из неё поддержка этого формата перешла в Mac OS X. Владелец спецификаций Adobe, владеющей в настоящее время авторским правом на эти спецификации.[уточнить]

Файлы формата TIFF, как правило, имеют расширение .tiff или .tif.

Содержание

  • 1 Поддерживаемые форматы хранения данных
  • 2 Сжатие
  • 3 Теги формата TIFF
    • 3.1 Основные теги
    • 3.2 Расширенные теги
    • 3.3 Специальные теги формата TIFF

Поддерживаемые форматы хранения данных

Формат является весьма гибким. Позволяет сохранять изображения в режиме цветов с палитрой, а также в различных цветовых пространствах:

  • Черно-белого битового
  • Полутоновом
  • С индексированой палитрой
  • CMYK
  • YCbCr
  • CIE Lab

Поддерживаются режимы 8, 16, 32 и 64 бит на канал при целочисленном, а также 32 и 64 бит на канал при представлении цвета числом с плавающей запятой.

Сжатие

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

  • PackBits (RLE)
  • Lempel-Ziv-Welch (LZW)
  • ZIP
  • JPEG

При этом JPEG является просто инкапсуляцией формата JPEG в формат TIFF. Формат TIFF позволяет хранить изображения, сжатые по стандарту JPEG, без потерь данных.

Алгоритмы CCITT Group 3 и 4 (иногда называют Fax 3, Fax 4) предназначены для кодирования бинарных растровых изображений. Первоначально они были разработаны для сетей факсимильной связи. В настоящий момент также используются в полиграфии, системах цифровой картографии и географических информационных системах. Алгоритм Group 3 напоминает RLE, т. к. кодирует линейные последовательности пикселов, а Group 4 — двумерные поля пикселов.

Теги формата TIFF

Так как TIFF является теговым форматом, то нужно сказать, что различают следущие виды тегов:

Основные теги

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

КодHexИмяОписание
254
0x00FE
NewSubfileTypeТип данных, хранящихся в этом файле. Этот тег является заменой тегу SubfileType, и является очень полезным, когда в одном TIFF файле хранится несколько изображений.
2550x00FFSubfileTypeТип данных, хранящихся в этом файле (старый).
2560x0100ImageWidthКоличество колонок в изображении.
2570x0101ImageLengthКоличество строк в изображении.
2580x0102BitsPerSampleКоличество бит в компоненте. Этот тег предполагает различное число битов в каждом компоненте (хотя в большинстве случаев оно одинаковое). Например, для RGB может быть 8 для всех компонентов — красного, зеленого и голубого, или 8,8,8 для каждого из компонентов.
2590x0103CompressionИспользуемый вид компресии.
2620x0106PhotometricInterpretationИспользуемая цветовая модель.
2630x0107ThreshholdingВид преобразования серого в черное и белое для черно-белых изображений.
2640x0108CellWidthКоличество колонок в матрице преобразования из серого в черное и белое.
2650x0109CellWidthКоличество строк в матрице преобразования из серого в черное и белое.
2660x010AFillOrderЛогический порядок битов в байте.
2700x010EImageDescriptionОписание изображения.
2710x010FMakeПроизводитель изображения.
2720x0110ModelМодель или серийный номер.
2730x0111StripOffsetsСмещение для каждой полосы изображения в байтах.
2740x0112OrientationОриентация изображения.
2770x0115SamplesPerPixelКоличество компонентов на пиксель.
2780x0116RowsPerStripКоличество строк на полосу.
2790x0117StripByteCountsКоличество байт на полосу после компресии.
2800x0118MinSampleValueМинимальное значение, используемое компонентом.
2810x0119MaxSampleValueМаксимальное значение, используемое компонентом.
2820x011AXResolutionКоличество пикселей в ResolutionUnit строки.
2830x011BYResolutionКоличество пикселей в ResolutionUnit столбца.
2840x011CPlanarConfigurationМетод хранения компонентов каждого пикселя.
2880x0120FreeOffsetsСмещение в байтах к строке неиспользуемых байтов.
2890x0121FreeByteCountsКоличество байтов в строке неиспользуемых байтов.
2900x0122GrayResponseUnitРазрешение данных, хранящихся в GrayResponseCurve.
2910x0123GrayResponseCurveВеличина плотности серого.
2960x0128ResolutionUnitРазрешение данных, хранящихся в XResolution, YResolution.
3050x0141SoftwareИмя и версия программного продукта.
3060x0142DateTimeДата и время создания изображения.
3160x013BArtistИмя создателя изображения.
3150x013СHostComputerКомпьютер и операционная система, использованные при создании изображения.
3200x0140ColorMapЦветовая таблица для изображений, использующих палитру цветов.
3380x0152ExtraSamplesОписание дополнительных компонентов.
334320x8298CopyrightИмя владельца прав на хранимое изображение.

Расширенные теги

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

Специальные теги формата TIFF

Специальные теги TIFF формата изначально были определены фирмой Adobe. Они предназначены для хранения в TIFF формате специальных типов данных производителей программного обеспечения, и должны быть зарегистрированы фирмой Adobe.

Базовые теги TIFF

Базовые теги TIFF — это те теги, которые перечислены как часть ядра TIFF, основы, которые все основные разработчики TIFF должны поддерживать в своих продуктах, согласно TIFF. Спецификация.

Код Наименование Краткое описание
Декабрь Hex
254 00FE NewSubfileType Общее указание на тип данных, содержащихся в этом подфайле.
255 00FF Тип подфайла Общее указание на тип данных, содержащихся в этом подфайле.
256 0100 ImageWidth Количество столбцов в изображении, т. е. количество пикселей в строке.
257 0101 ImageLength Количество строк пикселей в изображении.
258 0102 BitsPerSample Количество битов на компонент.
259 0103 Сжатие Схема сжатия данных изображения.
262 0106 Фотометрическая интерпретация Цветовое пространство данных изображения.
263 0107 Порог Для черно-белых файлов TIFF, представляющих оттенки серого, метод, используемый для преобразования серых пикселей в черно-белые.
264 0108 Ширина ячейки Ширина матрицы дизеринга или полутонового изображения, используемой для создания двухуровневого файла с дизерингом или полутоновым изображением.
265 0109 длина ячейки Длина матрицы дизеринга или полутонового изображения, используемой для создания двухуровневого файла с дизерингом или полутоновым изображением.
266 010A FillOrder Логический порядок битов в байте.
270 010E ImageDescription Строка, описывающая тему изображения.
271 010F Марка Производитель сканера.
272 0110 Модель Название или номер модели сканера.
273 0111 StripOffsets Для каждой полосы смещение в байтах этой полосы.
274 0112 Ориентация Ориентация изображения относительно строк и столбцов.
277 0115 SamplesPerPixel Количество компонентов на пиксель.
278 0116 RowsPerStrip Количество строк в полосе.
279 0117 StripByteCounts Для каждой полосы количество байтов в полосе после сжатия.
280 0118 MinSampleValue Минимальное используемое значение компонента.
281 0119 MaxSampleValue Максимальное используемое значение компонента.
282 011A XResolution Количество пикселей на единицу разрешения в направлении ширины изображения.
283 011B YResolution Количество пикселей на ResolutionUnit в направлении ImageLength.
284 011C PlanarConfiguration Как хранятся компоненты каждого пикселя.
288 0120 FreeOffsets Для каждой строки смежных неиспользуемых байтов в файле TIFF смещение строки в байтах.
289 0121 FreeByteCounts Для каждой строки смежных неиспользуемых байтов в файле TIFF количество байтов в строке.
290 0122 GrayResponseUnit Точность информации, содержащейся в GrayResponseCurve.
291 0123 GrayResponseCurve Для данных в градациях серого — оптическая плотность каждого возможного значения пикселя.
296 0128 ResolutionUnit Единица измерения XResolution и YResolution.
305 0131 Программное обеспечение Название и номер версии пакета(ов) программного обеспечения, использованного для создания образа.
306 0132 DateTime Дата и время создания образа.
315 013B Художник Человек, создавший изображение.
316 013C HostComputer Компьютер и/или операционная система, которые использовались во время создания образа.
320 0140 ColorMap Цветовая карта для изображений палитры цветов.
338 0152 ExtraSamples Описание дополнительных компонентов.
33432 8298 Авторские права Уведомление об авторских правах.

Чтение тегов Tiff 🏷

В настоящее время я добавляю несколько других форматов в Areo, мой инструмент «берет двоичные данные высот и превращает их в экспортируемую 3D-сетку», одним из которых является Geotiff. Вместо того, чтобы просто понять, как читать формат (бу, скучно, бух), я подумал, что попробую создать инструмент в браузере для чтения локальных файлов tiff, показа 2D-превью с пользовательским цветовым сопоставлением и создания загружаемой 3D-сетки. предварительные просмотры, если применимо (ура, 3D-вещи, ура!) Я также подумал, что вкратце напишу все это по ходу дела. 👋

  • Эта статья Патрика Армстронга очень быстро помогла мне понять, как именно форматируется информация заголовка в файле .tiff. Патрик также занимается такими вещами, как сжатие, которым я обязательно займусь в будущем.
  • Хотите узнать, что это за случайный идентификатор тега TIFF? Хотите знать все возможные значения в его перечислении? Что ж, Джорис Ван Дамм из Aware Systems поможет вам! Этот сайт в основном представляет собой библию тегов TIFF. Было безумно полезно.
  • Как и Maptools.org! Многие моих поисков в Google вернули меня к фантастически подобранной информации на этом сайте.
  • PDF Tiff Summary Пола Бурка также был SUPER полезен для разъяснения различных типов данных, используемых в этом формате.
  • Наконец, я наткнулся на фантастический инструмент Эмили Селвуд Tiff Hax, когда я углублялся в чтение IFD, и хотя я еще не вникал в Go, это было фантастически полезное средство проверки работоспособности, когда дело дошло до тестирования моего собственного кода. !

Порядок байтов и очень волшебное число

В начале каждый файл .tiff содержит 8 байтов данных. Что-то вроде:

  4D4D002A 00000008  

Первые 2 байта будут либо 4D (т.е. 77 как UInt8), либо 49 (т.е. 73 как UInt8). Если это 4D (77) , то порядок байтов в файле — BigEndian, если это 49 (73) , то порядок байтов — LittleEndian. Таким образом, приведенный выше пример является BigEndian.

3-й или 4-й байт (в зависимости от вновь найденного порядка байтов) является магическим числом. Короче говоря, если это не 42 , то этот не является TIFF-файлом. Время вернуться/сбросить ошибку/уйти и пообедать.

Последние 4 байта, преобразованные в тип long (т. е. 4 байта, 32-битное целое число без знака), дают нам смещение относительно того места, где начинается первый основной раздел информации заголовка. Что приводит меня к…

IFD, подфайлы, группы изображений…

Один файл tiff может содержать несколько разных (но чаще всего, по крайней мере, косвенно связанных) изображений внутри себя. Эти подфайлы могут быть невероятно полезны для хранения прокси-файлов основного изображения с более низким разрешением, данных маски, информации о наложении — практически всего, что вы хотите связать с данными основного изображения.

Каждый из этих подфайлов описывается каталогом файлов изображений (IFD) — разделом информации заголовка, содержащим все метаданные, связанные с этим подфайлом. В теории. На практике некоторые теги в первом IFD обычно имеют отношение к одному или нескольким последующим IFD, и по мере углубления вы можете найти другие совершенно отдельные IFD, содержащие 9 тегов.0387 еще более метаданных, относящихся к первому IFD. Размолвки не что иное, как не гибкие.

Если мы следуем 8-байтовому смещению, которое мы нашли выше, мы окажемся в начале нашего первого IFD, который начинается с этих двух байтов:

  0010  

Это наш счетчик полей IFD, который после преобразования в UInt8 говорит нам, что теперь нам нужно найти и проанализировать 16 полей.

Поля. О, так много полей…

Поля IFD всегда имеют длину 12 байт, поэтому давайте возьмем следующие 12 байт и начнем синтаксический анализ:

  01000003 00000001 0C8

Первые 2 байта дают нам идентификатор тега TIFF. Преобразование 0100 в короткое (также известное как 16-разрядное целое число без знака) дает нам значение 256. Один поиск в справочнике тегов AwareSystems Tiff позже и:

Раздел сведений для тега ImageWidth, который можно найти в справочнике тегов AwareSystems Tiff.

Мы нашли тег ImageWidth ! Давайте двигаться дальше и попробуем получить саму ширину.

3-й и 4-й байты дают нам тип данных этого тега. Превращаем в короткую, наша 0003 дает значение 3, что означает, что ширина изображения также будет короткой.

Следующие 4 байта дают нам количество значений для текущего поля в виде 32-битного целого числа без знака. В нашем случае выше 00000001 говорит нам, что (логически) ImageWidth имеет только одно значение.

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

Чтобы определить, представляют ли последние байты смещение, мы можем выполнить простой расчет:

  (количество значений) * (количество байтов на значение) > (количество оставшихся байтов)  

Мы знаем, что мы только осталось 4 байта от наших исходных 12 байтов данных поля, мы уже вычислили количество значений и знаем, что тип данных короткий (т. е. 2 байта на значение). Таким образом, в случае нашего поля ImageWidth этот расчет становится следующим:

  isOffset = (1 * 2) > 4  

Это оценивается как false в нашем случае ImageWidth , что означает, что последние 4 байта представляют фактическое значение поля. Эти байты равны 0C8

, и теперь мы можем преобразовать их в значение 3209 . Мы нашли ширину нашего tiff-файла!

Если бы isOffset разрешилось в true , нам пришлось бы выполнить последующий поиск в файле tiff, используя значение последних 4 байтов в качестве нашего смещения, и (количество значений) * (количество байтов на значение) как наш счетчик байтов.

Следующий IFD…

Через 16 полей по 12 байт есть еще 8 полезных байтов, которые составляют текущий IFD. Преобразованные в длинные, эти байты дают вам смещение в байтах до следующего IFD, содержащегося в файле tiff.

Если это байтовое смещение > 0, вам нужно будет зациклиться и повторить анализ всего поля в этом новом IFD. Если это последний IFD в файле, смещение в байтах будет равно 0, и теперь вы можете относительно спокойно прекратить обработку IFD. Ура!

Так заканчивается первая довольно сухая статья о Жеоде! Весело, а? 😬 Я надеюсь, что вышеизложенное может оказаться полезным для тех, кто думает о попытке сделать что-то подобное.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *