Tiff

MATLAB通往LibTIFF库例程的网关

描述

一个Tiff对象表示到标记图像文件格式(TIFF)文件的连接,并提供对LibTIFF库的许多函数的访问。Tiff提供比imread而且imwrite函数,例如读取子图像,写入图像数据块和条,以及修改单个TIFF标签。

类的语法在大多数情况下Tiff对象函数与相应的LibTIFF库函数的语法相似。充分理解的能力Tiff对象,请参阅LibTIFF API和TIFF规范和技术说明。查看此文档,请访问LibTIFF - TIFF库和实用程序

MATLAB®万博1manbetx支持LibTIFF 4.1.0版本。有关版权资料的LibTIFF图书馆,请参阅libtiffcopyright.txt文件。

创建

描述

例子

obj = Tiff(文件名创建一个Tiff对象用于对TIFF文件的读访问文件名

例子

obj = Tiff(文件名模式创建一个Tiff对象指定的对TIFF文件的访问类型模式

输入参数

全部展开

文件名称,指定为字符向量或字符串标量。

例子:“myfile.tif”

文件访问类型,指定为这些值之一。

参数 描述
“r” 打开文件读取(默认)。
' w ' 打开文件进行写作;丢弃现有内容。
“w8” 打开文件,用于写入BigTIFF文件;丢弃现有内容。
“一个” 打开或创建文件进行写入;将数据追加到文件末尾。
' r + ' 打开(不创建)文件进行读写。

打开TIFF文件进行写入或追加时,Tiff对象自动在文件中创建一个IFD,用于写入后续数据。此IFD具有TIFF Revision中指定的所有默认值6.0

属性

全部展开

TIFF文件由包含图像数据和相关标记的图像文件目录(ifd)组成。标签包含图像相关信息,如图像宽度、图像高度和样本数量。每个TIFF属性都是为标记提供值的结构。属性设置标记值setTag函数。例如,创建一个文件并指定JPEG压缩。

t = Tiff('myfile.tif','w');setTag (t,“压缩”,Tiff.Compression.JPEG);

创建文件时,在将数据写入文件之前,必须设置这些标记:

ImageWidth 压缩
ImageLength PlanarConfiguration
BitsPerSample 光度
SamplesPerPixel

根据图像的布局,你必须设置这些额外的标签:

  • 剥离布局-设置RowsPerStrip标签。

  • 平铺布局-设置TileWidth而且TileHeight标签。

方案压缩图像数据,存储在具有这些字段的结构中。

字段名
没有一个
CCITTRLE(只读)
CCITTFax3
CCITTFax4
LZW
OJPEG
JPEG
AdobeDeflate
...

控件支持的值的完整列表万博1manbetx压缩标签类型Tiff。压缩在命令窗口中。

例子:setTag (t,“压缩”,Tiff.Compression.JPEG);

额外的通道描述,存储在具有这些字段的结构中。

字段名 描述
未指明的 未指定的数据
AssociatedAlpha 相关alpha(预乘)
UnassociatedAlpha 无关联alpha数据

如果除了通常的比色通道外,还存在额外的通道,则ExtraSamples标签是必需的。有关示例用法,请参见写Tiff图像与颜色和Alpha通道数据

例子:setTag (t ' ExtraSamples Tiff.ExtraSamples.AssociatedAlpha)

传真压缩选项,存储在具有这些字段的结构中。

字段名 描述
Encoding2D

第0位是1。

该值指定二维编码。如果指定了多个条带,则每个条带必须以一维编码行开始。也就是说,RowsPerStrip必须是参数的倍数K,如CCITT规范中所述。

未压缩的

第1位是1。

此值指定编码时的非压缩模式。

FillBits

第2位是1。

在EOL代码之前添加必要的填充位,这样EOL总是在字节边界上结束。这确保了一个零蚕食在EOL序列之前1个字节。例如,xxxx - 0000 0000 - 0001

这个属性也被称为Fax3T4Options.该属性的值是由第一个属性控制的位掩码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);

颜色模式,存储在具有这些字段的结构中。

字段名 描述
(默认) 保持输入为独立的Y、Cb和Cr矩阵。
RGB 将RGB输入转换为YCbCr。

不使用此属性读取YCbCr意象作为RGB.而是使用RGBA接口提供的readRGBAImagereadRGBAStrip,readRGBATile功能。

有关示例,请参见从RGB数据创建YCbCr/JPEG图像

例子:setTag (t ' JPEGColorMode Tiff.JPEGColorMode.RGB);

可视方向的图像数据,存储在具有这些字段的结构中。

字段名
TopLeft
TopRight
BottomRight
BottomLeft
LeftTop
RightTop
RightBottom
LeftBottom

取向属性描述图像相对于行和列的方向。例如,当取向设置为TopLeft,则第一行表示图像的顶部,第一列表示图像的左侧。属性中指定的值取向仅供参考,不影响MATLAB如何读取或写入图像数据。

例子:setTag (t,“定位”,Tiff.Orientation.TopLeft);

彩色空间的图像数据,存储在具有这些字段的结构中。

字段名
MinIsWhite
MinIsBlack
RGB
调色板
面具
分离(CMYK)
YCbCr
CIELab
ICCLab
ITULab
LogL
LogLUV
非洲金融共同体
LinearRaw

例子:setTag (t)的光度,Tiff.Photometric.RGB);

存储配置的图像组件值,存储在具有这些字段的结构中。

字段名 描述
厚实 连续存储每个像素的组件值。例如,在RGB数据的情况下,将文件中的前三个像素存储为RGBRGBRGB。几乎所有TIFF图像都具有连续的平面构型。
单独的 分别存储每个像素的组件值。例如,在RGB数据的情况下,红色组件与绿色和蓝色组件分别存储在文件中。

例子:setTag (t ' PlanarConfiguration Tiff.PlanarConfiguration.Chunky);

解析单元来解释包含的值XResolution而且YResolution标记,存储在具有这些字段的结构中。

字段名 描述
没有一个 默认值。
英寸 中包含的值指定单位英寸XResolution而且YResolution标签。
厘米 中包含的值指定单位厘米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不支持这些格式万博1manbetx无效ComplexInt,ComplexIEEEFP

例子:setTag (t ' SampleFormat Tiff.SampleFormat.IEEEFP);

SGIL编解码器数据格式,存储在具有这些字段的结构中。

字段名 描述
浮动 单精密样品。
Bits8 uint8样品(只读)。

设置SGILogDataFmt浮动Bits8意味着一个SamplesPerPixel的价值3.LogLuv图像和值1LogL图像。

您可以设置SGILogDataFmt属性的每个实例只能标记一次LogL / LogLuvTIFF图像对象。

使用下面的代码创建一个Tiff对象,设置SGIL数据格式,然后读取图像数据。

tiffobj = Tiff(“example.tif”“r”);setDirectory (tiffobj 3);%图像3是一个loguv图像setTag (tiffobj“SGILogDataFmt”, Tiff.SGILogDataFmt.Float);Imdata = read(tiffobj);

例子:setTag (t ' SGILogDataFmt Tiff.SGILogDataFmt.Float);

图像的类型,存储在具有这些字段的结构中。

字段名 描述
默认的 单个图像文件或第一个图像的默认值。
ReducedImage 图像是多图像(或多页)文件的单个图像。
页面 无关联alpha数据。
面具 该图像是文件中另一个图像的透明掩码。光度解释值必须为光度。面具

例子:setTag (t ' SubFileType Tiff.SubFileType.Mask);

MATLAB支持的TIFF标签id,存储在具有这些万博1manbetx字段的结构中。

字段名 价值
SubFileType 254
ImageWidth 256
ImageLength 257
BitsPerSample 258
压缩 259
光度 262
阈值 263
FillOrder 266
... ...

要获得标记名称及其对应的标记id的完整列表,请键入Tiff。TagID在命令窗口。

属性时,可使用此属性指定标记setTag函数。例如,Tiff.TagID.ImageWidth对象的IDImageWidth标签。要获得所有支持标记的列表,请使用万博1manbetxTiff.getTagNames函数。

例子:Tiff.TagID.ImageWidth setTag (t, 300);

阈值技术,存储在具有这些字段的结构中。

字段名
上下两层的
半色调
ErrorDiffuse

使用此标记指定将像素从灰度转换为黑白时使用的算法。

例子:setTag (t,“阈值”,Tiff.Thresholding.HalfTone);

色度样品相对于亮度样品的位置,存储在具有这些字段的结构中。

字段名 描述
为中心的 指定与行业标准(如PostScript)的兼容性®级别2。
Cosited 指定与大多数数字视频标准的兼容性,如CCIR建议601-1。

例子:setTag (t ' YCbCrPositioning Tiff.YCbCrPositioning.Centered);

对象的功能

TIFF文件由一个或多个图像文件目录(ifd)组成。IFD包含图像数据及其相关元数据。ifd可以包含子ifd,子ifd还包含图像数据和元数据。打开TIFF文件以进行读取时,Tiff对象使文件中的第一个IFD为当前的IFD。Tiff对象函数作用于当前IFD。

全部展开

读取整个TIFF图像
readEncodedStrip 从指定条带读取数据
readEncodedTile 从指定的tile读取数据
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对象。

关闭(t);

对于具有颜色和alpha通道的数据集,请设置Tiff标记,然后将数据写入文件。

创建一个数据数组,数据,其中包含颜色通道和alpha通道。

RGB = imread(“example.tif”);Numrows = size(rgb,1);Numcols = size(rgb,2);Alpha = 255*ones([numrows numcols],“uint8”);数据= cat(3,rgb,alpha);

创建一个Tiff对象。

t = Tiff(“myfile.tif”' w ');

的值ExtraSamples标签,因为数据中除了颜色通道外还包含alpha通道。

setTag (t)光度的, Tiff.Photometric.RGB);setTag (t)“压缩”, 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对象。

写(t)数据);关闭(t);

将RGB图像数据作为YCbCr/JPEG图像写入TIFF文件。

获取RGB数据。

RGB = imread(“example.tif”);

创建一个Tiff对象,t,并设置标签。属性指定输入数据为RGBJPEGColorMode标签。

t = Tiff(“myfile.tif”' w ');setTag (t)光度的, Tiff.Photometric.YCbCr);setTag (t)“压缩”, 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”、大小(rgb, 1));setTag (t)“ImageWidth”、大小(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对象。

写(t, rgb);关闭(t);
在R2009b中引入