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;
创建一个曲面图。然后,在曲面下添加一个图像。image
在 xy 平面中显示该图像。
Z = 10 + peaks; surf(Z) hold on image(Z,'CDataMapping','scaled')
输入参数
图像颜色数据,指定为下列形式之一:
向量或矩阵 - 此格式定义索引图像数据。
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 轴放置,以下列形式之一指定:
二元素向量 - 将第一个元素用作
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 轴放置,以下列形式之一指定:
二元素向量 - 将第一个元素用作
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 起)
Axes
对象。如果您不指定 Axes
对象,则 image
使用当前坐标区。
名称-值参数
以 Name1=Value1,...,NameN=ValueN
的形式指定可选参量对组,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: image([1 2 3],'AlphaData',0.5)
会显示半透明图像。
此处所列的属性只是一部分图像属性。有关完整列表,请参阅 Image 属性。
颜色数据的映射方法,指定为 'direct'
或 'scaled'
。使用该属性控制 CData
中的颜色数据值到颜色图的映射。CData
必须是用来定义索引颜色的向量或矩阵。如果 CData
是定义真彩色的三维数组,该属性不起作用。
这些方法具有以下作用:
'direct'
- 将值解释为当前颜色图中的索引。带小数部分的值舍取为最接近的整数。如果值为
double
或single
类型,则小于或等于1
的值将映射到颜色图中的第一个颜色。大于或等于颜色图长度的值将映射到颜色图中的最后一种颜色。如果值为
uint8
、uint16
、uint32
、uint64
、int8
、int16
、int32
或int64
类型,则小于或等于0
的值将映射到颜色图中的第一个颜色。大于或等于颜色图长度的值将映射到颜色图中的最后一种颜色(或者最大可为该类型的范围限值)。如果值为
logical
类型,则值0
将映射到颜色图中的第一个颜色,值1
将映射到颜色图中的第二个颜色。
'scaled'
- 缩放值以使其跨度覆盖颜色范围。坐标区的CLim
属性包含颜色范围。
透明度数据,指定为以下格式之一:
标量 - 在整个图像中使用一致的透明度。
大小与
CData
相同的数组 - 对每个图像元素使用不同的透明度值。
AlphaDataMapping
属性控制 MATLAB® 如何解释 alpha 数据透明度值。
示例: 0.5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
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 中的第二个元素。
详细信息
提示
扩展功能
image
函数支持 GPU 数组输入,但有以下用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出现在,您可以将 x
和 y
参量指定为日期时间、持续时间或分类坐标值。以前,仅支持数值和逻辑坐标值。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)