imread
从图形文件读取图像
语法
描述
例子
读取和显示图像
将索引图像转换为RGB
读取示例索引图像文件中的第一个图像,corn.tif
.
[X,提出]= imread (“corn.tif”);
索引图像X
415 × 312阵列是类型吗uint8
.的colormap提出
256 × 3的矩阵是类型吗双
,因此索引图像中有256种颜色。显示图像。
imshow (X,提出)
将索引图像转换为RGB图像。结果是一个415 × 312 × 3的类型数组双
.
RGB = ind2rgb (X,提出);
检查RGB图像的值是否在[0,1]的范围内。
disp ([' RGB图像的范围是['num2str (min (RGB (:))),”、“num2str (max (RGB (:))),“]”。])
RGB图像的范围为[0.0078431,0.97647]。
在多页TIFF文件中读取特定图像
返回PNG图像的Alpha通道
返回样本图像的alpha通道,peppers.png
.
[X,地图,α]= imread (“peppers.png”);谁α
名称大小字节类属性alpha 0x0 0 double
没有alpha通道,所以α
是空的。
读取TIFF图像的指定区域
读取样本图像的特定像素区域,corn.tif
.
指定“PixelRegion”
参数,使用指示要读取区域边界的向量单元格数组。第一个向量指定要读取的行范围,第二个向量指定要读取的列的范围。
一个= imread (“corn.tif”,“PixelRegion”,{[1,2],[2、5]});
imread
读取第1-2行和第2-5列的图像数据corn.tif
并返回2 × 4数组,一个
.
输入参数
文件名
- - - - - -图形文件名称
特征向量|字符串标量
图形文件的名称,指定为字符向量或字符串标量。
这取决于你文件的位置,文件名
可以变成这些形式之一。
位置 |
形式 |
||||||||
---|---|---|---|---|---|---|---|---|---|
当前文件夹或MATLAB上的文件夹®路径 | 中指定文件的名称 例子: |
||||||||
文件夹中的文件 |
如果文件不在当前文件夹或MATLAB路径上的文件夹中,则指定完整或相对路径名。 例子: 例子: |
||||||||
URL | 如果文件是通过internet URL定位的,那么 例子: |
||||||||
远程位置 |
如果文件存储在远程位置,则
根据地点偏远,
有关更多信息,请参见使用远程数据. 例子: |
有关每种文件类型支持的位深度、压缩方案和颜色空间的信息,请参见算法.
数据类型:字符
|字符串
fmt
- - - - - -图像格式
特征向量|字符串标量
图像格式,指定为字符向量或指示标准文件扩展名的字符串标量。调用imformats
以查看支持的格式及其文件扩展名的列表。
例子:“png”
数据类型:字符
|字符串
idx
- - - - - -图像阅读
整数标量|向量的整数
要读取的图像,指定为整数标量,或对于GIF文件,指定为整数向量。例如,如果idx
是3,那么imread
返回文件中的第三个图像。对于GIF文件,如果idx
是1:5
,然后imread
只返回前5帧。的idx
参数只支持多图像GIF、CUR、ICO和HDF4文件。
当从同一个GIF文件读取多个帧时,指定idx
作为帧的向量或使用“帧”,“所有”
名称-值对的论点。由于GIF文件的结构方式,与调用相比,这些语法提供了更快的性能imread
在一个循环中。
对于HDF4文件,idx
对应于要读取的图像的参考编号。参考编号不一定与文件中图像的顺序对应。您可以使用imfinfo
根据参考编号匹配图像顺序。
例子:3.
数据类型:双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“指数”,5
读取TIFF文件的第五个图像。
帧
- - - - - -帧读
1(默认)|正整数|向量的整数|“所有”
要读取的帧,指定为逗号分隔的一对“帧”
一个正整数,一个整数的向量,或者“所有”
.例如,如果您指定值3,imread
读取文件中的第三帧。如果您指定“所有”
,然后imread
读取所有帧并按它们在文件中出现的顺序返回它们。
例子:“帧”,5
PixelRegion
- - - - - -子图象读
窗体中的单元格数组{行,关口}
子图像要读取,指定为逗号分隔的一对“PixelRegion”
和窗体的单元格数组{行,关口}
.的行
Input指定要读取的行范围。的关口
Input指定要读取的列的范围。这两个行
和关口
必须是包含基于1的索引的双元素向量。例如,PixelRegion, {[1 - 2], [3 - 4]}
读取图像数据中以第1行和第2行以及第3列和第4列为界的子图像。如果“ReductionLevel”
Value大于0,则行
和关口
是子图像的坐标。
例子:PixelRegion, {[100], [500]}
ReductionLevel
- - - - - -降低图像分辨率
0(默认)|非负整数
图像分辨率的缩减,指定为逗号分隔的对,由“ReductionLevel”
和一个非负整数。为减少水平l时,图像分辨率降低了2^l.的指定的分解级别的总数限制了还原级别“WaveletDecompositionLevels”
的输出中imfinfo
函数。
例子:“ReductionLevel”,5
数据类型:单
|双
V79Compatible
- - - - - -兼容MATLAB 7.9 (R2009b)及更早版本
假
(默认)|真正的
与MATLAB 7.9 (R2009b)及更早版本的兼容性,指定为逗号分隔对,由“V79Compatible”
,要么真正的
或假
.如果您指定真正的
,则返回的灰度或RGB图像与以前版本一致imread
(MATLAB 7.9 (R2009b)和更早的版本)。
例子:“V79Compatible”,真的
数据类型:逻辑
写成BackgroundColor
- - - - - -背景颜色
“没有”
|整数|三元整数向量
背景颜色,指定为“没有”
、整数或整数的三元素向量。如果写成BackgroundColor
是“没有”
,然后imread
不执行任何合成。否则,imread
将透明像素与背景颜色混合。
如果输入图像被索引,则的值
写成BackgroundColor
必须是范围内的整数吗(1, P)
,在那里P
是色谱仪的长度。如果输入图像是灰度的,则的值
写成BackgroundColor
必须是范围内的整数吗[0, 1]
.如果输入图像为RGB,则的值
写成BackgroundColor
必须是具有范围内值的三元素向量[0, 1]
.
的默认值。写成BackgroundColor
取决于是否存在透明度
输出参数和图像类型:
如你要求
透明度
参数,然后是的默认值写成BackgroundColor
是“没有”
.如果您没有请求
透明度
输出和PNG文件包含一个背景色块,则该颜色为的默认值写成BackgroundColor
.如果您没有请求
透明度
输出且文件不包含背景色块,则为默认值写成BackgroundColor
是1
对于索引的图像,0
对于灰度图像,和(0 0 0)
用于真彩色(RGB)图像。
指数
- - - - - -图像阅读
1(默认)|正整数
要读取的图像,指定为逗号分隔的一对“指数”
一个正整数。例如,如果的值指数
是3,那么imread
读取文件中的第三个图像。
数据类型:单
|双
信息
- - - - - -图像信息
结构数组
关于图像的信息,指定为逗号分隔的对,由“信息”
和返回的结构数组imfinfo
函数。使用信息
名称-值对参数来提供帮助imread
更快地在多图像TIFF文件中定位图像。
数据类型:结构体
PixelRegion
- - - - - -区域边界
单元阵列
区域边界,指定为逗号分隔的对,由“PixelRegion”
和窗体的单元格数组{行,关口}
.的行
Input指定要读取的行范围。的关口
Input指定要读取的列的范围。行
和关口
必须是基于1的索引的双元素或三元素向量。双元素向量指定要读取的第一行和最后一行或列。例如,PixelRegion, {[1 - 2], [3 - 4]}
读取图像数据中以第1行和第2行以及第3列和第4列为界的区域。
三元素向量必须是这样的形式(开始增量停止)
,在那里开始
是要读的第一行或第一列,增量
是增量值,和停止
要读取的最后一行或最后一列。这个语法允许图像下采样。例如,'PixelRegion',{[1 2 10],[4 3 12]}
读取由第1行和第10行以及第4列和第12列限定的区域,并从垂直方向上的每2个像素和水平方向上的每3个像素采样数据。
例子:PixelRegion, {[100], [500]}
数据类型:细胞
输出参数
一个
——图像数据
数组
图像数据,作为数组返回。
如果文件包含灰度图像,则a是
米
——- - - - - -n
数组中。如果文件包含索引图像,则A是
米
——- - - - - -n
中索引处的颜色对应的索引值数组地图
.如果文件包含一个真彩色图像,那么a是一个
米
——- - - - - -n
3数组。如果文件是包含使用CMYK颜色空间的彩色图像的TIFF文件,则a是
米
——- - - - - -n
4数组。
的类一个
取决于图像格式和图像数据的位深度。有关更多信息,请参见算法
地图
——Colormap
米
3矩阵
中的索引图像数据相关联的色度图一个
,作为米
类的-by-3矩阵双
.
透明度
——透明信息
矩阵
透明度信息,作为矩阵返回。为PNG文件,透明度
是alpha通道,如果存在。如果没有alpha通道,或者指定“写成BackgroundColor”
那么,名称-值对参数透明度
是空的。对于CUR和ICO文件,透明度
是AND掩码。对于游标文件,此掩码有时包含惟一有用的数据。
更多关于
算法
对于大多数图像文件格式,imread
每个颜色平面使用8位或更少位来存储图像像素。这个表列出了返回的图像数组的类,一个
,表示文件格式使用的位深度。
文件中的位深度 |
返回的数组类 |
---|---|
每像素1位 |
|
每个颜色平面2到8位 |
|
每像素9到16位 |
对于16位BMP封装格式(5-6-5),MATLAB返回 |
以下部分提供了有关对特定格式支持的信息,按格式名称的字母顺序列出。
BMP - Windows位图 | JPEG -联合摄影专家组 | PNG -便携式网络图形 |
CUR -光标文件 | jpeg2000 -联合摄影专家组2000 | PPM -便携式像素图 |
GIF -图形交换格式 | PBM -便携式位图 | RAS -太阳光栅 |
分级数据格式 | PCX - Windows画笔 | TIFF -标记图像文件格式 |
ICO -图标文件 | PGM -便携式灰度图 | XWD - X窗口转储 |
BMP -窗户位图
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 没有压缩 | RLE压缩 | 输出类 | 笔记 |
---|---|---|---|---|
1位 | ✓ | - - - - - - | 逻辑 |
|
4位 | ✓ | ✓ | uint8 |
|
8位 | ✓ | ✓ | uint8 |
|
16位 | ✓ | - - - - - - | uint8 |
1样品/像素 |
24位 | ✓ | - - - - - - | uint8 |
3样品/像素 |
32位 | ✓ | - - - - - - | uint8 |
3样品/像素 (1字节填充) |
CUR -光标文件
GIF -图形交换格式
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 没有压缩 | 压缩 | 输出类 |
---|---|---|---|
1位 | ✓ | - - - - - - | 逻辑 |
2位到8位 | ✓ | - - - - - - | uint8 |
分级数据格式
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 光栅图像与色彩图 | 没有色彩图的光栅图像 | 输出类 | 笔记 |
---|---|---|---|---|
8位 | ✓ | ✓ | uint8 |
|
24位 | - - - - - - | ✓ | uint8 |
3样品/像素 |
ICO -图标文件
JPEG -联合摄影专家组
imread
读取任何基线JPEG图像,以及带有一些常用扩展的JPEG图像。有关jpeg2000文件支持的信息,请参见JPEG 2000.
每个样本支持位 | 有损压缩 | 无损压缩 | 输出类 | 笔记 |
---|---|---|---|---|
8位 | ✓ | ✓ | uint8 |
灰度或RGB |
12位 | ✓ | ✓ | uint16 |
灰度或RGB |
16位 | - - - - - - | ✓ | uint16 |
灰度 |
jpeg2000 -联合摄影专家组2000
有关JPEG文件的信息,请参见JPEG.
请注意
不支持索引JPEG 2000图像。对于JP2/JPX文件,只支持与JP2兼容的颜色空间。默认情况下,所有图像通道都按照它们在文件中存储的顺序返回。
每个样本支持位 |
有损压缩 | 无损压缩 | 输出类 | 笔记 |
---|---|---|---|---|
1位 | ✓ | ✓ | 逻辑 |
灰度只 |
2位到8位 | ✓ | ✓ | uint8 或int8 |
灰度 或RGB |
9位到16位 | ✓ | ✓ | uint16 或int16 |
灰度 或RGB |
PBM -便携式位图
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 原始二进制 | ASCII编码(平原) | 输出类 |
---|---|---|---|
1位 | ✓ | ✓ | 逻辑 |
图形文件,窗户画笔
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 输出类 | 笔记 |
---|---|---|
1位 | 逻辑 |
灰度只 |
8位 | uint8 |
灰度或索引 |
24位 | uint8 |
RGB 三个8位/像素样本 |
PGM -便携式灰度图
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 原始二进制 | ASCII编码(平原) | 输出类 | 笔记 |
---|---|---|---|---|
8位 | ✓ | - - - - - - | uint8 |
|
16位 | ✓ | - - - - - - | uint16 |
|
任意的 | - - - - - - | ✓ | 出的8位:uint8 9-bit 16位: uint16 |
值是按比例缩小的 |
PNG -便携式网络图形
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 输出类 | 笔记 |
---|---|---|
1位 | 逻辑 |
灰度 |
2位 | uint8 |
灰度 |
4位 | uint8 |
灰度 |
8位 | uint8 |
灰度或索引 |
16位 | uint16 |
灰度或索引 |
24位 | uint8 |
RGB 三个8位/像素样本。 |
48位 | uint16 |
RGB 三个16位/像素样本。 |
PPM -便携式像素图
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 原始二进制 | ASCII编码(平原) | 输出类 |
---|---|---|---|
最多16位 | ✓ | - - - - - - | uint8 |
任意的 | - - - - - - | ✓ |
RAS -太阳光栅
该表列出了支持的位深度和输出图像数据数组的数据类型。
支持位深 | 输出类 | 笔记 |
---|---|---|
1位 | 逻辑 |
位图 |
8位 | uint8 |
索引 |
24位 | uint8 |
RGB 三个8位/像素样本 |
32位 | uint8 |
RGB与α 四个8位/像素样本 |
Aperio SVS - AperioScanScope虚拟幻灯片
基于tiff的图像文件格式。imread
支持读取未压缩和压缩图像,包括JPEG2000压缩图像。有关更多信息,请参见TIFF -标记图像文件格式.
TIFF -标记图像文件格式
imread
读取TIFF规范或LibTIFF支持的大多数图像。的imread
函数支持以下TIFF功能:
每像素任意数量的样本
CCITT组3和4 FAX, Packbits, JPEG, LZW, Deflate, ThunderScan压缩和未压缩图像
逻辑,灰度,索引颜色,真彩色和高光谱图像
RGB, CMYK, CIELAB, ICCLAB颜色空间。如果彩色图像使用CMYK颜色空间,
一个
是一个米
——- - - - - -n
4数组。要确定使用的颜色空间,请使用imfinfo
的值来获取有关图形文件的信息并查看PhotometricInterpretation
字段。如果文件包含CIELAB颜色数据,imread
将其转换为ICCLAB,然后将其引入MATLAB工作区。这种转换是必要的,因为8位或16位TIFF cielab编码的值使用有符号和无符号数据类型的混合,而这些数据类型不能表示为单个MATLAB数组。数据组织成贴图或扫描线
imread
读取和转换TIFF图像如下:
YCbCr图像转换为RGB色彩空间。
所有灰度图像都被视为黑色=
0
,白色=最大值。1位图像作为类返回
逻辑
.16位浮点图像作为类返回
单
.CIELab图像转换为ICCLab色彩空间。
XWD - X窗口转储
该表列出了XWD文件支持的位深度、压缩和输出类。
支持位深 | ZPixmaps | XYBitmaps | XYPixmaps | 输出类 |
---|---|---|---|---|
1位 | ✓ | - - - - - - | ✓ | 逻辑 |
8位 | ✓ | - - - - - - | - - - - - - | uint8 |
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
该函数只支持读取8位JPEG图像。输入参数
文件名
必须是有效的绝对路径或相对路径。这个函数生成的代码使用预编译的,特定于平台的共享库(图像处理工具箱).
如果在生成代码时禁用运行时错误检查,并随后遇到运行时错误,则会以以下方式之一报告错误:
如果
文件名
不是编译时常量,则返回空矩阵。如果
文件名
是一个编译时常数,一个黑色图像的相同维度文件名
返回。
GPU的代码生成
使用GPU Coder™为NVIDIA GPU生成CUDA®代码。
使用注意事项和限制:
该函数只支持读取8位JPEG图像。输入参数
文件名
必须是有效的绝对路径或相对路径。这个函数生成的代码使用预编译的,特定于平台的共享库(图像处理工具箱).
如果在生成代码时禁用运行时错误检查,并随后遇到运行时错误,则会以以下方式之一报告错误:
如果
文件名
不是编译时常量,则返回空矩阵。如果
文件名
是一个编译时常数,一个黑色图像的相同维度文件名
返回。
线程环境
在后台使用MATLAB®运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
使用注意事项和限制:
imread
是否不支持在运行时读取分级数据格式(HDF)、SVS或TIFF文件imread
在后台使用backgroundPool
或并行计算工具箱™Threadpool
.
有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
之前介绍过的R2006aR2021b:JPEG 2000图像的像素差异
R2021b中的JPEG 2000图像与以前版本的MATLAB可能存在像素值差异。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。