Tiff

Шлюз MATLAB к библиотечным подпрограммам LibTIFF

Описание

Объект Tiff представляет связь с файлом тегового формата графических файлов (TIFF) и обеспечивает доступ ко многим функциям библиотеки LibTIFF. Tiff предлагает больше возможностей, чем imread и функции imwrite, такие как чтение подызображений, запись мозаик и полос данных изображения и изменения отдельных тегов TIFF.

В большинстве случаев синтаксис функции объекта Tiff подобен синтаксису соответствующей библиотечной функции LibTIFF. Чтобы полностью понять возможности объекта Tiff, обратитесь к LibTIFF API и спецификации TIFF и техническим примечаниям. Смотрите эту документацию в наборе библиотек и утилит LibTIFF — TIFF.

MATLAB® поддерживает версию 4.0.0 LibTIFF. Дополнительные сведения о библиотеке LibTIFF см. в файле libtiffcopyright.txt.

Создание

Синтаксис

obj = Tiff(filename)
obj = Tiff(filename,mode)

Описание

пример

obj = Tiff(filename) создает объект Tiff для доступа для чтения к файлу TIFF filename.

пример

obj = Tiff(filename,mode) создает объект Tiff с типом доступа к файлу TIFF, заданному mode.

Входные параметры

развернуть все

Имя файла, заданного как вектор символов или скаляр строки.

Пример: 'myfile.tif'

Тип доступа к файлу, заданный как одно из этих значений.

ПараметрОписание
'r'Открытый файл для чтения (значения по умолчанию).
'w'Открытый файл для записи; отбросьте существующее содержимое.
'w8'Открытый файл для того, чтобы записать файл BigTIFF; отбросьте существующее содержимое.
'a'Откройте или создайте файл для записи; добавьте данные к концу файла.
'r+'Открытый (не создают), файл для чтения и записи.

Когда вы открываете файл TIFF для записи или добавления, объект Tiff автоматически создает IFD в файле для записи последующих данных. Эта IFD имеет все значения по умолчанию, заданные в Версии TIFF 6.0.

Свойства

развернуть все

Файлы TIFF состоят из директорий файла изображения (IFDs), которые содержат данные изображения и сопоставленные теги. Теги содержат сопутствующую информацию изображений, такую как ширина изображения, высота изображения и количество выборок. Каждое свойство TIFF является структурой, которая обеспечивает значения для тега. Установите значения тега с помощью функции setTag. Например, создайте файл и задайте сжатие JPEG.

t = Tiff('myfile.tif','w');
setTag(t,'Compression',Tiff.Compression.JPEG);

Когда вы создаете файл, прежде, чем записать данные к файлу, необходимо установить эти теги:

ImageWidthCompression
ImageLengthPlanarConfiguration
BitsPerSamplePhotometric
SamplesPerPixel 

В зависимости от размещения изображения необходимо установить эти дополнительные теги:

  • Разделенное размещение — Набор тег RowsPerStrip.

  • Мозаичное размещение — Набор TileWidth и теги TileHeight.

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

Имя поля
None
CCITTRLE (Read-only)
CCITTFax3
CCITTFax4
LZW
OJPEG
JPEG
AdobeDeflate
...

Чтобы видеть полный список значений что поддержки MATLAB тега Compression, введите Tiff.Compression в командном окне.

Пример: setTag(t,'Compression',Tiff.Compression.JPEG);

Дополнительное описание канала, сохраненное в структуре этими полями.

Имя поляОписание
UnspecifiedНезаданные данные
AssociatedAlphaСвязанная альфа (предварительно умножается)
UnassociatedAlphaНесвязанные альфа-данные

Если дополнительные каналы существуют в дополнение к обычным колориметрическим каналам, то тег ExtraSamples требуется. Для использования в качестве примера см. изображение TIFF Записи с Данными о Цветовом канале и Альфа-канале.

Пример: setTag(t,'ExtraSamples',Tiff.ExtraSamples.AssociatedAlpha)

Группа 3 Опции сжатия факса, сохраненные в структуре этими полями.

Имя поляОписание
Encoding2D

Бит 0 равняется 1.

Это значение задает двумерное кодирование. Если больше чем одна полоса задана, каждая полоса должна начаться с одномерно закодированной строки. Таким образом, RowsPerStrip должен быть кратным параметру K, как зарегистрировано в спецификацию CCITT.

Uncompressed

Бит 1 равняется 1.

Это значение задает несжатый режим при кодировании.

FillBits

Бит 2 равняется 1.

Добавьте биты заливки по мере необходимости перед кодами EOL, такими, что EOL всегда заканчивается на контуре байта. Это гарантирует, что нулевое откусывание предшествует последовательности EOL на 1 байт. Например, xxxx-0000 0000-0001.

Это свойство также упоминается как Fax3 или T4Options. Значение свойства является небольшой маской, которой управляют первые биты 3.

Пример: setTag(t,'Group3Options',Tiff.Group3Options.Uncompressed);

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

Имя поляОписание
CMYKПорядок компонентов: голубой, пурпурный, желтый, черный. Обычно, значение 0 представляет 0%-е покрытие чернил, и значение 255 представляет 100%-е покрытие чернил для того компонента, но консультируйтесь со спецификацией TIFF для DotRange. Когда вы зададите CMYK, не устанавливайте тег InkNames.
MultiInkЛюбое упорядоченное расположение кроме CMYK. Консультируйтесь со спецификацией TIFF для поля InkNames для описания используемых чернил.

В контексте этого свойства, разделенного, относится к светоизмерительной интерпретации (не плоская настройка).

Пример: setTag(t,'InkSet',Tiff.InkSet.CMYK);

Цветовой режим, сохраненный в структуре этими полями.

Имя поляОписание
Raw (значение по умолчанию)Сохраните вход как отдельный Y, Cb и матрицы Cr.
RGBПреобразуйте вход RGB в YCbCr.

Не используйте это свойство считать формирование изображений YCbCr как RGB. Вместо этого используйте интерфейс RGBA, обеспеченный readRGBAImage, readRGBAStrip и функциями readRGBATile.

Для примера смотрите, Создают изображение YCbCr/JPEG из данных о RGB.

Пример: setTag(t,'JPEGColorMode',Tiff.JPEGColorMode.RGB);

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

Имя поля
TopLeft
TopRight
BottomRight
BottomLeft
LeftTop
RightTop
RightBottom
LeftBottom

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

Пример: setTag(t,'Orientation',Tiff.Orientation.TopLeft);

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

Имя поля
MinIsWhite
MinIsBlack
RGB
Palette
Mask
Separated (CMYK)
YCbCr
CIELab
ICCLab
ITULab
LogL
LogLUV
CFA
LinearRaw

Пример: setTag(t,'Photometric',Tiff.Photometric.RGB);

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

Имя поляОписание
ChunkyСохраните значения компонента для каждого пикселя непрерывно. Например, в случае данных о RGB, сохраните первые три пикселя в файле как RGBRGBRGB. Почти все изображения TIFF имеют непрерывные плоские настройки.
SeparateСохраните значения компонента для каждого пикселя отдельно. Например, в случае данных о RGB, красный компонент хранится отдельно в файле от зеленых и синих компонентов.

Пример: setTag(t,'PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);

Модули разрешения, чтобы интерпретировать значения, содержавшиеся в XResolution и тегах YResolution, сохраненных в структуре этими полями.

Имя поляОписание
NoneЗначение по умолчанию.
InchПрисвойте модульные дюймы для значений, содержавшихся в тегах YResolution и XResolution.
CentimeterПрисвойте модульные сантиметры для значений, содержавшихся в тегах YResolution и XResolution.

Например, следующие кодовые наборы значение разрешения изображения в X и направлениях Y к пикселям на дюйм 300:

setTag(t,'ResolutionUnit',Tiff.ResolutionUnit.Inch);
setTag(t,'XResolution',300);
setTag(t,'YResolution',300);

Пример: setTag(t,'ResolutionUnit',Tiff.ResolutionUnit.Inch);

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

Имя поляОписание
UInt (значение по умолчанию)Данные беззнаковых целых чисел
IntДополнительные данные о целом числе со знаком Туо
IEEEFPДанные с плавающей запятой IEEE

MATLAB не поддерживает форматы Void, ComplexInt и ComplexIEEEFP.

Пример: setTag(t,'SampleFormat',Tiff.SampleFormat.IEEEFP);

Формат данных кодека SGIL, сохраненный в структуре этими полями.

Имя поляОписание
FloatВыборки одинарной точности.
Bits8Выборки uint8 (только для чтения).

Установка SGILogDataFmt к Float или Bits8 подразумевает значение SamplesPerPixel 3 для изображений LogLuv и значение 1 для изображений LogL.

Можно установить тег SGILogDataFmt только однажды на экземпляр для объекта изображения TIFF LogL/LogLuv.

Используйте следующий код, чтобы создать объект Tiff, установить формат данных SGIL, и затем считать данные изображения.

tiffobj = Tiff('example.tif','r');
setDirectory(tiffobj,3); % image three is a LogLuv image
setTag(tiffobj,'SGILogDataFmt',Tiff.SGILogDataFmt.Float);
imdata = read(tiffobj);

Пример: setTag(t,'SGILogDataFmt',Tiff.SGILogDataFmt.Float);

Тип изображения, сохраненного в структуре этими полями.

Имя поляОписание
DefaultЗначение по умолчанию для единого файла изображения или сначала отображает.
ReducedImageИзображение является одним изображением мультиизображения (или многостраничный) файл.
PageНесвязанные альфа-данные.
MaskИзображение является маской прозрачности для другого изображения в файле. Светоизмерительным значением интерпретации должен быть Photometric.Mask.

Пример: setTag(t,'SubFileType',Tiff.SubFileType.Mask);

Идентификаторы тега TIFF, которые MATLAB поддерживает, сохраненный в структуре этими полями.

Имя поляЗначение
SubFileType254
ImageWidth256
ImageLength257
BitsPerSample258
Compression259
Photometric262
Thresholding263
FillOrder266
......

Для полного списка имен тега и их соответствующих идентификаторов тега, введите Tiff.TagID в Командном окне.

Используйте это свойство задать тег, когда вы будете использовать функцию setTag. Например, Tiff.TagID.ImageWidth возвращает ID тега ImageWidth. Чтобы получить список всех поддерживаемых тегов, используйте функцию Tiff.getTagNames.

Пример: setTag(t,Tiff.TagID.ImageWidth,300);

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

Имя поля
BiLevel
HalfTone
ErrorDiffuse

Используйте этот тег, чтобы задать который алгоритм использовать при преобразовании пикселей от шкалы полутонов до черного цвета и белого цвета.

Пример: setTag(t,'Thresholding',Tiff.Thresholding.HalfTone);

Положение выборок цветности относительно выборок яркости, сохраненных в структуре этими полями.

Имя поляОписание
CenteredЗадайте для совместимости с промышленными стандартами, такими как PostScript® Level 2.
CositedЗадайте для совместимости с большинством стандартов цифрового видео, таких как Рекомендация 601-1 CCIR.

Пример: setTag(t,'YCbCrPositioning',Tiff.YCbCrPositioning.Centered);

Функции объекта

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

развернуть все

readСчитайте целое изображение TIFF
readEncodedStripСчитайте данные из заданной полосы
readEncodedTileСчитайте данные из заданной мозаики
readRGBAImageСчитайте изображение с помощью интерфейса RGBA
readRGBAStripСчитайте данные о полосе с помощью интерфейса RGBA
readRGBATileСчитайте данные о мозаике с помощью интерфейса RGBA
closeЗакрытие объекта Tiff
writeЗапишите целое изображение
writeEncodedStripЗапишите данные к заданной полосе
writeEncodedTileЗапишите данные к заданной мозаике
closeЗакрытие объекта Tiff
getTagЗначение заданного тега
setTagУстановите значение тега
Tiff.getTagNamesСписок распознанных тегов TIFF
currentDirectoryВозвратите индекс текущей IFD
lastDirectoryОпределите, является ли текущая IFD последней в файле
nextDirectoryСделайте следующую IFD текущей IFD
setDirectoryСделайте заданную IFD текущей IFD
setSubDirectoryСделайте subIFD текущей IFD
rewriteDirectoryЗапишите измененные метаданные в существующую IFD
writeDirectoryСоздайте новую IFD и сделайте ее текущей IFD
isTiledОпределите, размещается ли изображение рядом
computeTileИндекс мозаики, содержащей заданные координаты
numberOfTilesОбщее количество мозаик в изображении
computeStripИндекс полосы, содержащей заданную координату
numberOfStripsОбщее количество полос в изображении
getVersionВерсия библиотеки LibTIFF

Примеры

свернуть все

Создайте новый файл под названием myfile.tif. Чтобы запустить этот пример, у вас должен быть доступ для записи к папке.

t = Tiff('myfile.tif','w');

Закройте объект Tiff.

close(t);

Для набора данных с цветовыми каналами и альфа-каналами, набор теги Tiff и затем пишут данные в файл.

Создайте массив данных, data, который содержит цветовые каналы и альфа-канал.

rgb = imread('example.tif');
numrows = size(rgb,1);
numcols = size(rgb,2);
alpha = 255*ones([numrows numcols], 'uint8');
data = cat(3,rgb,alpha);

Создайте объект Tiff.

t = Tiff('myfile.tif','w');

Установите теги Tiff и задайте значение тега ExtraSamples, потому что данные содержат альфа-канал в дополнение к цветовым каналам.

setTag(t,'Photometric',Tiff.Photometric.RGB);
setTag(t,'Compression',Tiff.Compression.None);
setTag(t,'BitsPerSample',8);
setTag(t,'SamplesPerPixel',4);
setTag(t,'SampleFormat',Tiff.SampleFormat.UInt);
setTag(t,'ExtraSamples',Tiff.ExtraSamples.Unspecified);
setTag(t,'ImageLength',numrows);
setTag(t,'ImageWidth',numcols);
setTag(t,'TileLength',32);
setTag(t,'TileWidth',32);
setTag(t,'PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);

Запишите данные в файл TIFF и закройте объект Tiff.

write(t,data);
close(t);

Запишите данные изображения RGB в файл TIFF как изображение YCbCr/JPEG.

Получите данные о RGB.

rgb = imread('example.tif');

Создайте объект Tiff, t, и установите теги. Укажите, что входные данные являются RGB с помощью тега JPEGColorMode.

t = Tiff('myfile.tif','w');
setTag(t,'Photometric',Tiff.Photometric.YCbCr);
setTag(t,'Compression',Tiff.Compression.JPEG);
setTag(t,'YCbCrSubSampling',[2 2]);
setTag(t,'BitsPerSample',8);
setTag(t,'SamplesPerPixel',3);
setTag(t,'SampleFormat',Tiff.SampleFormat.UInt);
setTag(t,'ImageLength',size(rgb,1));
setTag(t,'ImageWidth',size(rgb,2));
setTag(t,'TileLength',32);
setTag(t,'TileWidth',32);
setTag(t,'PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);
setTag(t,'JPEGColorMode',Tiff.JPEGColorMode.RGB);
setTag(t,'JPEGQuality',75);

Запишите данные в файл TIFF и закройте объект Tiff.

write(t,rgb);
close(t);

Представленный в R2009b

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