Шлюз 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
файл.
filename
- Имя файлаИмя файла, заданное как вектор символов или строковый скаляр.
Пример: 'myfile.tif'
mode
- Тип доступа к файлу'r'
(по умолчанию) | 'w'
| 'w8'
| 'a'
| 'r+'
Тип доступа к файлу, заданный в качестве одного из следующих значений.
Параметр | Описание |
---|---|
'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);
Когда вы создаете файл, перед записью данных в файл необходимо задать следующие теги:
ImageWidth | Compression |
ImageLength | PlanarConfiguration |
BitsPerSample | Photometric |
SamplesPerPixel |
В зависимости от размещения изображения необходимо задать следующие дополнительные теги:
Stripped layout - Установите 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 Image с цветом и данные альфа-канала.
Пример: setTag(t,'ExtraSamples',Tiff.ExtraSamples.AssociatedAlpha)
Group3Options
- Опции сжатия факса группы 3Группа 3 опции сжатия факса, хранящиеся в структуре с этими полями.
Имя поля | Описание |
---|---|
Encoding2D | Бит 0 равен 1. Это значение задает двумерное кодирование. Если задано более одной полосы, каждая полоса должна начинаться с одномерно закодированной линии. То есть |
Uncompressed | Бит 1 равен 1. Это значение задает несжатый режим при кодировании. |
FillBits | Бит 2 равен 1. Добавьте биты заливки по мере необходимости перед кодами EOL, так что EOL всегда заканчивается на контуре байта. Это гарантирует, что нулевая ширина предшествует последовательности 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 |
The 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, первые три пикселя в файле храните как RGBRGBRGGB. Почти все изображения 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 могут содержать 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);
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.