Matlab中imwrite函数的使用

目录

imwrite函数

语法

说明

示例

将灰度图像写入 PNG

将索引图像数据写入 PNG

用 MATLAB 颜色图写入索引图像

将真彩色图像写入 JPEG

将多个图像写入 TIFF 文件

写入 GIF 动画

输入参数

名称-值对组参数

提示


imwrite函数

imwrite函数的作用是将图像写入图形文件。

语法

imwrite(A,filename)
imwrite(A,map,filename)
imwrite(___,fmt)
imwrite(___,Name,Value)

说明

imwrite(A,filename) 将图像数据 A 写入filename指定的文件,并从扩展名推断出文件格式。imwrite 在当前文件夹中创建新文件。输出图像的位深度取决于A的数据类型和文件格式。对于大多数格式来说:

  • 如果 A 属于数据类型uint8,则imwrite输出 8 位值。

  • 如果 A 属于数据类型uint16且输出文件格式支持 16 位数据(JPEG、PNG 和 TIFF),则imwrite将输出 16 位的值。如果输出文件格式不支持16位数据,则imwrite返回错误。

  • 如果 A 是灰度图像或者属于数据类型 double 或 single 的 RGB 彩色图像,则imwrite假设动态范围是[0,1],并在将其作为8位值写入文件之前自动按255缩放数据。如果A中的数据是single,则在将其写入 GIF 或 TIFF 文件之前将 A 转换为 double

  • 如果 A 属于 logical 数据类型,则 imwrite 会假定数据为二值图像并将数据写入位深度为 1 的文件(如果格式允许)。BMP、PNG 或 TIFF 格式以输入数组形式接受二值图像。

如果 A 包含索引图像数据,则应另外指定 map 输入参数。

imwrite(A,map,filename) 将 A 中的索引图像及其关联的颜色图写入由 map filename 指定的文件。

  • 如果 A 是属于数据类型 double 或 single 的索引图片,则 imwrite通过从每个元素中减去1来将索引转换为从0开始的索引,然后以uint8形式写入数据。如果A中的数据是single,则在将其写入GIF或 TIFF 文件之前将A转换为double

imwrite(___,fmt) 以 fmt 指定的格式写入图像,无论filename中的文件扩展名如何。可以在任何先前语法的输入参数之后指定 fmt

imwrite(___,Name,Value) 使用一个或多个名称-值对组参数,以指定 GIF、HDF、JPEG、PBM、PGM、PNG、PPM 和 TIFF 文件输出的其他参数。可以在任何先前语法的输入参数之后指定 Name,Value

示例

将灰度图像写入 PNG

将一个 100×100 的灰度值数组写入当前文件夹中的 PNG 文件。

A = rand(100);
imwrite(A,'myGray.png')

将索引图像数据写入 PNG

将索引图像数组和其关联的颜色图写入 PNG 文件。从文件 clown.mat 中加载示例图像数据。

load clown.mat

图像数组 X 和其关联颜色图 map 均加载至 MATLAB® 工作区。将数据写入新的 PNG 文件。

imwrite(X,map,'myclown.png')

imwrite 在当前文件夹中创建文件 myclown.png。在 MATLAB 之外打开新文件来查看新建的文件。

Matlab中imwrite函数的使用_第1张图片

用 MATLAB 颜色图写入索引图像

用 MATLAB 内置的颜色图 copper 将图像数据写入新的 PNG 文件。从文件 clown.mat 中加载示例图像数据。

load clown.mat

图像数组 X 和其关联颜色图 map 均加载至 MATLAB 工作区。map 是一个 81 RGB 向量矩阵。用 81 RGB 向量定义铜色调颜色图。然后,使用这个新的颜色图将图像数据写入 PNG 文件。

newmap = copper(81);
imwrite(X,newmap,'copperclown.png');

imwrite在当前文件夹中创建文件 copperclown.png。在 MATLAB 之外打开新文件来查看新建的文件。

Matlab中imwrite函数的使用_第2张图片

将真彩色图像写入 JPEG

创建真彩色图像数据并将其写入 JPEG 文件。创建一个随机 RGB 值的 49×49×3 数组。

A = rand(49,49);
A(:,:,2) = rand(49,49);
A(:,:,3) = rand(49,49);

将图像数据写入 JPEG 文件,并用 'jpg' 指定输出格式。使用 'Comment' 名称-值对组参数添加文件注释。

imwrite(A,'newImage.jpg','jpg','Comment','My JPEG file')

查看有关新文件的信息。

imfinfo('newImage.jpg')
ans = 

           Filename: 'S:\newImage.jpg'
        FileModDate: '25-Jan-2013 16:18:41'
           FileSize: 2339
             Format: 'jpg'
      FormatVersion: ''
              Width: 49
             Height: 49
           BitDepth: 24
          ColorType: 'truecolor'
    FormatSignature: ''
    NumberOfSamples: 3
       CodingMethod: 'Huffman'
      CodingProcess: 'Sequential'
            Comment: {'My JPEG file'}

将多个图像写入 TIFF 文件

将多个图像写入一个多页 TIFF 文件。创建两个随机图像数据集 im1 和 im2

im1 = rand(50,40,3);
im2 = rand(50,50,3);

将第一个图像写入新的 TIFF 文件。然后将第二个图像添加至同一文件。

imwrite(im1,'myMultipageFile.tif')
imwrite(im2,'myMultipageFile.tif','WriteMode','append')

写入 GIF 动画

绘制一系列图、将它们捕获为图像,然后写入 GIF 动画文件。绘制 $y = x^{n}$,其中 $n = 3$

x = 0:0.01:1;
n = 3;
y = x.^n;
plot(x,y,'LineWidth',3)
title(['y = x^n,  n = ' num2str(n) ])

Matlab中imwrite函数的使用_第3张图片

捕获 $n$ 值递增时的一系列绘图。

n = 1:0.5:5;
nImages = length(n);

fig = figure;
for idx = 1:nImages
    y = x.^n(idx);
    plot(x,y,'LineWidth',3)
    title(['y = x^n,  n = ' num2str( n(idx)) ])
    drawnow
    frame = getframe(fig);
    im{idx} = frame2im(frame);
end
close;

将多个系列的图像显示在一个图窗中。

figure;
for idx = 1:nImages
    subplot(3,3,idx)
    imshow(im{idx});
end

Matlab中imwrite函数的使用_第4张图片

将九个图像保存到一个 GIF 文件中。因为 GIF 文件不支持三维数据,所以应调用rgb2ind,使用颜色图map将图像中的 RGB 数据转换为索引图像A。要将多个图像添加到第一个图像中,请使用名称-值对组参数 'WriteMode','append' 调用 imwrite

filename = 'testAnimated.gif'; % Specify the output file name
for idx = 1:nImages
    [A,map] = rgb2ind(im{idx},256);
    if idx == 1
        imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',1);
    else
        imwrite(A,map,filename,'gif','WriteMode','append','DelayTime',1);
    end
end

imwrite将 GIF 文件写入当前文件夹。名称-值对组 'LoopCount',Inf 使动画连续循环。'DelayTime',1 在每个动画图像显示之间指定了一秒的时滞。

输入参数

A - 图像数据
矩阵

图像数据,指定为满(非稀疏)矩阵。

  • 对灰度图像而言,A 可以是 m×n

  • 对索引图像而言,A 可以是 m×n。指定 map 输入参数中的相关颜色图。

  • 对真彩色图像而言,A 必须是 m×n×3 的矩阵。imwrite 不支持将 RGB 图像写入 GIF 文件。

对于 TIFF 文件而言,A 可以是 m×n×4 数组,其中包含使用 CMYK 颜色空间的颜色数据。对于多帧 GIF 文件而言,A 可以是包含灰度图像或索引图像的 m×n×1×p 数组,其中 p 是写入帧的数量。这种情况不支持 RGB 图像。

数据类型: double | single | uint8 | uint16 | logical

filename - 输出文件名
字符向量 | 字符串标量

输出文件的名称,指定为字符向量或字符串标量。根据写入的位置,filename 可以采用以下形式之一。

位置

形式

当前文件夹

要写入当前文件夹,请在 filename 中指定文件名。

filename 必须包含文件扩展名。有关 imwrite 可写入的图像类型列表,请参阅 fmt 输入参数的说明。

示例:'myImage.jpg'

其他文件夹

要写入不同于当前文件夹的文件夹,请在 filename 中指定完整或相对路径名称。

示例:'C:\myFolder\myImage.ext'

示例:'\imgDir\myImage.ext'

远程位置

要写入远程位置,filename 必须包含指定为统一资源定位器 (URL) 形式的文件的完整路径:

scheme_name://path_to_file/my_file.ext

根据您的远程位置,scheme_name 可以是下表中的值之一。

远程位置 scheme_name
Amazon S3™ s3
Windows Azure® Blob Storage wasbwasbs
HDFS™ hdfs

有关详细信息,请参阅处理远程数据。

数据类型: char | string

map - 索引图像的颜色图
m×3 数组

A 中与索引图像数据相关联的颜色图,指定为 m×数组。map必须是有效的 MATLAB 颜色图。可以参考colormap以了解 MATLAB 内置颜色图列表。大多数图像文件格式都不支持条目数超过 256 个的颜色图。

示例: [0,0,0;0.5,0.5,0.5;1,1,1]

示例: jet(60)

数据类型: double

fmt - 输出文件格式
'bmp' | 'gif' | 'hdf' | 'jpg' | 'jp2' | ...

输出文件的格式,指定为下表中的格式之一。此表还概述了 imwrite 可写入的图像类型。MATLAB 文件格式注册表会确定支持哪些文件格式。有关此注册表的详细信息,可以参考imformats。对某些格式而言,imwrite 可以接受其他名称-值对组参数。要查看这些参数,可点击下面的链接格式名称。

fmt 的值

输出文件格式

说明

'bmp'

Windows® 位图 (BMP)

1 位、8 位和 24 位未压缩图像

'gif'

GIF-图形交换格式

8 位图像

'hdf'

HDF4-分层数据格式

带或不带关联颜色图的 8 位光栅图像数据集、24 位光栅图像数据集

'jpg' 或 'jpeg'

JPEG-联合图像专家组

8 位、12 位和 16 位基准 JPEG 图像

注意

imwrite 会先将索引图像转换为 RGB 图像,然后再将数据写入 JPEG 文件,因为 JPEG 格式不支持索引图像。

 

'jp2' 或 'jpx'

JPEG 2000-联合图像专家组

1 位、8 位 和 16 位 JPEG 2000 图像

'pbm'

可移植位图(PBM)

任何 1 位 PBM 图像、ASCII(普通)或原始(二进制)编码

'pcx'

Windows 画笔 (PCX)

8 位图像

'pgm'

可移植灰度图(PGM)

任何标准 PGM 图像;使用任意颜色深度编码的 ASCII(普通)图像;每个灰度值最多使用 16 位编码的原始(二进制)图像

'png'

PNG-可移植网络图形

1 位、2 位、4 位、8 位和 16 位灰度图像;带有 alpha 通道的 8 位和 16 位灰度图像;1 位、2 位、4 位和 8 位索引图像;24 位和 48 位真彩色图像;带有 alpha 通道的 24 位和 48 位真彩色图像

 

注意

imwrite 函数不支持写入颜色图条目不足的索引 PNG 文件。

 

'pnm'

可移植任意图(PNG)

自动选择的 PPM/PGM/PBM 任意格式

'ppm'

可移植像素图(PPM)

任何标准 PPM 图像:使用任意颜色深度编码的 ASCII(普通)图像,或每个颜色分量最多使用 16 位编码的原始(二进制)图像

'ras'

Sun™光栅(RAS) 

任何 RAS 图像,包括 1 位位图、8 位索引图像、带有 alpha 的 24 位真彩色图像和 32 位真彩色图像

'tif' 或 'tiff'

标记图像文件格式(TIFF)

基线 TIFF 图像,包括:

  • 1 位、8 位、16 位、24 位和 48 位未压缩的图像以及采用 Packbit 、LZW 或 Deflate 压缩的图像

  • 采用 CCITT 1D、Group 3 和 Group 4 压缩的 1 位图像

  • CIELAB、ICCLAB 和 CMYK 图像

 

'xwd'

X 窗口转储 (XWD)

8 位 ZPixmaps

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: imwrite(A,'myFile.png','BitDepth',8) 使用可表现每个像素的 8 位图像将数据写入 A 中。GIF - 图形交换格式

'BackgroundColor' - 要用作背景色的颜色
整数标量

用作索引图像背景色的颜色,指定为逗号分隔的对组,包含 'BackgroundColor' 和与颜色图索引对应的整数标量。背景色用于一些 GIF 动画的处置方法。

  • 如果图像数据 A 是 uint8 或 logical,则颜色图索引从 0 开始。

  • 如果图像数据 A 是 double,则颜色图索引从 1 开始。

默认背景色对应于颜色图中的第一个颜色。

示例: 'BackgroundColor',15

'Comment' - 添加到图像的注释
字符向量 | 字符串标量 | 字符向量元胞数组 | 字符串数组

要为图像添加的注释,指定为逗号分隔的对组,其中包含 'Comment' 和一个字符向量、字符串标量或 1×n 字符向量元胞数组或字符串数组。对于字符向量元胞数组,imwrite 会在每个字符向量后面添加一个回车符。

示例: 'Comment',{'Sample #314','January 5, 2013'}

数据类型: char | cell | string

'DelayTime' - 显示下一个图像之前的时滞
0.5 (默认) | 范围 [0,655] 内的标量值

显示下一个图像之前的时滞(秒),指定为逗号分隔的对组,包含 'DelayTime' 和范围 [0,655] 内的标量值。0 的值以硬件允许的最快速度显示图像。

示例: 'DelayTime',60

'DisposalMethod' - GIF 动画的处置方法
'doNotSpecify' (默认) | 'leaveInPlace' | 'restoreBG' | 'restorePrevious'

GIF 动画的处置方法,指定为逗号分隔的对组,其中包含 'DisposalMethod' 和下表中的方法之一。

DisposalMethod 的值 结果
'doNotSpecify'(默认值) 用另一个帧来替代一个完全尺寸的不透明的帧。
'leaveInPlace' 没有被下一帧覆盖的任何像素都将继续显示。
'restoreBG' 背景色或背景图块通过透明的像素显示。
'restorePrevious' 恢复到以前未处理的帧状态。

示例: 'DisposalMethod','restoreBG'

'Location' - 屏幕相对图像的偏移
[0,0] (默认) | 二元素向量

屏幕相对图像的偏移(从每个图像的左上角测量),指定为逗号分隔的对组,包含 'Location' 和一个二元素向量。第一个向量元素指定自顶部的偏移,第二个元素指定自左侧的偏移,均以像素为单位。

示例: 'Location',[10,15]

数据类型: double

'LoopCount' - 重复动画的次数
Inf (默认) | 范围 [0,65535] 内的整数

重复动画的次数,指定为以逗号分隔的对组,包含 'LoopCount' 和 [0,65535] 范围内的整数或 Inf 值。如果指定 0,动画将播放一次。如果指定值 1,动画将播放两次,以此类推。Inf 的 LoopCount 值可使动画连续循环。

要在 Microsoft® PowerPoint® 中启用动画,请为 'LoopCount' 指定 [1,65535] 范围内的值。某些 Microsoft 应用程序会将值 0 的含义解释为根本不进行循环。

示例: 'LoopCount',3

'ScreenSize' - 帧的高度和宽度
输入图像的高度和宽度 (默认) | 二元素向量

帧的高度和宽度,指定为以逗号分隔的对组,包含 'ScreenSize' 和一个二元素向量。当与 ScreenSize 结合使用时,'Location' 提供了一种将帧写入小于整个帧的图像的方法。'DisposalMethod' 确定用于帧外部的像素的填充值。

示例: 'ScreenSize',[1000 1060]

数据类型: double

'TransparentColor' - 用作透明色的颜色
整数标量

用作图像透明色的颜色,指定为逗号分隔的对组,包含 'TransparentColor' 和与颜色图索引对应的整数标量。

  • 如果图像数据 A 是 uint8 或 logical,则索引从 0 开始。

  • 如果图像数据 A 是 double,则索引从 1 开始。

示例: 'TransparentColor',20

'WriteMode' - 写入模式
'overwrite' (默认) | 'append'

写入模式,指定为逗号分隔的对组,包含 'WriteMode' 和 'overwrite' 或 'append'。在overwrite模式下,imwrite覆盖现有文件filename。在append模式下,imwrite会向现有文件添加单个帧。

示例: 'WriteMode','append'

HDF4 - 分层数据格式

'Compression' - 压缩方案
'none' (默认) | 'jpeg' | 'rle'

压缩方案,指定为逗号分隔的对组,其中包含 'Compression' 和下表中的选项之一。

Compression 的值 结果
'none'(默认值) 无压缩
'jpeg' JPEG 压缩。仅对灰度图像和 RGB 图像有效。
'rle' 行程长度编码。仅对灰度图像和索引图像有效。

示例: 'Compression','jpeg'

'Quality' - JPEG 压缩文件的质量
75 (默认) | 范围 [0,100] 内的标量

JPEG 压缩文件的质量,指定为以逗号分隔的对组,包含 'Quality' 和范围 [0,100] 内的标量,其中 0 表示较低质量和较高的压缩率,100 表示较高质量和较低的压缩率。此参数仅适用于 'Compression' 是 'jpeg' 的情况。

示例: 'Quality',25

'WriteMode' - 写入模式
'overwrite' (默认) | 'append'

写入模式,指定为逗号分隔的对组,包含 'WriteMode' 和 'overwrite' 或 'append'。在 overwrite 模式下,imwrite覆盖现有文件filename。在append模式下,imwrite会向现有文件添加单个帧。

示例: 'WriteMode','append'

JPEG - 联合图像专家组

'BitDepth' - 每像素位数
8 (默认) | 标量

每像素位数,指定为以逗号分隔的对组,包含 'BitDepth' 和一个标量。

  • 对于灰度图像,BitDepth 值可以是 8、12 或 16。默认值为 8。对于 16 位图像,'Mode' 名称-值对组参数必须为 'lossless'

  • 对彩色图像,BitDepth 的值是每平面的位数,可以是 8 或 12 位。每平面的默认值为 8 位。

示例: 'BitDepth',12

'Comment' - 添加到图像的注释
字符向量 | 字符数组 | n×1 字符向量元胞数组

要为图像添加的注释,指定为逗号分隔的对组,其中包含 'Comment' 和一个字符向量、字符串标量、字符数组、由字符向量构成的 n×1 元胞数组,或字符串数组。imwrite 将每一行输入作为一个注释写入 JPEG 文件。

示例: 'Comment',{'First line';'second line';'third line'}

数据类型: char | string | cell

'Mode' - 压缩类型
'lossy' (默认) | 'lossless'

压缩类型,指定为逗号分隔的对组,其中包含 'Mode' 和下列选项之一:

  • 'lossy'

  • 'lossless'

示例: 'Mode','lossless'

'Quality' - 输出文件质量
75 (默认) | 范围 [0,100] 内的标量

输出文件的质量,指定为以逗号分隔的对组,包含 'Quality' 和范围 [0,100] 内的标量,其中 0 表示较低质量和较高的压缩率,100 表示较高质量和较低的压缩率。100 的 Quality 值不会写入无损压缩的 JPEG 图像。相反,会使用 'Mode','lossless' 名称-值对组参数。

示例: 'Quality',100

JPEG 2000 - 联合图像专家组 2000

'Comment' - 添加到图像的注释
字符向量 | 字符串标量 | 字符数组 | n×1 字符向量元胞数组 | 字符串数组

要为图像添加的注释,指定为逗号分隔的对组,其中包含 'Comment' 和一个字符向量、字符数组、字符串标量、字符向量元胞数组或字符串数组。imwrite 将每一行输入作为一个注释写入 JPEG 2000 文件。

示例: 'Comment',{'First line';'second line';'third line'}

示例: 'Comment',{'First line','second line','third line'}

数据类型: cell | char | string

'CompressionRatio' - 目标压缩比
1 (默认) | 标量

目标压缩比,指定为逗号分隔的对组,包含 'CompressionRatio' 和大于或等于 1 的实数标量。压缩比是输入图像大小与输出压缩大小之比。例如,值为 2.0 表示输出图像大小将是输入图像大小的一半或更小。值越高,表示文件大小越小,图像质量越低。压缩比不考虑标头大小。

指定CompressionRatio仅在 'Mode' 是 'lossy' 时有效。

示例: 'CompressionRatio',3

'Mode' - 压缩类型
'lossy' (默认) | 'lossless'

压缩类型,指定为逗号分隔的对组,其中包含 'Mode' 和下列选项之一:

  • 'lossy'

  • 'lossless'

示例: 'Mode','lossless'

'ProgressionOrder' - 代码流中数据包的顺序
'LRCP' (默认) | 'RLCP' | 'RPCL' | 'PCRL' | 'CPRL'

代码流中数据包的顺序,指定为逗号分隔的对组,其中包含 'ProgressionOrder' 和下列选项之一:

  • 'LRCP'

  • 'RLCP'

  • 'RPCL'

  • 'PCRL'

  • 'CPRL'

字符分别代表如下内容:L = 层,R = 分辨率,C = 分量,P = 位置。

示例: 'ProgressionOrder','RLCP'

'QualityLayers' - 质量层数
1 (默认) | 范围 [1,20] 内的整数

质量层数,指定为逗号分隔的对组,包含 'QualityLayers' 和范围 [1,20] 内的整数。

示例: 'QualityLayers',8

'ReductionLevels' - 还原级数
4 (默认) | 范围 [1,8] 内的整数

还原级数或小波分解级数,指定为逗号分隔的对组,包含 'ReductionLevels' 和范围 [1,8] 内的整数。

示例: 'ReductionLevels',6

'TileSize' - 图块高度和宽度
图像尺寸 (默认) | 二元素向量

图块高度和宽度,指定为以逗号分隔的对组,包含 'TileSize' 和一个二元素向量。可指定的最小尺寸为 [128 128]

示例: 'TileSize',[130 130]

PBM-、PGM- 和 PPM - 可移植位图、灰度图、像素图

'Encoding' - 编码
'rawbits' (默认) | 'ASCII'

编码,指定为以逗号分隔的对组,包含 'Encoding' 和二进制编码的 'rawbits' 或普通编码的 'ASCII'

示例: 'Encoding','ASCII'

'MaxValue' - 最大灰色或颜色值
标量

最大灰色或颜色值,指定为以逗号分隔的对组,包含 'MaxValue' 和一个标量。仅适用于 PGM 和 PPM 文件。对于 PBM 文件,该值始终为 1。如果图像数组为 uint16,则 MaxValue 的默认值为 65535。否则,默认值为 255

示例: 'MaxValue',510

PNG - 可移植网络图形

'Alpha' - 每个像素的透明度
范围 [0,1] 内的值矩阵

每个像素的透明度,指定为逗号分隔的对组,包含 'Alpha' 和范围 [0,1] 内的值矩阵。Alpha 矩阵的行和列维度都必须与图像数据数组的相同。仅可为灰度(m×n)和真彩色(m×n×3)图像数据指定 Alpha

注意

不能同时指定 'Alpha' 和 'Transparency'

数据类型: double | uint8 | uint16

'Author' - 作者信息
字符向量 | 字符串标量

作者信息,指定为逗号分隔的对组,其中包含 'Author' 和一个字符向量或字符串标量。

示例: "Author','Ann Smith'

数据类型: char

'Background' - 合成透明像素时的背景色
范围 [0,1] 中的标量 | 范围 [1,P] 内的整数 | 范围 [0,1] 内的三元素向量

合成透明像素时的背景色,指定为逗号分隔的对组,包含 'Background' 和依赖于图像数据的值,具体如下。

图像类型 Background 值的格式
灰度图像 范围 [0,1] 内的标量。
索引图像 [1,P] 范围内的整数,其中 P 是颜色图长度。例如,'Background',50 将背景色设置为颜色图中第 50 个索引指定的颜色。
真彩色图像 范围 [0,1] 内 RGB 强度的三元素向量。例如,'Background',[0 1 1] 将背景色设置为青色。

数据类型: double

'BitDepth' - 每像素位数
标量

每像素位数,指定为以逗号分隔的对组,包含 'BitDepth' 和一个标量。根据输出图像,标量可以是下列值之一。

图像类型 BitDepth 的允许值
灰度图像 1248 或 16
带有 alpha 通道的灰度图像 8 或 16
索引图像 124 或 8
真彩色图像 8 或 16
  • 如果图像属于 double 或 uint8 类,则默认位深是 8 位/像素。

  • 如果图像是 uint16,则默认值是 16 位/像素。

  • 如果图像是 logical,则默认值是 1 位/像素。

示例: 'BitDepth',4

'Chromaticities' - 参考白和原色色度
8 元素向量

参考白和原色色度,指定为逗号分隔的对组,包含 'Chromaticities' 和 8 元素向量 [wx wy rx ry gx gy bx by]。元素 wx 和 wy 是白点色度坐标,元素 rxrygxgybx 和 by 均是三原色色度坐标。

如果指定 Chromaticities,则应同时指定 Gamma 名称-值对组参数。

示例: 'Chromaticities',[0.312,0.329,0.002,0.002,0.001,0.001,0.115,0.312]

数据类型: double

'Comment' - 添加到图像的注释
字符向量 | 字符串标量

为图像添加的注释,指定为逗号分隔的对组,其中包含 'Comment' 和一个字符向量或字符串标量。

版权声明,指定为逗号分隔的对组,其中包含 'Copyright' 和一个字符向量或字符串标量。

'CreationTime' - 原图创建的时间
字符向量 | 字符串标量

原图创建的时间,指定为字符向量或字符串标量。

'Description' - 图像的描述
字符向量 | 字符串标量

图像说明,指定为逗号分隔的对组,其中包含 'Description' 和一个字符向量或字符串标量。

'Disclaimer' - 法律免责声明
字符向量 | 字符串标量

法律免责声明,指定为逗号分隔的对组,其中包含 'Disclaimer' 和一个字符向量或字符串标量。

'Gamma' - 文件的 gamma 值
标量

文件的 gamma 值,指定为以逗号分隔的对组,包含 'Gamma' 和一个字符串。

示例: 'Gamma',2.2

'ImageModTime' - 图像最后修改的时间
日期序列值 | 包含日期的字符向量或字符串标量

上次修改图像的时间,指定为逗号分隔的对组,其中包含 'ImageModTime' 和一个 MATLAB 日期序列值或日期字符向量或字符串标量,该字符向量可使用 datevec 函数转换为日期向量。值应为协调世界时 (UTC)。

ImageModTime 的默认值是调用 imwrite 的时间。

示例: 'ImageModTime','17-Jan-2013 11:23:10'

数据类型: double | char | string

'InterlaceType' - 隔行扫描方案
'none' (默认) | 'adam7'

隔行扫描方案,指定为逗号分隔的对组,包含 'InterlaceType' 以及关于非隔行扫描的 'none' 或使用 Adam7 算法的 'adam7'

示例: 'InterlaceType','adam7'

'ResolutionUnit' - 图像分辨率单位

'unknown' (默认) | 'meter'

图像分辨率单位,指定为以逗号分隔的对组,包含 'ResolutionUnit' 和 'unknown' 或 'meter'。如果指定 ResolutionUnit,则必须至少包括 XResolution 和 YResolution 名称-值对组参数之一。当 ResolutionUnit 的值为 'meter' 时,XResolution 和 YResolution 的值解释为像素/米。

示例: 'ResolutionUnit','meter','XResolution',1000

'SignificantBits' - 视作有效的位数
[] (默认) | 标量 | 向量

数据数组中视为有效的位数,指定为逗号分隔的对组,包含 'SignificantBits' 和范围 [1,BitDepth] 内的一个标量或向量。根据输出图像类型,该值必须有以下格式。

图像类型 SignificantBits 值的格式
不带 alpha 通道的灰度图像 标量
带有 alpha 通道的灰度图像 2 元素向量
索引图像 3 元素向量
不带 alpha 通道的真彩色图像 3 元素向量
带有 alpha 通道的真彩色图像 4 元素向量

示例: 'SignificantBits',[2,3]

'Software' - 用于创建图像的软件
字符向量 | 字符串标量

用于创建图像的软件,指定为逗号分隔的对组,其中包含 'Software' 和一个字符向量或字符串标量。

'Source' - 用于创建图像的设备
字符向量 | 字符串标量

用于创建图像的设备,指定为逗号分隔的对组,其中包含 'Source' 和一个字符向量或字符串标量。

'Transparency' - 视为透明的像素
[] (默认) | 范围 [0,1] 内的标量 | 向量

没有使用 alpha 通道时视为透明的像素,指定为以逗号分隔的对组,包含 'Transparency' 和一个字符串或向量。根据输出图像类型,该值必须具有以下格式。

图像类型 Transparency 值的格式
灰度图像 范围 [0,1] 内的标量,表示视为透明的灰度颜色。
索引图像 [0,1] 范围值的 Q- 元素向量,其中 Q 不超过颜色图长度,并且每个值指示与对应的颜色图条目关联的透明度。在大多数情况下,Q = 1
真彩色图像 范围 [0,1] 内 RGB 强度的 3 元素向量,表示视为透明的真彩色颜色。

注意

不能同时指定 'Transparency' 和 'Alpha'

示例: 'Transparency',[1 1 1]

数据类型: double

'Warning' - 内容性质警告
字符向量 | 字符串标量

内容性质警告,指定为逗号分隔的对组,其中包含 'Warning' 和一个字符向量或字符串标量。

'XResolution' - 水平方向的图像分辨率
标量

水平方向的图像分辨率(单位为像素),指定为逗号分隔的对组,包含 'XResolution' 和一个标量。通过指定 ResolutionUnit 名称-值对组参数来定义单位。如果还没有指定 YResolution,则 XResolution 值同时适用于水平和垂直方向。

示例: 'XResolution',900

'YResolution' - 垂直方向的图像分辨率
标量

垂直方向的图像分辨率(单位为像素),指定为逗号分隔的对组,包含 'XResolution' 和一个标量。通过指定 ResolutionUnit 名称-值对组参数来定义单位。如果还没有指定 XResolution,则 YResolution 值同时适用于水平和垂直方向。

示例: 'YResolution',900

除了列出的适合 PNG 的名称-值对组参数之外,还可以使用满足 PNG 关键字设定的任何参数名称。也就是说,该名称只能使用可打印字符,包含 80 个或更少的字符,并且不包含前导或尾随空格。与用户指定的这些名称对应的值必须为不包含换行符以外的任何控制字符的字符向量或字符串标量。

RAS - Sun 光栅图形

'Alpha' - 每个像素的透明度
[] (默认) | 矩阵

每个像素的透明度,指定为逗号分隔的对组,包含 'Alpha' 和一个与图像数据数组具有相同的行和列维度的矩阵。仅对真彩色(m×n×3)图像数据有效。

数据类型: double | single | uint8 | uint16

'Type' - 图像类型
'standard' (默认) | 'rgb' | 'rle'

图像类型,指定为逗号分隔的对组,其中包含 'Type' 和下表中的选项之一。

Type 的值 说明
'standard'(默认值) 真彩色图像未压缩的 B-G-R 色序
'rgb' 真彩色图像未压缩的 R-G-B 色序
'rle 1 位和 8 位图像的行程编码

示例: 'Type','rgb'

TIFF - 标记图像文件格式

'ColorSpace' - 表示颜色数据的颜色空间
'rgb' (默认) | 'cielab' | 'icclab'

表示颜色数据的颜色空间,指定为逗号分隔的对组,其中包含 'ColorSpace' 和下列选项之一:

  • 'rgb'

  • 'cielab'

  • 'icclab'

仅当图像数据数组 A 为真彩色(m×n×3)时有效。要在 TIFF 文件中使用 CMYK 颜色空间,请不要使用 'ColorSpace' 名称-值对组参数。相反,应指定一个 m×n×4 图像数据数组。

imwrite可以将使用 L*a*b* 颜色空间的彩色图像数据写入 TIFF 文件。1976 CIE L*a*b* 设定定义了表示亮度 (L*) 与色度(a* 和 b*)信息的数值。要将 L*a*b* 颜色数据存储在 TIFF 文件中,这些值必须经过编码以适合 8 位或 16 位数据存储。 imwrite 可以使用以下编码将 L*a*b* 颜色数据存储在 TIFF 文件:

  • CIELAB 编码 - 由 TIFF 规范定义的 8 位和 16 位编码

  • ICCLAB 编码 - 由国际色彩联盟定义的 8 位和 16 位编码

imwrite使用的输出类和编码取决于输入图像数据数组的类以及 ColorSpace 的值,如下表所示。(8 位和 16 位 CIELAB 编码不能是输入数组,因为这些编码混合使用有符号值和无符号值,不能使用单一 MATLAB 数组来表示。)

输入类和编码

ColorSpace 的值

输出类和编码

8 位 ICCLAB

 

这些值为 [0 255] 范围内的整数。L* 值乘以 255/100
128 添加到 a* 和 b* 值中。

'icclab'

8 位 ICCLAB

'cielab'

8 位 CIELAB

16 位 ICCLAB

 

这些值为 [0,65280] 范围内的整数。L* 值乘以 65280/100
32768 添加到 a* 和 b* 值中,这些值以 [0,65535] 范围中的整数表示。

'icclab'

16 位 ICCLAB

'cielab'

16 位 CIELAB

双精度的 1976 CIE L*a*b* 值

 

L* 位于 [0, 100] 动态范围中。a* 和 b* 可以接受任何值。将 a* 和 b* 设置为 0(零)会生成一种中性颜色(灰色)。

'icclab'

8 位 ICCLAB

'cielab'

8 位 CIELAB

示例: 'ColorSpace','cielab'

'Compression' - 压缩方案
'packbits' | 'none' | 'lzw' | 'deflate' | 'jpeg' | 'ccitt' | 'fax3' | 'fax4'

压缩方案,指定为逗号分隔的对组,其中包含 'Compression' 和下列选项之一:

  • 'packbits'(非二值图像的默认值)

  • 'none'

  • 'lzw'

  • 'deflate'

  • 'jpeg'

  • 'ccitt'(仅限于二值图像,此类图像的默认值)

  • 'fax3'(仅限于二值图像)

  • 'fax4'(仅限于二值图像)

'jpeg' 是一种有损压缩方案;其他压缩模式为无损压缩。此外,如果您指定 'jpeg' 压缩,则还必须指定 'RowsPerStrip' 参数并且该值必须为 8 的倍数。

示例: 'Compression','none'

'Description' - 图像描述
字符向量 | 字符串标量

图像描述,指定为逗号分隔的对组,其中包含 'Description' 和一个字符向量或字符串标量。这是 imfinfo 返回到输出图像的 ImageDescription 字段内的文本。

示例: 'Description','Sample 2A301'

'Resolution' - X 分辨率和 Y 分辨率
72 (默认) | 标量 | 二元素向量

X 分辨率和 Y 分辨率,指定为逗号分隔的对组,包含 'Resolution' 和表示 X 分辨率和 Y 分辨率或包含 X 分辨率和 Y 分辨率的二元素向量的标量。

示例: 'Resolution',80

示例: 'Resolution',[320,72]

数据类型: double

'RowsPerStrip' - 包含在每个条带中的行数
标量

包含在每个条带中的行数,指定为以逗号分隔的对组,包含 'RowsPerStrip' 和一个标量。默认值将使每个条带约为 8K 字节。如果指定 'jpeg' 压缩,则还必须指定 RowsPerStrip 参数。该值必须为 8 的倍数。

示例: 'RowsPerStrip',16

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

'WriteMode' - 写入模式
'overwrite' (默认) | 'append'

写入模式,指定为逗号分隔的对组,包含 'WriteMode' 和 'overwrite' 或 'append'。在 overwrite 模式下,imwrite 覆盖现有文件。在 append 模式下,imwrite 会向现有文件添加一页。

示例: 'WriteMode','append'

提示

  • 有关版权信息,请参阅 libtiffcopyright.txt 文件。

 

 

你可能感兴趣的:(Matlab)