exponenta event banner

Размолвка

Процедуры шлюза MATLAB к библиотеке LibTIFF

Описание

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

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

Свойства

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

Файлы TIFF состоят из каталогов файлов изображений (IFD), которые содержат данные изображения и связанные теги. Теги содержат связанную с изображением информацию, такую как ширина изображения, высота изображения и количество образцов. Каждое свойство 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 всегда заканчивался на границе байта. Это гарантирует, что нулевая nibble предшествует последовательности 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Назначить единицы дюйма для значений, содержащихся в 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 могут содержать субIFD, которые также содержат данные изображения и метаданные. При открытии файла TIFF для чтения Tiff объект делает первый IFD в файле текущим IFD. Функции объекта Tiff работают на текущем ИФД.

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

readЧтение всего изображения TIFF
readEncodedStripСчитывание данных с указанной полосы
readEncodedTileСчитывание данных из указанной плитки
readRGBAImageЧтение образа с помощью интерфейса RGBA
readRGBAStripСчитывание данных полосы с помощью интерфейса RGBA
readRGBATileСчитывание данных плитки с помощью интерфейса RGBA
closeЗакрыть объект Tiff
writeЗапись всего изображения
writeEncodedStripЗапись данных в указанную полосу
writeEncodedTileЗапись данных в указанную плитку
closeЗакрыть объект Tiff
getTagЗначение указанного тега
setTagЗадать значение тега
Tiff.getTagNamesСписок распознанных тегов TIFF
currentDirectoryИндекс возврата текущего ИДС
lastDirectoryОпределить, является ли текущий IFD последним в файле
nextDirectoryСделать следующий ИФД текущим ИФД
setDirectoryСделать указанный ИФД текущим ИФД
setSubDirectoryСделать subIFD текущим IFD
rewriteDirectoryЗапись измененных метаданных в существующий файл IFD
writeDirectoryСоздать новый ИФД и сделать его текущим ИФД
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