matlab中imread 从图形文件读取图像

摘要:
如果filename为多图像文件,则imread读取该文件中的第一个图像。如果imread找不到具有filename指定的名称的文件,则会查找名为filename.fmt的文件。示例[A,map,transparency]=imread另外还返回图像透明度。对于PNG文件,如果存在alpha通道,transparency会返回该alpha通道。[X,cmap]=imread;索引图像X是uint8类型的415×312数组。A=imread;imread读取corn.tif中1–2行和2–5列的图像数据,并返回2×4数组A。例如,如果idx为3,则imread将返回文件中的第三个图像。对于GIF文件,如果idx为1:5,则imread仅返回前五个帧。

来源:https://ww2.mathworks.cn/help/matlab/ref/imread.html?searchHighlight=imread&s_tid=doc_srchtitle

imread

从图形文件读取图像

全页折叠

语法

说明

示例

A = imread(filename)filename 指定的文件读取图像,并从文件内容推断出其格式。如果 filename 为多图像文件,则 imread 读取该文件中的第一个图像。

A = imread(filename,fmt) 另外还指定具有 fmt 指示的标准文件扩展名的文件的格式。如果 imread 找不到具有 filename 指定的名称的文件,则会查找名为 filename.fmt 的文件。

A = imread(___,idx) 从多图像文件读取指定的图像。此语法仅适用于 GIF、CUR、ICO、TIF 和 HDF4 文件。您必须指定 filename 输入,也可以指定 fmt

示例

A = imread(___,Name,Value) 使用一个或多个名称-值对组参数以及先前语法中的任何输入参数来指定格式特定的选项。

示例

[A,map] = imread(___)filename 中的索引图像读入 A,并将其关联的颜色图读入 map。图像文件中的颜色图值会自动重新调整到范围 [0,1] 中。

示例

[A,map,transparency] = imread(___) 另外还返回图像透明度。此语法仅适用于 PNG、CUR 和 ICO 文件。对于 PNG 文件,如果存在 alpha 通道,transparency 会返回该 alpha 通道。对于 CUR 和 ICO 文件,它为 AND(不透明度)掩码。

示例

全部折叠

读取和显示图像

读取示例图。

A = imread('ngc6543a.jpg');

imread 返回 650×600×3 数组 A

显示图像。

image(A)

matlab中imread 从图形文件读取图像第1张

将索引图像转换成 RGB

读取索引图像示例文件 corn.tif 中的第一幅图像。

[X,cmap] = imread('corn.tif');

索引图像 Xuint8 类型的 415×312 数组。颜色图 cmapdouble 类型的 256×3 矩阵,因此索引图像中有 256 种颜色。显示图像。

imshow(X,cmap)

matlab中imread 从图形文件读取图像第2张

将索引图像转换为 RGB 图像。结果为一个 double 类型的 415×312×3 数组。

RGB = ind2rgb(X,cmap);

检查 RGB 图像的值是否在 [0, 1] 范围内。

disp(['Range of RGB image is [',num2str(min(RGB(:))),', ',num2str(max(RGB(:))),'].'])
Range of RGB image is [0.0078431, 0.97647].

读取多页 TIFF 文件中的特定图像

读取示例文件 corn.tif 中的第三幅图像。

[X,map] = imread('corn.tif',3);

返回 PNG 图像的 Alpha 通道

返回示例图 peppers.png 的 Alpha 通道。

[X,map,alpha] = imread('peppers.png');
whos alpha
  Name       Size            Bytes  Class     Attributes

  alpha      0x0                 0  double              

没有提供 Alpha 通道,因此 alpha 为空。

读取 TIFF 图像的指定区域

读取示例图 corn.tif 像素的特定区域。

用表示要读取的区域边界的向量元胞数组指定 'PixelRegion' 参数。第一向量指定要读取的行范围,第二向量指定要读取的列范围。

A = imread('corn.tif','PixelRegion',{[1,2],[2,5]});

imread 读取 corn.tif 中 1–2 行和 2–5 列的图像数据,并返回 2×4 数组 A

输入参数

全部折叠

filename - 图形文件名
字符向量 | 字符串标量

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

根据文件的位置,filename 可以采用下列形式之一。

位置

形式

当前文件夹或 MATLAB® 路径上的文件夹

指定 filename 中文件的名称。

示例:'myImage.jpg'

文件夹中的文件

如果该文件不在当前文件夹或 MATLAB 路径下的文件夹中,则指定完整或相对路径名。

示例:'C:myFoldermyImage.ext'

示例:'imgDirmyImage.ext'

URL

如果文件是通过 Internet URL 定位的,则 filename 必须包含协议类型,例如 http://

示例:'http://hostname/path_to_file/my_image.jpg'

远程位置

如果文件存储在远程位置,则 filename 必须包含文件的完整路径,指定为以下形式的国际化资源标识符 (IRI):

scheme_name://path_to_file/my_file.ext

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

远程位置scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs
HDFS™hdfs

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

示例:'s3://bucketname/path_to_file/my_image.jpg'

有关每种文件类型支持的位深度、压缩方案和颜色空间的信息,请参阅算法

数据类型: char | string

fmt - 图像格式
字符向量 | 字符串标量

图像格式,指定为指示标准文件扩展名的字符向量或字符串标量。调用 imformats 可查看支持的格式及其文件扩展名列表。

示例: 'png'

数据类型: char | string

idx - 要读取的图像
整数标量 | 整数向量

要读取的图像,指定为整数标量或整数向量(对于 GIF 文件)。例如,如果 idx 为 3,则 imread 将返回文件中的第三个图像。对于 GIF 文件,如果 idx1:5,则 imread 仅返回前五个帧。idx 参数仅支持用于多图像 GIF、CUR、ICO 和 HDF4 文件。

从同一 GIF 文件读取多个帧时,请将 idx 指定为帧向量或使用 'Frames','all' 名称-值对组参数。由于构造 GIF 文件的方式,这些语法可提供比循环调用 imread 更快的性能。

对应 HDF4 文件,idx 对应于要读取的图像的引用编号。引用编号不一定与文件中图像的顺序对应。您可以使用 imfinfo 将图像顺序与引用编号进行匹配。

示例: 3

数据类型: double

名称-值对组参数

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

示例: 'Index',5 读取 TIFF 文件的第五个图像。

GIF 文件

全部折叠

'Frames' - 要读取的帧
1 (默认) | 正整数 | 整数向量 | 'all'

要读取的帧,指定为逗号分隔的对组,其中包含 'Frames' 和一个正整数、整数向量或 'all'。例如,如果指定值 3,imread 将读取文件中的第三个帧。如果您指定 'all',则 imread 读取所有帧并按其在文件中显示的顺序返回这些帧。

示例: 'frames',5

JPEG 2000 文件

全部折叠

'PixelRegion' - 要读取的子图像
{rows,cols} 形式的元胞数组

要读取的子图像,指定为包含 'PixelRegion'{rows,cols} 形式的元胞数组的逗号分隔对组。rows 输入指定要读取的行范围。cols 输入指定要读取的列范围。rowscols 都必须为包含以 1 开始的索引的二元素向量。例如,'PixelRegion',{[1 2],[3 4]} 读取图像数据的第 1 和第 2 行以及第 3 和第 4 列界定的子图像。如果 'ReductionLevel' 值大于 0,则 rowscols 为子图像的坐标。

示例: 'PixelRegion',{[1 100],[4 500]}

'ReductionLevel' - 降低图像分辨率
0 (默认) | 非负整数

降低的图像分辨率,指定为以逗号分隔的对组,包含 'ReductionLevel' 和一个非负整数。对于约简级别 L,图像分辨率按因子 2^L 进行约简。约简级别受限于 imfinfo 函数输出中的 'WaveletDecompositionLevels' 字段指定的分解级别总数。

示例: 'ReductionLevel',5

数据类型: single | double

'V79Compatible' - 与 MATLAB 7.9 (R2009b) 及更早版本的兼容性
false (默认) | true

与 MATLAB 7.9 (R2009b) 及更早版本的兼容性,指定为包含 'V79Compatible' 以及 truefalse 的逗号分隔对组。如果您指定 true,则返回的灰度或 RGB 图像与之前版本的 imread(MATLAB 7.9 (R2009b) 及更早版本)一致。

示例: 'V79Compatible',true

数据类型: logical

PNG 文件

全部折叠

'BackgroundColor' - 背景色
'none' | 整数 | 3 元素整数向量

背景色,指定为 'none'、整数或三元素整数向量。如果 BackgroundColor'none',则 imread 不执行任何组合操作。否则,imread 将透明像素与背景色混合。

  • 如果输入图像为索引图像,BackgroundColor 的值必须为 [1,P] 范围中的一个整数,其中 P 是颜色图长度。

  • 如果输入图像为灰度,则 BackgroundColor 的值必须为 [0,1] 范围中的整数。

  • 如果输入图像为 RGB,则 BackgroundColor 的值必须为三元素向量,其中的值介于 [0,1] 范围内。

BackgroundColor 的默认值取决于 transparency 输出参数和图像类型的存在性:

  • 如果您请求 transparency 输出参数,则 BackgroundColor 的默认值为 'none'

  • 如果您不请求 transparency 输出且 PNG 文件包含背景色块,则该颜色是 BackgroundColor 的默认值。

  • 如果不请求 transparency 输出并且文件不包含背景色块,则对于索引图像,BackgroundColor 的默认值为 1;对于灰度图像,默认值为 0;对于真彩色 (RGB) 图像,默认值为 [0 0 0]

TIFF 文件

全部折叠

'Index' - 要读取的图像
1 (默认) | 正整数

要读取的图像,指定为包含 'Index' 和正整数的逗号分隔对组。例如,如果 Index 的值为 3,则 imread 读取文件中的第三个图像。

数据类型: single | double

'Info' - 图像的相关信息
结构体数组

图像的相关信息,指定为包含 'Info'imfinfo 函数返回的结构体数组的逗号分隔对组。使用 Info 名称-值对组参数可帮助 imread 更快地找到多图像 TIFF 文件中的图像。

数据类型: struct

'PixelRegion' - 区域边界
元胞数组

区域边界,指定为包含 'PixelRegion' 和一个 {rows,cols} 形式的元胞数组的逗号分隔对组。rows 输入指定要读取的行范围。cols 输入指定要读取的列范围。rowscols 必须为二元素或三元素的从 1 开始的索引向量。二元素向量指定要读取的第一行和最后一行或第一列和最后一列。例如,'PixelRegion',{[1 2],[3 4]} 读取图像数据的第 1 和第 2 行以及第 3 和第 4 列界定的区域。

三元素向量的形式必须为 [start increment stop],其中 start 是要读取的第一行或第一列,increment 是增量值,stop 是要读取的最后一行或最后一列。此语法支持图像减采样。例如,'PixelRegion',{[1 2 10],[4 3 12]} 读取由第 1 和第 10 行以及第 4 和第 12 列界定的区域,在垂直方向每隔 2 个像素进行数据采样,在水平方向每隔 3 个像素进行数据抽样。

示例: 'PixelRegion',{[1 100],[4 500]}

数据类型: cell

输出参数

全部折叠

A - 图像数据
数组

图像数据,以数组的形式返回。

  • 如果文件包含灰度图像,则 A 为 m×n 数组。

  • 如果文件包含索引图像,则 A 为 m×n 数组,其中的索引值对应于 map 中该索引处的颜色。

  • 如果文件包含真彩色图像,则 A 为 m×n×3 数组。

  • 如果文件是一个包含使用 CMYK 颜色空间的彩色图像的 TIFF 文件,则 A 为 m×n×4 数组。

A 的类取决于图像数据的图像格式和位深。有关详细信息,请参阅 算法

map - Colormap
m×3 的矩阵

A 中的索引图像数据关联的颜色图,以 m×3 的 double 类矩阵形式返回。

transparency - 透明度信息
矩阵

以矩阵形式返回的透明度信息。对于 PNG 文件,transparency 为 alpha 通道(若存在)。如果不存在 alpha 通道,或者如果指定了 'BackgroundColor' 名称-值对组参数,则 transparency 为空。对于 CUR 和 ICO 文件,transparency 是 AND 掩码。对于光标文件,该掩码有时仅包含有用的数据。

详细信息

全部折叠

位深

位深是指用于表示每个图像像素的位数。

位深是通过将每样本位数与每像素样本数相乘而得。因此,使用每个颜色分量(或样本)8 位和每像素三个样本的格式的位深为 24。有时,与位深关联的样本大小可能不确定。例如,48 位的位深是表示 6 个 8 位样本、4 个 12 位样本,还是表示 3 个 16 位样本?请参阅 算法 了解样本大小信息以避免这种多义性。

算法

全部折叠

对于大多数图像文件格式,imread 对每个颜色平面使用 8 位或更少位来存储图像像素。此表列出了返回的图像数组 A 与文件格式使用的位深对应的类。

文件中的位深

imread 返回的数组的类

每像素 1 位

logical

每颜色平面 2 到 8 位

uint8

每像素 9 位到 16 位

uint16BMPJPEGPNGTIFF

对于 16 位的 BMP 压缩格式 (5-6-5),MATLAB 返回 uint8

以下部分提供了有关特定格式的支持信息,各格式按名称的字母顺序列出。

BMP - Windows 位图

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深无压缩RLE 压缩输出类注释
1 位logical
4 位uint8
8 位uint8
16 位uint81 个样本/像素
24 位uint83 个样本/像素
32 位uint83 个样本/像素
(1 个字节填充)

CUR - 光标文件

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深无压缩压缩输出类
1 位logical
4 位uint8
8 位uint8

注意

默认情况下,Microsoft® Windows® 光标为 32×32 像素。因为 MATLAB 指针必须为 16×16,所以您可能需要缩放图像。如果您有 Image Processing Toolbox™,则可以使用 imresize 函数。

GIF - 图形交换格式

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深无压缩压缩输出类
1 位logical
2 位到 8 位uint8

HDF4 - 分层数据格式

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深带有颜色图的光栅图像不带颜色图的光栅图像输出类注释
8 位uint8
24 位uint83 个样本/像素

ICO - 图标文件

JPEG - 联合图像专家组

imread 读取任何基准 JPEG 图像以及带有某些常用扩展名的 JPEG 图像。有关 JPEG 2000 文件支持的信息,请参阅 JPEG 2000

支持的采样位数有损压缩无损压缩输出类注释
8 位uint8灰度或 RGB
12 位uint16灰度或 RGB
16 位uint16灰度

JPEG 2000 - 联合图像专家组 2000

有关 JPEG 文件的信息,请参阅 JPEG

注意

不支持 JPEG 2000 索引图像。JP2/JPX 文件仅支持 JP2 兼容颜色空间。默认情况下,将按图像在文件中的存储顺序返回所有图像通道。

支持的采样位数

有损压缩无损压缩输出类注释
1 位logical仅限灰度
2 位到 8 位uint8int8灰度
或 RGB
9 位到 16 位uint16int16灰度
或 RGB

PBM - 可移植位图

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深原始二进制ASCII(普通)编码输出类
1 位logical

PCX - Windows 画笔

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深输出类注释
1 位logical仅限灰度
8 位uint8灰度或索引图像
24 位uint8RGB
3 个 8 位样本/像素

PGM - 可移植灰度图

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深原始二进制ASCII(普通)编码输出类注释
8 位uint8
16 位uint16
任意1 位到 8 位:uint8
9 位到 16 位:uint16
值被缩放

PNG - 可移植网络图形

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深输出类注释
1 位logical灰度
2 位uint8灰度
4 位uint8灰度
8 位uint8灰度或索引图像
16 位uint16灰度或索引图像
24 位uint8RGB
3 个 8 位样本/像素。
48 位uint16RGB
3 个 16 位样本/像素。

PPM - 可移植像素图

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深原始二进制ASCII(普通)编码输出类
最多 16 位uint8
任意

RAS - Sun 光栅

此表列出了输出图像数据数组支持的位深和数据类型。

支持的位深输出类注释
1 位logical位图
8 位uint8索引
24 位uint8RGB
3 个 8 位样本/像素
32 位uint8带有 Alpha 的 RGB
4 个 8 位样本/像素

TIFF - 标记图像文件格式

imread 读取 TIFF 规范或 LibTIFF 支持的大多数图像。imread 函数支持以下 TIFF 功能:

  • 每像素任意个样本

  • CCITT group 3 和 4 FAX、Packbits、JPEG、LZW、Deflate、ThunderScan 压缩和未压缩的图像

  • 逻辑、灰度、索引颜色、真彩色和高光谱图像

  • RGB、CMYK、CIELAB、ICCLAB 颜色空间。如果彩色图像使用 CMYK 颜色空间,则 Am×n×4 数组。要确定所使用的颜色空间,请使用 imfinfo 获取有关图形文件的信息并查看 PhotometricInterpretation 字段的值。如果文件包含 CIELAB 颜色数据,则 imread 将其转换为 ICCLAB,然后将其移到 MATLAB 工作区中。由于 8 位或 16 位 TIFF CIELAB 编码值混合使用有符号和无符号数据类型,而这两种数据类型无法表示为单个 MATLAB 数组,因此需要进行此转换。

  • 数据组成图块或扫描线

imread 按如下方式读取并转换 TIFF 图像:

  • YCbCr 图像转换为 RGB 颜色空间。

  • 所有灰度图像都按“黑色 = 0”、“白色 = 最大值”进行读取。

  • 1 位图像以 logical 类形式返回。

  • 16 位浮点图像以类 single 形式返回。

  • CIELab 图像转换为 ICCLab 颜色空间。

如需版权信息,请打开 libtiffcopyright.txt 文件。

XWD - X 窗口转储

此表列出了 XWD 文件支持的位深、压缩和输出类。

支持的位深ZPixmapsXYBitmapsXYPixmaps输出类
1 位logical
8 位uint8

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

用法说明和限制:

  • 仅支持读取 8 位 JPEG 图像。输入参数 filename 必须为有效的绝对路径或相对路径。

  • 此函数生成的代码使用预编译的、特定于平台的共享库 (Image Processing Toolbox)。

  • MATLAB Function 模块中,输入参数 filename 必须为编译时常量。

另请参阅

fread | image | imfinfo | imformats | imwrite | ind2rgb

在 R2006a 之前推出

Open Example (zh_CN)

A modified version of this example exists on your system. Do you want to open this version instead? (zh_CN)

No, overwrite the modified version (zh_CN)Yes (zh_CN)

免责声明:文章转载自《matlab中imread 从图形文件读取图像》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇@Transactional注解失效前端规范标准-CSS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JS常用知识点(一)

1.js数据类型   基本类型:String、Number、boolean、null、undefined、Symbol   引用类型:Object   null和undefined的区别:undefined表示定义但未赋值。null表示定义并赋值,但值为null,可用于对象的初始化或销毁。   Symbol表示独一无二的值,最大的用法是用来定义对象的唯一属...

UiPath Level 1-Lesson 3. Data Manipulation

学习大纲 如何拆分字符串 如何改变部分字符串的格式 如何在表格中根据条件选中特定的行 1. 标量型变量,集合,表格 活动的属性都有预定义的数据类型。鼠标悬停在属性面板的某个属性上,就会出现相应的提示。 使用右键菜单或Ctrl+K在属性栏创建的变量,会直接设置为属性预定义的类型。 标量型变量 (Scalar Variables):一个单独的固定类...

CentOS terminal 安装 matlab(mode=silent)

1. 下载matlab for Unix 2014 ,需要crack文件 2. 挂载iso文件, mount -o loop,ro Mathworks.Matlab.R2014a.iso /media 3. 将crack中的install.jar 覆盖/media/java/jar下面的install.jar,这步骤必须正确完成 sudo cp Crack...

如何在 Matlab 中绘制带箭头的坐标系

如何在 Matlab 中绘制带箭头的坐标系 如何在 Matlab 中绘制带箭头的坐标系 实现原理 演示效果 完整代码 实现原理 使用 matlab 的绘制函数时,默认设置为一个方框形的坐标系, 图1 如果想要绘制的如下图所示中的带箭头的坐标系,需要如何实现呢? 图2 方法一:通过设置 axis 对象 的属性来调整坐标轴,参考代码如下: % 通过...

C# 数据类型

C#的数据类型可以分为3类:数值类型,引用类型,指针类型.指针类型仅在不安全代码中使用.值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型.引用类型包括类类型,接口类型,代表类型和数组类型.值类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中.对于引用类型的变量,完全有可能让两个不同的变量引用同一...

标准C程序设计七---32

Linux应用 编程深入 语言编程标准C程序设计七---经典C11程序设计以下内容为阅读:《标准C程序设计》(第7版) 作者:E. Balagurusamy(印), 李周芳译 清华大学出版社 2017.7《21天学通C语言》(第7版) 作者:Bradley Jones Peter Aitken Dean Miller(美), 姜佑译 人民邮电出版社 201...