Процедуры шлюза 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 файл.
filename - Имя файлаИмя файла, указанное как вектор символа или скаляр строки.
Пример: 'myfile.tif'
mode - Тип доступа к файлу'r' (по умолчанию) | 'w' | 'w8' | 'a' | 'r+'Тип доступа к файлу, указанный как одно из этих значений.
| Параметр | Описание |
|---|---|
'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);
При создании файла перед записью данных в файл необходимо установить следующие теги:
ImageWidth | Compression |
ImageLength | PlanarConfiguration |
BitsPerSample | Photometric |
SamplesPerPixel |
В зависимости от макета изображения необходимо установить следующие дополнительные теги:
Снятая компоновка - установка RowsPerStrip тег.
Мозаичный макет - установка TileWidth и TileHeight теги.
Compression - Схема сжатия данных изображенияСхема сжатия данных изображения, сохраненных в структуре с этими полями.
| Имя поля |
|---|
None |
CCITTRLE (Read-only) |
CCITTFax3 |
CCITTFax4 |
LZW |
OJPEG |
JPEG |
AdobeDeflate |
... |
Для просмотра полного списка значений, поддерживаемых MATLAB Compression тег, тип Tiff.Compression в окне команд.
Пример: setTag(t,'Compression',Tiff.Compression.JPEG);
ExtraSamples - Описание дополнительного каналаДополнительное описание канала, хранящееся в структуре с этими полями.
| Имя поля | Описание |
|---|---|
Unspecified | Неуказанные данные |
AssociatedAlpha | Связанный альфа (предварительно размноженный) |
UnassociatedAlpha | Несвязанные альфа-данные |
Если в дополнение к обычным колориметрическим каналам существуют дополнительные каналы, то ExtraSamples требуется тег. Пример использования см. в разделе Запись изображения Tiff с данными о цвете и альфа-канале.
Пример: setTag(t,'ExtraSamples',Tiff.ExtraSamples.AssociatedAlpha)
Group3Options - Параметры сжатия факсов группы 3Параметры сжатия факсов группы 3, хранящиеся в структуре с этими полями.
| Имя поля | Описание |
|---|---|
Encoding2D | Бит 0 равен 1. Это значение определяет двумерное кодирование. Если указано несколько полос, каждая полоса должна начинаться с одномерной кодированной линии. То есть |
Uncompressed | Бит 1 равен 1. Это значение указывает несжатый режим при кодировании. |
FillBits | Бит 2 равен 1. Добавьте биты заполнения перед кодами EOL, чтобы EOL всегда заканчивался на границе байта. Это гарантирует, что нулевая nibble предшествует последовательности EOL на 1 байт. Например, |
Это свойство также называется Fax3 или T4Options. Значение свойства является битовой маской, управляемой первым 3 биты.
Пример: setTag(t,'Group3Options',Tiff.Group3Options.Uncompressed);
InkSet - Набор чернил для разделенного изображенияНабор рукописных изображений, хранящихся в структуре с этими полями.
| Имя поля | Описание |
|---|---|
CMYK | Порядок компонентов: голубой, пурпурный, желтый, черный. Обычно значение 0 представляет 0% покрытия чернилами, а значение 255 представляет 100% покрытия чернилами для этого компонента, но обратитесь к спецификации TIFF для DotRange. При указании CMYK не устанавливайте значение InkNames тег. |
MultiInk | Любой порядок, отличный от CMYK. Обратитесь к спецификации TIFF для InkNames для описания используемых чернил. |
В контексте этого свойства разделенное относится к фотометрической интерпретации (а не к плоской конфигурации).
Пример: setTag(t,'InkSet',Tiff.InkSet.CMYK);
JPEGColorMode - Цветовой режимЦветовой режим, хранящийся в структуре с этими полями.
| Имя поля | Описание |
|---|---|
Raw (по умолчанию) | Храните входные данные в виде отдельных матриц Y, Cb и Cr. |
RGB | Преобразование входных данных RGB в YCbCr. |
Не использовать это свойство для чтения YCbCr изображение как RGB. Вместо этого используйте RGBA интерфейс, предоставляемый readRGBAImage, readRGBAStrip, и readRGBATile функции.
Пример см. в разделе Создание изображения YCbCr/JPEG из данных RGB.
Пример: setTag(t,'JPEGColorMode',Tiff.JPEGColorMode.RGB);
Orientation - Визуальная ориентация данных изображенияВизуальная ориентация данных изображения, хранящихся в структуре с этими полями.
| Имя поля |
|---|
TopLeft |
TopRight |
BottomRight |
BottomLeft |
LeftTop |
RightTop |
RightBottom |
LeftBottom |
Orientation описывает ориентацию изображения относительно строк и столбцов. Например, когда Orientation имеет значение TopLeft, то первая строка представляет верхнюю часть изображения, а первый столбец представляет левую часть. Значение, указанное в поле Orientation только для информационных целей и не влияет на то, как MATLAB считывает или записывает данные изображения.
Пример: setTag(t,'Orientation',Tiff.Orientation.TopLeft);
Photometric - Цветовое пространство данных изображенияЦветовое пространство данных изображения, сохраненное в структуре с этими полями.
| Имя поля |
|---|
MinIsWhite |
MinIsBlack |
RGB |
Palette |
Mask |
Separated (CMYK) |
YCbCr |
CIELab |
ICCLab |
ITULab |
LogL |
LogLUV |
CFA |
LinearRaw |
Пример: setTag(t,'Photometric',Tiff.Photometric.RGB);
PlanarConfiguration - Конфигурация системы храненияКонфигурация хранения значений компонентов изображения, сохраненных в структуре с этими полями.
| Имя поля | Описание |
|---|---|
Chunky | Сохраняйте значения компонентов для каждого пикселя последовательно. Например, в случае данных RGB сохраните первые три пикселя в файле как RGBRGBRGB. Почти все изображения TIFF имеют смежные плоские конфигурации. |
Separate | Храните значения компонентов для каждого пикселя отдельно. Например, в случае данных RGB красный компонент хранится в файле отдельно от зеленого и синего компонентов. |
Пример: setTag(t,'PlanarConfiguration',Tiff.PlanarConfiguration.Chunky);
ResolutionUnit - Единицы разрешенияЕдиницы разрешения для интерпретации значений, содержащихся в 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);
SampleFormat - Формат пиксельной выборкиФормат пиксельной выборки, хранящийся в структуре с этими полями.
| Имя поля | Описание |
|---|---|
UInt (по умолчанию) | Целочисленные данные без знака |
Int | Дополнение двух целочисленных данных со знаком |
IEEEFP | Данные IEEE с плавающей запятой |
MATLAB не поддерживает форматы Void, ComplexInt, и ComplexIEEEFP.
Пример: setTag(t,'SampleFormat',Tiff.SampleFormat.IEEEFP);
SGILogDataFmt — SGIL формат данных кодекаSGIL формат данных кодека, хранящийся в структуре с этими полями.
| Имя поля | Описание |
|---|---|
Float | Единичные образцы точности. |
Bits8 | uint8 образцы (только для чтения). |
Установка 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);
SubFileType - Тип изображенияТип изображения, хранящегося в структуре с этими полями.
| Имя поля | Описание |
|---|---|
Default | Значение по умолчанию для одного файла изображения или первого изображения. |
ReducedImage | Изображение представляет собой одиночное изображение многоэкранного (или многостраничного) файла. |
Page | Несвязанные альфа-данные. |
Mask | Изображение является маской прозрачности для другого изображения в файле. Значение фотометрической интерпретации должно быть Photometric.Mask. |
Пример: setTag(t,'SubFileType',Tiff.SubFileType.Mask);
TagID - идентификаторы тегов TIFFИдентификаторы тегов TIFF, поддерживаемые MATLAB, хранятся в структуре с этими полями.
| Имя поля | Стоимость |
|---|---|
SubFileType | 254 |
ImageWidth | 256 |
ImageLength | 257 |
BitsPerSample | 258 |
Compression | 259 |
Photometric | 262 |
Thresholding | 263 |
FillOrder | 266 |
... | ... |
Для получения полного списка имен тегов и соответствующих им идентификаторов тегов введите Tiff.TagID в окне команд.
Это свойство используется для указания тега при использовании setTag функция. Например, Tiff.TagID.ImageWidth возвращает идентификатор ImageWidth тег. Чтобы получить список всех поддерживаемых тегов, используйте Tiff.getTagNames функция.
Пример: setTag(t,Tiff.TagID.ImageWidth,300);
Thresholding - Метод пороговой обработкиМетод пороговой обработки, хранящийся в структуре с этими полями.
| Имя поля |
|---|
BiLevel |
HalfTone |
ErrorDiffuse |
Этот тег используется для указания алгоритма, используемого при преобразовании пикселов из оттенков серого в черно-белый.
Пример: setTag(t,'Thresholding',Tiff.Thresholding.HalfTone);
YCbCrPositioning - Положение образцов цветностиПоложение выборок цветности относительно выборок яркости, сохраненных в структуре с этими полями.
| Имя поля | Описание |
|---|---|
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);
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.