Tiff

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

Описание

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

В большинстве случаев синтаксис функции объекта Tiff подобен синтаксису соответствующей библиотечной функции LibTIFF. Чтобы полностью понять возможности объекта Tiff, обратитесь к LibTIFF API и TIFFspecification и техническим примечаниям. Смотрите эту документацию в наборе библиотек и утилит 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);

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

ImageWidthСжатие
ImageLengthPlanarConfiguration
'BitsPerSample' Photometric
SamplesPerPixel 

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

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

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

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

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

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

Пример: setTag (t, 'Сжатие', Tiff. Сжатие. JPEG);

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

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

Если дополнительные каналы существуют в дополнение к обычным каналам colormetric, то тег 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. Несжатый);

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

Имя поляОписание
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, 'Ориентация', Tiff. Ориентация. TopLeft);

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

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

Пример: setTag (t, 'Светоизмерительный', Tiff. Светоизмерительный. Rgb ;

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

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

Пример: setTag (t, 'PlanarConfiguration', Tiff. PlanarConfiguration. Короткий);

Модули разрешения, чтобы интерпретировать значения, содержавшиеся в 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' . Медленно двиньтесь);

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

Имя поляОписание
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. Плавание);

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

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

Пример: setTag (t, 'Подтип файла', Tiff. SubFileType. Маска);

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

Имя поляЗначение
SubFileType254
ImageWidth256
ImageLength257
'BitsPerSample' 258
Сжатие259
Photometric262
Thresholding263
FillOrder266
......

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

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

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

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

Имя поля
BiLevel
HalfTone
ErrorDiffuse

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

Пример: setTag (t, 'Пороговая обработка', Tiff. Пороговая обработка. HalfTone);

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

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

Пример: setTag (t, 'YCbCrPositioning', Tiff. YCbCrPositioning. Центрируемый);

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

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

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

чтениеСчитайте целое изображение TIFF
readEncodedStripСчитайте данные из заданной полосы
readEncodedTileСчитайте данные из заданной мозаики
readRGBAImageСчитайте изображение с помощью интерфейса RGBA
readRGBAStripСчитайте данные полосы с помощью интерфейса RGBA
readRGBATileСчитайте данные мозаики с помощью интерфейса RGBA
близкоЗакрытие объекта Tiff
записьЗапишите целое изображение
writeEncodedStripЗапишите данные к заданной полосе
writeEncodedTileЗапишите данные к заданной мозаике
близкоЗакрытие объекта 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

Была ли эта тема полезной?