Tiff

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

Описание

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

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

MATLAB® поддерживает LibTIFF версии 4.1.0. Для получения информации об авторских правах на LibTIFF библиотека, см. libtiffcopyright.txt файл.

Создание

Описание

пример

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

пример

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

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

расширить все

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

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

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

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

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

Свойства

расширить все

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

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

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

ImageWidthCompression
ImageLengthPlanarConfiguration
BitsPerSamplePhotometric
SamplesPerPixel 

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

  • Stripped layout - Установите 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 Image с цветом и данные альфа-канала.

Пример: 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

The 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, первые три пикселя в файле храните как RGBRGBRGGB. Почти все изображения TIFF имеют смежные плоские строения.
SeparateСохраните значения компонентов для каждого пикселя отдельно. Например, в случае данных RGB красный компонент хранится отдельно в файле от зеленого и синего компонентов.

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

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

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

Например, следующий код устанавливает значение разрешения изображения в 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Одинарные выборки точности.
Bits8uint8 выборки (только для чтения).

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

Можно задать SGILogDataFmt тег только один раз на образец для LogL/LogLuv Объект изображения TIFF.

Используйте следующий код для создания 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 возвращает идентификатор ImageWidth тег. Чтобы получить список всех поддерживаемых тегов, используйте Tiff.getTagNames функция.

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

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

Имя поля
BiLevel
HalfTone
ErrorDiffuse

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

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

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

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

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

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

Файл TIFF состоит из одних или нескольких директорий файлов изображений (IFD). IFD содержит данные изображения и связанные с ним метаданные. IFD могут содержать subIFD, которые также содержат данные и метаданные. Когда вы открываете файл TIFF для чтения, Tiff объект делает первый IFD в файле current IFD. Функции объекта 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