image
从数组显示图像
语法
说明
image(
会将数组 C
)C
中的数据显示为图像。C
的每个元素指定图像的 1 个像素的颜色。生成的图像是一个 m
×n
像素网格,其中 m
和 n
分别是 C
中的行数和列数。这些元素的行索引和列索引确定了对应像素的中心。
image('CData',
将图像添加到当前坐标区中而不替换现有绘图。此语法是 C
)image(C)
的低级版本。有关详细信息,请参阅图像的高级与低级版本。
image(___,
使用一个或多个名称-值对组参量指定图像属性。您可以使用上述语法中的任意输入参量组合指定图像属性。Name,Value
)
image(
将在由 ax
,___)ax
指定的坐标区中而不是当前坐标区 (gca
) 中创建图像。选项 ax
可以位于上述语法中的任何输入参量组合之前。
示例
显示矩阵数据的图像
创建矩阵 C
。显示 C
中数据的图像。向图形添加颜色栏以显示当前颜色图。
C = [0 2 4 6; 8 10 12 14; 16 18 20 22]; image(C) colorbar
默认情况下,图像的 CDataMapping
属性设置为 'direct'
,因此 image
会将 C
中的值解释为颜色图的索引。例如,与 C
中最后一个元素 (22) 对应的右下方像素使用颜色图的第 22 个颜色。
通过在创建图像时将 CDataMapping
属性设置为 'scaled'
,将值的范围缩放到当前颜色图的完整范围。
image(C,'CDataMapping','scaled') colorbar
您也可以使用 imagesc
函数缩放这些值,而不是使用 image(C,'CDataMapping','scaled')
。例如,使用 imagesc(C)
。
控制图像位置
放置图像,使其位于 x 轴上的 5 和 8 之间及 y 轴上的 3 和 6 之间。
x = [5 8]; y = [3 6]; C = [0 2 4 6; 8 10 12 14; 16 18 20 22]; image(x,y,C)
请注意,对应于 C(1,1) 的像素居中显示在点 (5,3) 上。对应于 C(3,4) 的像素在点 (8,6) 上居中显示。image
在这两个点之间定位和定向该图像的其余部分。
显示三维真彩色数组的图像
创建 C
作为真彩色三维数组。将该数组的最后两页设为零,以便仅使用红色。
C = zeros(3,3,3); C(:,:,1) = [.1 .2 .3; .4 .5 .6; .7 .8 .9]
C = C(:,:,1) = 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 C(:,:,2) = 0 0 0 0 0 0 0 0 0 C(:,:,3) = 0 0 0 0 0 0 0 0 0
显示 C
中数据的图像。
image(C)
创建后修改图像
绘制一个线条,然后在该线条上方创建一个图像。返回图像对象。
plot(1:3)
hold on
C = [1 2 3; 4 5 6; 7 8 9];
im = image(C);
使图像半透明,这样线条就会在图像中透明呈现。
im.AlphaData = 0.5;
读取并显示 JPEG 图像文件
向三维视图中的坐标区添加图像
创建一个曲面图。然后,在曲面下添加一个图像。image
在 xy 平面中显示该图像。
Z = 10 + peaks; surf(Z) hold on image(Z,'CDataMapping','scaled')
输入参数
C
— 图像颜色数据
向量或矩阵 | 由 RGB 三元组组成的三维数组
图像颜色数据,指定为下列形式之一:
向量或矩阵 - 此格式定义索引图像数据。
C
的每个元素定义图像的 1 个像素的颜色。例如,C = [1 2 3; 4 5 6; 7 8 9];
。C
的元素映射到相关联的坐标区的颜色图中的颜色。CDataMapping
属性控制映射方法。由 RGB 三元组组成的三维数组 - 此格式定义使用 RGB 三元值的真彩色图像数据。每个 RGB 三元组定义图像的 1 个像素的颜色。RGB 三元组是三元素向量,指定颜色的红、绿和蓝分量的强度。三维数组的第一页包含红色分量,第二页包含绿色分量,第三页包含蓝色分量。由于图像使用真彩色代替颜色图的颜色,因此
CDataMapping
没有任何作用。如果
C
为double
类型,则 RGB 三元值[0 0 0]
和[1 1 1]
分别对应于黑色和白色。如果
C
为整数类型,则该图像使用完整范围的数据确定颜色。例如,如果C
为类型uint8
,则[0 0 0]
和[255 255 255]
分别对应于黑色和白色。如果CData
为类型int8
,则[-128 -128 -128]
和[127 127 127]
分别对应于黑色和白色。如果
C
为类型logical
,则[0 0 0]
和[1 1 1]
分别对应于黑色和白色。
下图演示了两种颜色模型的 C
的相对维度。
NaN
元素的行为未定义。
要改用 image
函数的低级版本,请将 CData
属性设为名称-值对组。例如,image('CData',C)
。
在 double
和整数数据类型之间转换
如果您使用向量或二维矩阵调用 image
函数并使用默认的 CDataMapping
值,则在 double
值和整数类型之间转换时,必须将数据值偏移 1。当 CDataMapping
设置为 'scaled'
时,此偏移不是必需的。
例如,如果 U8
包含 uint8
类型的索引图像数据,您可以使用以下语法将其转换为 double
类型:
D = double(U8) + 1;
要将索引图像数据从 double
类型转换为整数类型,请减去 1 并使用 round
确保所有值都为整数。例如,如果 D
包含 double
类型的索引图像数据,则使用以下语法将其转换为 uint8
:
U8 = uint8(round(D - 1));
在归一化的 double
和真彩色值之间转换
要将真彩色图像数据从整数类型转换为 double
类型,请重新缩放数据。例如,如果 RGB8
为 uint8
类型的真彩色图像数据,则使用以下语法将其转换为 double
:
RGB = double(RGB8)/255;
要将真彩色图像数据从 double
类型转换为整数类型,请重新缩放数据并使用 round
确保所有值都为整数。例如,如果 RGB
为 double
类型的图像数据,则使用以下语法将其转换为 uint8
:
RGB8 = uint8(round(RGB*255));
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
x
— 沿 x 轴放置
[1 size(C,2)]
(默认) | 二元素向量 | 标量
沿着 x 轴放置,以下列形式之一指定:
二元素向量 - 将第一个元素用作
C(1,1)
的中心位置,将第二个元素用作C(m,n)
的中心位置,其中[m,n] = size(C)
。如果C
为三维数组,则m
和n
为前两个维度。C
的其余元素的中心均匀分布在这两点之间。每个像素的宽度由以下表达式确定:
(x(2)-x(1))/(size(C,2)-1)
如果
x(1)
>x(2)
,则图像左右翻转。标量 - 会以此位置作为
C(1,1)
的中心,并使后面的每个元素相隔一个单位。
注意
如果
x
有两个以上的元素,image
将使用第一个和最后一个元素,而忽略其他元素。要改用低级版本的
image
函数,请使用名称-值参量设置XData
属性。例如,image('XData',x,'YData',y,'CData',C)
。您无法在以交互方式将图像平移或缩放到图像的 x 轴或 y 轴范围以外,除非设置的坐标轴范围界限已超出图像边界。如果这些轴范围超出边界,则无此类限制。如果其他对象(例如,线条)占用坐标区,并延伸到图像边界以外,您可以平移或缩放到其他对象的边界,但不能越过边界。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| datetime
(自 R2023b 起) | duration
(自 R2023b 起) | categorical
(自 R2023b 起)
y
— 沿 y 轴放置
[1 size(C,1)]
(默认) | 二元素向量 | 标量
沿着 y 轴放置,以下列形式之一指定:
二元素向量 - 将第一个元素用作
C(1,1)
的中心位置,将第二个元素用作C(m,n)
的中心位置,其中[m,n] = size(C)
。如果C
为三维数组,则m
和n
为前两个维度。C
的其余元素的中心均匀分布在这两点之间。每个像素的高度由以下表达式确定:
(y(2)-y(1))/(size(C,1)-1)
如果
y(1)
>y(2)
,则图像上下翻转。标量 - 会以此位置作为
C(1,1)
的中心,并使后面的每个元素相隔一个单位。
注意
如果
y
有两个以上的元素,image
将使用第一个和最后一个元素,而忽略其他元素。要改用低级版本的
image
函数,请使用名称-值参量设置YData
属性。例如,image('XData',x,'YData',y,'CData',C)
。您无法在以交互方式将图像平移或缩放到图像的 x 轴或 y 轴范围以外,除非设置的坐标轴范围界限已超出图像边界。如果这些轴范围超出边界,则无此类限制。如果其他对象(例如,线条)占用坐标区,并延伸到图像边界以外,您可以平移或缩放到其他对象的边界,但不能越过边界。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| datetime
(自 R2023b 起) | duration
(自 R2023b 起) | categorical
(自 R2023b 起)
ax
— Axes
对象
Axes
对象
Axes
对象。如果您不指定 Axes
对象,则 image
使用当前坐标区。
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: image([1 2 3],'AlphaData',0.5)
会显示半透明图像。
此处所列的属性只是一部分图像属性。有关完整列表,请参阅 Image 属性。
CDataMapping
— 颜色数据的映射方法
'direct'
(默认) | 'scaled'
颜色数据的映射方法,指定为 'direct'
或 'scaled'
。使用该属性控制 CData
中的颜色数据值到颜色图的映射。CData
必须是用来定义索引颜色的向量或矩阵。如果 CData
是定义真彩色的三维数组,该属性不起作用。
这些方法具有以下作用:
'direct'
- 将值解释为当前颜色图中的索引。带小数部分的值舍取为最接近的整数。如果值为
double
或single
类型,则小于或等于1
的值将映射到颜色图中的第一个颜色。大于或等于颜色图长度的值将映射到颜色图中的最后一种颜色。如果值为
uint8
、uint16
、uint32
、uint64
、int8
、int16
、int32
或int64
类型,则小于或等于0
的值将映射到颜色图中的第一个颜色。大于或等于颜色图长度的值将映射到颜色图中的最后一种颜色(或者最大可为该类型的范围限值)。如果值为
logical
类型,则值0
将映射到颜色图中的第一个颜色,值1
将映射到颜色图中的第二个颜色。
'scaled'
- 缩放值以使其跨度覆盖颜色范围。坐标区的CLim
属性包含颜色范围。
AlphaData
— 透明度数据
1
(默认) | 标量 | 大小与 CData
相同的数组
透明度数据,指定为以下格式之一:
标量 - 在整个图像中使用一致的透明度。
大小与
CData
相同的数组 - 对每个图像元素使用不同的透明度值。
AlphaDataMapping
属性控制 MATLAB® 如何解释 alpha 数据透明度值。
示例: 0.5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
AlphaDataMapping
— AlphaData
值的解释
'none'
(默认) | 'scaled'
| 'direct'
AlphaData
值的解释,指定为下列值之一:
'none'
- 将值解释为透明度值。值 1 或更大的值表示完全不透明,值 0 或更小的值表示完全透明,介于 0 和 1 之间的值表示半透明。'scaled'
- 将值映射到图窗的 alphamap 中。坐标区的最小和最大 alpha 范围确定分别映射到 alphamap 中第一个和最后一个元素的 alpha 数据值。例如,如果 alpha 范围是[3 5]
,则小于或等于3
的 alpha 数据值映射到 alphamap 中的第一个元素。大于或等于5
的 alpha 数据值映射到颜色图中的最后一个元素。坐标区的ALim
属性包含 alpha 范围。图窗的Alphamap
属性包含 alphamap。'direct'
- 将值解释为图窗的 alphamap 的索引。带小数部分的值向下舍取为最接近的整数:如果值为
double
或single
类型,则小于或等于 1 的值将映射到 alphamap 中的第一个元素。等于或大于 alphamap 的长度的值映射到 alphamap 中的最后一个元素。如果值的类型为整数,则 0 或更小的值映射到 alphamap 中的第一个元素。等于或大于 alphamap 的长度的值映射到 alphamap 中的最后一个元素(或者最大可为该类型的范围限值)。整数类型有
uint8
、uint16
、uint32
、uint64
、int8
、int16
、int32
和int64
。如果值为
logical
类型,则值 0 将映射到 alphamap 中的第一个元素,值 1 将映射到 alphamap 中的第二个元素。
详细信息
提示
扩展功能
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
此函数在分布式数组上运行,但在客户端 MATLAB 中执行。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出R2023b: 显示具有日期时间、持续时间或分类像素坐标的图像
现在,您可以将 x
和 y
参量指定为日期时间、持续时间或分类坐标值。以前,仅支持数值和逻辑坐标值。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)