Matlab函数分析:imread从图形文件读取图像
Matlab函数分析:imread从图形文件读取图像
运行环境:Matlab
1、函数语法说明
1.1 语法
A = imread(filename)
:从filename
指定的文件读取图像,并从文件内容推断出其格式。如果filename
为多图像文件,则imread
读取该文件中的第一个图像。A = imread(filename, fmt)
:另外还指定具有fmt
指示的标准文件扩展名的文件的格式。如果imread
找不到具有filename
指定的名称的文件,则会查找名为filename.fmt
的文件。[A, map] = imread(___)
:将filename
中的索引图像读入A
,并将其关联的颜色图读入map
。图像文件中的颜色图值会自动重新调整到范围[0,1]
中。[A, map, transparency] = imread(___)
:另外还返回图像透明度。此语法仅适用于PNG、CUR和ICO文件。对于PNG文件,如果存在alpha通道,transparency
会返回该alpha通道。对于CUR和ICO文件,它为AND(不透明度)掩码。
1.2 输入参数
filename
图形文件的名称,指定为字符向量或字符串标量。
根据文件的位置,
filename
可以采用下列形式之一:当前文件夹或MATLAB路径上的文件夹:指定
filename
中文件的名称。示例:'myImage.jpg'文件夹中的文件:如果该文件不在当前文件夹或MATLAB路径下的文件夹中,则指定完整或相对路径名。示例:'C:\myFolder\myImage.ext'示例:'\imgDir\myImage.ext'
URL:如果文件是通过Internet URL定位的,则
filename
必须包含协议类型,例如http://。示例:'http://hostname/path_to_file/my_image.jpg'
fmt
图像格式,指定为指示标准文件扩展名的字符向量或字符串标量。调用
imformats
可查看支持的格式及其文件扩展名列表。示例:'png'
1.3 输出参量
A
图像数据,以数组的形式返回。
如果文件包含灰度图像,则A为
m×n
数组。如果文件包含索引图像,则A为
m×n
数组,其中的索引值对应于map
中该索引处的颜色。如果文件包含真彩色图像,则A为
m×n×3
数组。如果文件是一个包含使用CMYK颜色空间的彩色图像的TIFF文件,则A为
m×n×4
数组。
map
- 与A中的索引图像数据关联的颜色图,以
m×3
的double
类矩阵形式返回。
transparency
- 以矩阵形式返回的透明度信息。对于PNG文件,
transparency
为alpha通道(若存在)。如果不存在alpha通道,或者如果指定了'BackgroundColor'
名称-值对组参量,则transparency
为空。对于CUR和ICO文件,transparency
是AND掩码。对于光标文件,该掩码有时仅包含有用的数据。
2、示例
2.1 读取和显示图像
读取示例图。
A = imread('ngc6543a.jpg');
imread
返回650×600×3
数组A。
显示图像。
image(A)
2.1 将索引图像转换成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].
2.2 读取多页TIFF文件中的特定图像
读取示例文件corn.tif
中的第三幅图像。
[X, map] = imread('corn.tif', 3);
2.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
为空。
2.4 读取TIFF图像的指定区域
读取示例图corn.tif
像素的特定区域。
用表示要读取的区域边界的向量元胞数组指定'PixelRegion'
参数。第一向量指定要读取的行范围,第二向量指定要读取的列范围。
A = imread('corn.tif', 'PixelRegion', {[1, 2], [2, 5]});
imread
读取corn.tif
中1-2行和2-5列的图像数据,并返回2×4
数组A。
tips:所读取的文件名应该放在当前的文件路径下,不然送你一片红