matlab中imread 从图形文件读取图像
来源:https://ww2.mathworks.cn/help/matlab/ref/imread.html?searchHighlight=imread&s_tid=doc_srchtitle
imread
从图形文件读取图像
语法
说明
使用一个或多个名称-值对组参数以及先前语法中的任何输入参数来指定格式特定的选项。A = imread(___,Name,Value)
[ 另外还返回图像透明度。此语法仅适用于 PNG、CUR 和 ICO 文件。对于 PNG 文件,如果存在 alpha 通道,A,map,transparency] = imread(___)transparency 会返回该 alpha 通道。对于 CUR 和 ICO 文件,它为 AND(不透明度)掩码。
示例
读取和显示图像
将索引图像转换成 RGB
读取索引图像示例文件 corn.tif 中的第一幅图像。
[X,cmap] = imread('corn.tif');
索引图像 X 是 uint8 类型的 415×312 数组。颜色图 cmap 是 double 类型的 256×3 矩阵,因此索引图像中有 256 种颜色。显示图像。
imshow(X,cmap)

将索引图像转换为 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 文件中的特定图像
返回 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 路径上的文件夹 |
指定 示例: |
||||||||
|
文件夹中的文件 |
如果该文件不在当前文件夹或 MATLAB 路径下的文件夹中,则指定完整或相对路径名。 示例: 示例: |
||||||||
| URL |
如果文件是通过 Internet URL 定位的,则 示例: |
||||||||
|
远程位置 |
如果文件存储在远程位置,则
根据您的远程位置,
有关详细信息,请参阅处理远程数据。 示例: |
有关每种文件类型支持的位深度、压缩方案和颜色空间的信息,请参阅算法。
数据类型: char | string
fmt - 图像格式
字符向量 | 字符串标量
图像格式,指定为指示标准文件扩展名的字符向量或字符串标量。调用 imformats 可查看支持的格式及其文件扩展名列表。
示例: 'png'
数据类型: char | string
idx - 要读取的图像
整数标量 | 整数向量
要读取的图像,指定为整数标量或整数向量(对于 GIF 文件)。例如,如果 idx 为 3,则 imread 将返回文件中的第三个图像。对于 GIF 文件,如果 idx 为 1: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 输入指定要读取的列范围。rows 和 cols 都必须为包含以 1 开始的索引的二元素向量。例如,'PixelRegion',{[1 2],[3 4]} 读取图像数据的第 1 和第 2 行以及第 3 和第 4 列界定的子图像。如果 'ReductionLevel' 值大于 0,则 rows 和 cols 为子图像的坐标。
示例: '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' 以及 true 或 false 的逗号分隔对组。如果您指定 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 输入指定要读取的列范围。rows 和 cols 必须为二元素或三元素的从 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 掩码。对于光标文件,该掩码有时仅包含有用的数据。
详细信息
算法
对于大多数图像文件格式,imread 对每个颜色平面使用 8 位或更少位来存储图像像素。此表列出了返回的图像数组 A 与文件格式使用的位深对应的类。
|
文件中的位深 |
|
|---|---|
|
每像素 1 位 |
|
|
每颜色平面 2 到 8 位 |
|
|
每像素 9 位到 16 位 |
对于 16 位的 BMP 压缩格式 (5-6-5),MATLAB 返回 |
以下部分提供了有关特定格式的支持信息,各格式按名称的字母顺序列出。
BMP - Windows 位图
此表列出了输出图像数据数组支持的位深和数据类型。
| 支持的位深 | 无压缩 | RLE 压缩 | 输出类 | 注释 |
|---|---|---|---|---|
| 1 位 | ✓ | – | logical |
|
| 4 位 | ✓ | ✓ | uint8 |
|
| 8 位 | ✓ | ✓ | uint8 |
|
| 16 位 | ✓ | – | uint8 |
1 个样本/像素 |
| 24 位 | ✓ | – | uint8 |
3 个样本/像素 |
| 32 位 | ✓ | – | uint8 |
3 个样本/像素 (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 位 | – | ✓ | uint8 |
3 个样本/像素 |
ICO - 图标文件
请参阅CUR - 光标文件
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 位 | ✓ | ✓ | uint8 或 int8 |
灰度 或 RGB |
| 9 位到 16 位 | ✓ | ✓ | uint16 或 int16 |
灰度 或 RGB |
PBM - 可移植位图
此表列出了输出图像数据数组支持的位深和数据类型。
| 支持的位深 | 原始二进制 | ASCII(普通)编码 | 输出类 |
|---|---|---|---|
| 1 位 | ✓ | ✓ | logical |
PCX - Windows 画笔
此表列出了输出图像数据数组支持的位深和数据类型。
| 支持的位深 | 输出类 | 注释 |
|---|---|---|
| 1 位 | logical |
仅限灰度 |
| 8 位 | uint8 |
灰度或索引图像 |
| 24 位 | uint8 |
RGB 3 个 8 位样本/像素 |
PGM - 可移植灰度图
此表列出了输出图像数据数组支持的位深和数据类型。
| 支持的位深 | 原始二进制 | ASCII(普通)编码 | 输出类 | 注释 |
|---|---|---|---|---|
| 8 位 | ✓ | – | uint8 |
|
| 16 位 | ✓ | – | uint16 |
|
| 任意 | – | ✓ | 1 位到 8 位:uint89 位到 16 位: uint16 |
值被缩放 |
PNG - 可移植网络图形
此表列出了输出图像数据数组支持的位深和数据类型。
| 支持的位深 | 输出类 | 注释 |
|---|---|---|
| 1 位 | logical |
灰度 |
| 2 位 | uint8 |
灰度 |
| 4 位 | uint8 |
灰度 |
| 8 位 | uint8 |
灰度或索引图像 |
| 16 位 | uint16 |
灰度或索引图像 |
| 24 位 | uint8 |
RGB 3 个 8 位样本/像素。 |
| 48 位 | uint16 |
RGB 3 个 16 位样本/像素。 |
PPM - 可移植像素图
此表列出了输出图像数据数组支持的位深和数据类型。
| 支持的位深 | 原始二进制 | ASCII(普通)编码 | 输出类 |
|---|---|---|---|
| 最多 16 位 | ✓ | – | uint8 |
| 任意 | – | ✓ |
RAS - Sun 光栅
此表列出了输出图像数据数组支持的位深和数据类型。
| 支持的位深 | 输出类 | 注释 |
|---|---|---|
| 1 位 | logical |
位图 |
| 8 位 | uint8 |
索引 |
| 24 位 | uint8 |
RGB 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 颜色空间,则
A为m×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 文件支持的位深、压缩和输出类。
| 支持的位深 | ZPixmaps | XYBitmaps | XYPixmaps | 输出类 |
|---|---|---|---|---|
| 1 位 | ✓ | – | ✓ | logical |
| 8 位 | ✓ | – | – | uint8 |
扩展功能
C/C++ 代码生成
使用 MATLAB Coder 生成 C 代码和 C++ 代码。
用法说明和限制:
仅支持读取 8 位 JPEG 图像。输入参数
filename必须为有效的绝对路径或相对路径。此函数生成的代码使用预编译的、特定于平台的共享库 (Image Processing Toolbox)。
在 MATLAB Function 模块中,输入参数
filename必须为编译时常量。
在 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)
matlab中imread 从图形文件读取图像的更多相关文章
- matlab中imfinfo 有关图形文件的信息
来源:https://ww2.mathworks.cn/help/matlab/ref/imfinfo.html?searchHighlight=imfinfo&s_tid=doc_srcht ...
- Matlab中imread函数使用报错“不应为MATLAB 表达式”分析
问题描述: 使用imread读取特定路径下的文件时,会提示出错! >> mytest错误: 文件:mytest.m 行:10 列:87不应为 MATLAB 表达式. 出错行: Images ...
- 小小知识点(十三)——MATLAB中怎么保存和读取.mat文件
1.存储 利用save函数 save(filename) %将当前工作区中的所有变量保存在 MATLAB® 格式的二进制文件(MAT 文件)filename 中. save(filename,var ...
- Matlab中如何用命令方式保存图像?
命令很简单,例如下面这个代码将当前图像保存到F1.emf文件中,保存格式为emf saveas(gcf,'F.emf','emf'); 当然了,也可以保存为jpg格式,修改为: saveas(gcf, ...
- MATLAB中TXT数据文件读取并写入元胞数组的方法与步骤
一. TXT数据文件读取 Data = load('train.txt'); %简单的文件读取,这时在工作区可以看到导入的大数据变量Data 二.大数据变量Data装入元胞数组中 D = cell ...
- opencv学习之读取图像-imread函数
序 想要完整全面地学习opencv,仅凭阅读samples的示例源码是不够的.毕竟opencv是一个拥有非常多函数的程序库,所以在每学习一个函数时,芒果觉得有必要记录下来,分享给有需要的同学.于是,就 ...
- OpenCV2:第三章 读取图像
一.简介 将图像文件读入内存,可以用cv::imread()函数 二.读取图像 Mat imread(const string& filename,int flags=1); Mat: 如果读 ...
- MATLAB中图像的基本操作
MATLAB中图像的基本操作 1.读取.显示图片 MATLAB中提供了immread()与imshow()函数读取和显示图片.其中读取函数imread()原型: imread: A = imread( ...
- matlab中如何将视频保存成图像
利用MATLAB将视频的每一帧保存成一幅图像,并自动命名.本文方法简单,容易学习. 首先,读入视频.代码如下: mov = VideoReader('xxxxxx.avi'); % 将xxxxxx.a ...
随机推荐
- Selenium使用cookis登录,并临时将cookis存储在本地【shelve数据库】
Python中自带了一个shelve库,可以帮助我们存储一些少量的数据. shelve数据库类似redis,是以[键值对]的方式进行数据的存储,有点像"字典"这种数据结构,存储在本 ...
- Auto Generate Reflection Information for C++
https://www.reddit.com/r/gamedev/comments/3lh0ba/using_clang_to_generate_c_reflection_data/ https:// ...
- NutUI 视频组件开发心得
引子 说到在项目中引入一个视频,我们肯定会想到 HTML5 为我们提供的 Video 标签,它为我们提供了许多属性和方法,使用起来很方便,当然直接使用也会遇到各种兼容问题,在最初学习 Video 标签 ...
- 1初始化项目并且引入scss
vue.vonfig.js 这个文件引入mian.scss css: { // 是否使用css分离插件 ExtractTextPlugin extract: true, // 开启 CSS sourc ...
- 小程序开发-组件navigator导航篇
navigator 页面链接 navigator的open-type属性 可选值 navigate.redirect.switchTab,对应于wx.navigateTo.wx.redirectTo. ...
- 使用java8的方法引用替换硬编码
背景 想必大家在项目中都有遇到把一个列表的多个字段累加求和的情况,也就是一个列表的总计.有的童鞋问,这个不是给前端做的吗?后端不是只需要把列表返回就行了嘛...没错,我也是这样想的,但是在一场和前端的 ...
- 为商务办公赋能,TOM商务邮箱,塑造职场新形象
转眼已至2020年,互联网的这10年发生了翻天覆地的改变.短视频红利崛起.人脸识别支付.AI智能机器人对话...很多产品从默默无闻到一夜崛起.而对于商务邮箱领域,邮箱已成为一种习惯,却往往忽略了它的点 ...
- JS中条件判断语句
用pycharm敲代码时,在.js文件中敲,敲完之后复制代码到浏览器的console中去回车执行 1.if( ){} 2.switch(a){} 3.for循环 循环列表 循环字典 循环字符串 另外 ...
- [LeetCode]230. 二叉搜索树中第K小的元素(BST)(中序遍历)、530. 二叉搜索树的最小绝对差(BST)(中序遍历)
题目230. 二叉搜索树中第K小的元素 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 题解 中序遍历BST,得到有序序列,返回有序序列的k-1号元素. 代 ...
- [剑指Offer]17-打印从1到最大的n位数(递归)
题目 如题,输入n,则从1打印至99. 题解 考虑到n比较大会有大数问题,所以使用字符数组存储数. 由题可用递归求n位全排列,即为所得. 具体地,用临时字符数组用来存答案,每次递归填好一位,都填好后输 ...
