精华内容
下载资源
问答
  • Matlabimwrite函数的使用

    千次阅读 2020-05-22 16:39:42
    1.imwrite函数 imwrite函数的作用是将图像写入图形文件。 2.语法 imwrite(A,filename) imwrite(A,map,filename) imwrite(___,fmt) imwrite(___,Name,Value) (1)imwrite(A,filename)将图像数据A写入filename...

    目录

    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 颜色图写入索引图像

    用 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 之外打开新文件来查看新建的文件。

    将真彩色图像写入 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) ])

    捕获 $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

    将九个图像保存到一个 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 文件。

     

     

    展开全文
  • matlabimwrite函数

    千次阅读 2017-06-11 12:15:40
    imwrite 函数用于将图像写入图像文件中。  imwrite(A,'filename','fmt')   以fmt的图像格式保存图像A到filename的路径文件中;  A 可以是灰度图像,也可以为彩色图像,但不可以为空。如果图像文件格式是...

              imwrite函数用于将图像写入图像文件中。


            imwrite(A,'filename','fmt')   

            以fmt的图像格式保存图像A到filename的路径文件中;

           A 可以是灰度图像,也可以为彩色图像,但不可以为空。如果图像文件格式是TIFF,该函数也可以处理4通道的CMYK颜色模型的图像数据。filename是包含文件名的路径。fmt是图像文件格式。


          eg1:

          imwrite(img,'C\Users\Lenovo\Desktop\123','jpg');

          将img图像存入桌面的123文件中,图像格式为jpg,即可以看到桌面多了一个123.jpg的图像。


          imwrite(A,map,'filename','fmt')

           map表示与其关联的颜色映射表。其他参数同上。


          imwrite(...,'filename')

          该函数将图像保存在文件中,同时图像文件格式一并在文件名中体现。

        

         eg2:imwrite(img,'123.jpg');

          将img图像保存为系统路径下的123.jpg文件中。


    (以上参考《MATLAB图像处理实例讲解》)





    展开全文
  • 参考资料:  ...比如我就对imwrite函数输出的图片格式有一些疑问,下面对imwrite函数的用法进行解释,先放一下官方文档: imwrite(A,filename)wr...

      参考资料:

      https://www.mathworks.com/help/matlab/ref/imwrite.html?s_tid=srchtitle

      你可能觉得imread函数很简单,但是还是有一些细节要注意。比如我就对imwrite函数输出的图片格式有一些疑问,下面对imwrite函数的用法进行解释,先放一下官方文档:


     

    imwrite(A,filename) writes image data A to the file specified by filename, inferring the file format from the extension. imwrite creates the new file in your current folder. The bit depth of the output image depends on the data type of A and the file format. For most formats:

    • If A is of data type uint8, then imwrite outputs 8-bit values.

    • If A is of data type uint16 and the output file format supports 16-bit data (JPEG, PNG, and TIFF), then imwrite outputs 16-bit values. If the output file format does not support 16-bit data, then imwrite returns an error.

    • If A is a grayscale or RGB color image of data type double or single, then imwrite assumes that the dynamic range is [0,1] and automatically scales the data by 255 before writing it to the file as 8-bit values. If the data in A is single, convert A to double before writing to a GIF or TIFF file.

    • If A is of data type logical, then imwrite assumes that the data is a binary image and writes it to the file with a bit depth of 1, if the format allows it. BMP, PNG, or TIFF formats accept binary images as input arrays.

    If A contains indexed image data, you should additionally specify the map input argument.


     

      imwrite的用法本身也很简单,A是一个图像矩阵,从上述说明中可以看出,A的数据类型可以是uint8,uint16,logical等,还可以是indexed image data即索引图。filename是一个字符串,将输出图像的路径和文件名传给filename即可。更进一步从描述中可看出,输出图片文件的格式由后缀名(extension)决定,uint8基本都支持,uint16则仅有部分图片格式支持。此时我们就要specific文件名的后缀,防止出现error。

      看文档又好奇这个indexed image即索引图是什么,在网上找了一张图:

      简单来说就是给一幅图像出现的所有RGB值编一个映射表,然后有一个和图像形状一样的索引矩阵,查表即可得到RGB图。 

    展开全文
  • imwrite函数保存jpg,bmp matlab

    千次阅读 2018-10-10 09:22:46
    一种常用但只适用于JPEG图像的imwrite函数语法为 imwrite(f,'filename.jpg','quality',q) 其中,q是一个在0-100之间的整数,为图像质量因数。  imwrite函数功能:将图像数据写入到图像文件中, 存储在磁盘上。在...

    一种常用但只适用于JPEG图像的imwrite函数语法为
    imwrite(f,'filename.jpg','quality',q)

    其中,q是一个在0-100之间的整数,为图像质量因数。
        imwrite函数功能:将图像数据写入到图像文件中, 存储在磁盘上。在matlab命令窗口中键入doc imwrite或help imwrite可以获得更多关于该函数的帮助信息。

      bmp图片保存

    imwrite(label,'liver label.bmp');

    label是原来图片名,liver label是保存后的名

    展开全文
  • 在使用matlab时,我们经常要讲所得到的数据进行保存,比如处理的图片用imwrite函数保存,但有时候imwrite函数保存时经常会报错如:无法打开要写入的文件 "D\各类学习数据\ceshi.png"。您可能没有写入权限。即提示...
  • Matlabimwrite函数

    千次阅读 2013-11-12 16:19:10
    下面记录我在实验中遇到的有意思的现象: 将logical数据类型的矩阵保存为图片,然后再从图片中将数据读取出来,保存的格式会对从图片中读取的...imwrite(logicalMatrix, 'logicaltest.bmp'); output = imread('logic
  • 使用matlabimwrite函数保存图像时,如果保存成jpg格式的图像,结果图像和原来图像会有些差异,因为jpg格式是压缩格式,会丢失一部分数据,但是图像的总体外观是看不出区别的,下图左边表示png格式原图,右边表示...
  • save_path = ''; image=imread([framesPath,fileName,'.jpg'])%从指定目录读入文件名为filename的jpg图像 path = [save_path,num2str(11111),'.jpg'];...imwrite(image,path)%写入path中 其中save_path中目录可...
  • 接上文“图像处理-Matlab平台批量更改文件名——利用系统rename函数” 先上代码: 其中的关键点在dir()函数。功能为返回地址文件夹下所有后缀名为jpg文件的属性。其files文件是一个结构体数据: whos files ...
  • A=randi([0,255],1080,1920,'uint8'); 此时像素值:![图片说明](https://img-ask.csdn.net/upload/202005/09/1589034142_507738.png) 使用imwrite(A,'密钥A.jpg'); 保存之后:
  • 关于使用matlab imwrite函数转换三维数组为图像时,导致结果为空白或大部分损坏的原因 问题起因 是想做一个根据rgb数据值生成图像的操作,无奈不能自己捏造大量的数据,来生成一幅像样的图像,我只能从网上随便拉了...
  • MATLAB转图像处理之大小和格式的改变输出并保存——imread与imwrite函数通过imresize配对使用DIY,入门简单,实用性好,效果蛮好。 话不多说,源码如下: Ii = imread('sffffffrt3.jpg'); KK=imresize(Ii, [80 80]);...
  • 关于imshow和imwrite函数数据类型的总结以matlab和python—opencv处理8位图像为例标准参数要求出现问题的原因解决方法 以matlab和python—opencv处理8位图像为例 在编写机器视觉一些入门代码时候三番两次出现关于...
  • 1. 在Matlab命令窗口输入命令: helpimwrite 会有如下解释: If the input array is of class uint16 and the format supports 16-bit data (JPEG, PNG, and TIFF), imwrite outputs the data as 16-bit values. ...
  • 基础学习笔记之opencv(24):imwrite函数的使用    前言  OpenCV中保存图片的函数在c++版本中变成了imwrite(),这应该是向matlab中图像处理的的一些函数风格靠近吧。保存图片这个功能还是很重要的,比如说在...
  • imwrite 可以使用imwrite函数保存图片,使用方法如下: imwrite(Im,'img.jpg');把Im保存为img.jpg。 imwrite(Im,sprintf('img_%d.jpg',i));把保存图片的名字参数化。
  • OpenCV学习笔记(一):读取、显示、保存图片 OpenCV中最基本的操作:读取、显示、...OpenCV2.0版本引入与Matlab命令相同的函数,imread、imshow、imwrite,获取图片更将方便。 读取文件 imread 1Mat imrea
  • Matlabimwrite( ) 函数 保存图像用法

    万次阅读 多人点赞 2018-03-23 13:54:29
    1、保存到当前文件夹下:imwrite(I,'abc.png'); 2、保存到当前文件夹下的一个子文件result下:imwrite(I,'./result/abc.png'); 3、保存到当前文件夹上一层的一个文件夹result下:imwrite(I,'../result/abc.png...
  • matlab imwrite写入指定文件夹

    万次阅读 多人点赞 2017-11-22 14:18:53
    利用matlabimwrite函数将图像数据写入指定的文件夹
  • matlab函数之saveas 和imwrite

    千次阅读 2019-01-22 16:04:12
    saveas(handle,['目录','文件名']) 如果只有一幅图,handle设为gcf ...imwrite(image_data,['directory','filename']) 需要与getframe连用 两个命令都可以用来保存图像,区别在于 1、背景色:save...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 263
精华内容 105
关键字:

imwrite函数matlab

matlab 订阅