Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

imtile

将多个图像帧合并为一个矩形分块图

说明

out = imtile(filenames) 返回包含 filenames 中指定的图像的分块图。filenames 是 n×1 或 1×n 字符串数组、字符向量或字符向量元胞数组。如果该文件不在当前文件夹或 MATLAB® 路径下的文件夹中,请指定完整路径名。有关详细信息,请参阅 imread 命令。

默认情况下,imtile 将图像大致排成一个方阵,但您可以使用可选参数进行更改。图像可以具有不同大小和类型。

  • 如果指定索引图像,则 imtile 会使用文件中存在的颜色图将其转换为 RGB。

  • 如果图像之间存在数据类型不匹配,则 imtile 会使用 im2double 函数将所有图像重新缩放为 double

out = imtile(I) 返回包含多帧图像数组 I 的所有帧的分块图。一个多帧图像数组可以是二值图像序列、灰度图像序列或真彩色图像序列。

out = imtile(images) 返回包含元胞数组 images 中指定的图像的分块图。imtile 将空元胞数组元素显示为空白图块。

out = imtile(imds) 返回包含 ImageDatastore 对象 imds 中指定的图像的分块图。有关图像数据存储的信息,请参阅 ImageDatastore

out = imtile(X,map)X 中的所有灰度图像视为索引图像,并将指定的颜色图 map 应用于所有帧。X 可以是灰度图像数组(m×n×1×k)、文件名字符串数组或字符向量元胞数组。如果 X 表示文件名,map 将覆盖图像文件中存在的任何内部颜色图。

out = imtile(___,Name,Value) 返回一个自定义分块图,具体取决于可选参数名称-值对组的值。您可以缩写参数名称,不区分大小写。

示例

全部折叠

从文件中将多个图像读取到工作区中,并创建一个包含这些图像的分块图。显示该分块图。

out = imtile({'peppers.png', 'ngc6543a.jpg'});
imshow(out);

Figure contains an axes. The axes contains an object of type image.

使用一个包含多个图像的数据集,将这些图像平铺在一个网格中。

加载 MRI 数据集。

load mri
out = imtile(D, map);
imshow(out);

Figure contains an axes. The axes contains an object of type image.

创建一个分块图,其中仅包含该数据集中的前八个图像。使用 'GridSize' 参数将这些图像排列在一个 2×4 网格中。

out = imtile(D, map, 'Frames', 1:8, 'GridSize', [2 4]);
figure;
imshow(out);

Figure contains an axes. The axes contains an object of type image.

将 RGB 图像读取到工作区。

imRGB = imread('peppers.png');

创建一个分块图,其中包含 RGB 图像的三个平面。显示该分块图。

out = imtile(imRGB);
imshow(out)

Figure contains an axes. The axes contains an object of type image.

从图像数据存储创建并自定义分块图。

创建一个图像数据存储,其中包含指定文件夹中文件扩展名为 'tif''png' 的所有文件。

fileFolder = fullfile(matlabroot,'toolbox','matlab','imagesci');
imds = imageDatastore(fileFolder,'FileExtensions',{'.tif','.png'});

创建一个包含数据存储中图像的分块图。

out1 = imtile(imds);
imshow(out1);

Figure contains an axes. The axes contains an object of type image.

使用 'BorderSize' 和 'BackgroundColor' 参数为分块图添加蓝色边框。

out2 = imtile(imds, 'BorderSize', 10, 'BackgroundColor', 'b');
figure;
imshow(out2);

Figure contains an axes. The axes contains an object of type image.

输入参数

全部折叠

包含图像的文件的名称,指定为 n×1 或 1×n 字符串数组、字符向量或字符向量元胞数组。

多帧图像,指定为二值图像、灰度图像或真彩色图像序列。I 可以是 m×n×k 或 m×n×1×k 数组,也可以是二值图像、灰度图像或真彩色图像序列。二值图像或灰度图像序列必须是 m×n×k 或 m×n×1×k 数组。真彩色图像序列必须是 m×n×3×k 数组。

图像列表,指定为数值矩阵的 n×1 或 1×n 元胞数组。元胞数组可以包含大小为 m×n 或 m×n×3 的数值矩阵。

图像数据存储,指定为 ImageDatastore 对象。

索引图像和关联的颜色图,指定为二维数值数组(图像)和 double 类的 n×3 数值数组(颜色图)。n 是颜色图中的颜色数。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: tiled_image = imtile({'peppers.png', 'ngc6543a.jpg'},'BackgroundColor','g');

背景颜色,指定为以逗号分隔的对组,该对组由 'BackgroundColor' 和 MATLAB ColorSpec (Color Specification) 组成。imtile 函数使用此颜色填充所有空白区,包括 BorderSize 指定的区域。如果指定背景色,imtile 函数会以 RGB 图像形式呈现输出。

示例: 'green'

示例: 'g'

示例: [0 1 0]

每个缩略图周围的填充,指定为以逗号分隔的对组,该对组由 'BorderSize' 和数值标量或 [brows bcols] 形式的 1×2 向量组成。imtile 用背景色填充边框。

要包含的帧,指定为以逗号分隔的对组,该对组由 'Frames' 和数值数组或逻辑值组成。imtile 函数将值解释为图像数组或元胞数组的索引。以下示例创建包含前三个图像帧的分块图。

示例: out = imtile(I,'Frames',1:3);

示例: out = imtile(I,'Frames',[true true true]);

分块图中缩略图的行数和列数,指定为以逗号分隔的对组,该对组由 'GridSize'[nrows ncols] 形式的二元素向量组成。nrows 指定网格中的行数,ncols 指定网格中的列数。使用 NaNInf 使 imtile 以包含所有图像的方式计算特定维度的大小。

  • 如果 'GridSize'[2 NaN],则 imtile 会创建一个分块图,其中包含两行以及包括所有图像所需的列数。

  • 如果两个元素均为 NaNInf,则 imtile 会计算网格大小以形成一个正方形。imtile 会以从左到右、从上到下的排列方式返回图像。

  • 如果 GridSize 与图像(帧)数不匹配,imtile 将根据 GridSize 创建分块图。

缩略图的大小,指定为以逗号分隔的对组,该对组由 'ThumbnailSize'[trows tcols] 形式的二元素向量组成(以像素为单位)。imtile 函数通过用零填充边界来保留原始图像的纵横比。

  • 如果指定 NaNInf,则 imtile 函数会自动计算对应的值以保留第一个图像的纵横比。

  • 如果指定空数组 ([]),则 imtile 函数将第一个图像的完整大小用作缩略图大小。

输出参数

全部折叠

图块输出图像,以数值数组形式返回。

另请参阅

|

在 R2018b 中推出