Tiff

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

Описание

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

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

MATLAB® поддерживает версию 4.0.10 LibTIFF. Для получения информации об авторском праве о 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 в файле для записи последующих данных. Эта 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 интерфейс обеспечен readRGBAImagereadRGBAStrip, и 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Присвойте модульные дюймы для значений, содержавшихся в 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 возвращает 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