# imtile
将多个图像帧合并为一个矩形分块图
函数库: TyImages
# 语法
out = imtile(filenames)
out = imtile(I)
out = imtile(X,map)
out = imtile(___,Key=Value)
# 说明
out=imtile(filenames) 返回包含 filenames 中指定的图像的分块图。filenames 是 n×1 或 1×n 字符串数组、字符向量。如果该文件不在当前文件夹或 Syslab 路径下的文件夹中,请指定完整路径名。有关详细信息,请参阅 imread 命令。
默认情况下,imtile 将图像大致排成一个方阵,但您可以使用可选参数进行更改。图像可以具有不同大小和类型。
- 如果指定索引图像,则 imtile 会使用文件中存在的颜色图将其转换为 RGB。
- 如果图像之间存在数据类型不匹配,则 imtile 会将所有图像重新缩放为浮点型。
out=imtile(I) 返回包含多帧图像数组 I 的所有帧的分块图。一个多帧图像数组可以是二值图像序列、灰度图像序列或真彩色图像序列。
out=imtile(X,map) 将 X 中的所有灰度图像视为索引图像,并将指定的颜色图 map 应用于所有帧。X 可以是灰度图像数组(m×n×1×k)、文件名字符串数组。如果 X 表示文件名,map 将覆盖图像文件中存在的任何内部颜色图。
out=imtile(___,Key=Value) 返回一个自定义分块图,具体取决于可选参数名称-值对组的值。
# 示例
从文件创建分块图
从文件中将多个图像读取到工作区中,并创建一个包含这些图像的分块图。显示该分块图。
using TyImages
pkg_dir = pkgdir(TyImages)
img_path1 = pkg_dir * "/examples/resources/peppers.png"
img_path2 = pkg_dir * "/examples/resources/ngc6543a.jpg"
out = imtile([img_path1, img_path2]);
imshow(out);

自定义分块图中图像的数量
导入 0-data1.jl 文件, 使用一个包含多个图像的数据集,将这些图像平铺在一个网格中。
using TyImages
using TyPlot
pkg_dir = pkgdir(TyImages)
source_path = pkg_dir * "/examples/imtile/0-data1.jl"
include(source_path)
out = imtile(D, newmap);
imshow(out);
创建一个分块图,其中仅包含该数据集中的前八个图像。使用 gridsize 参数将这些图像排列在一个 2×4 网格中。
out = imtile(D, newmap, frames=1:8, gridsize=[2 4]);
figure();
imshow(out);

检查 RGB 图像的颜色平面
将 RGB 图像读取到工作区。
using TyImages
pkg_dir = pkgdir(TyImages)
source_path = pkg_dir * "/examples/resources/peppers.png"
imRGB = imread(source_path);
创建一个分块图,其中包含 RGB 图像的三个平面。显示该分块图。
out = imtile(imRGB);
imshow(out)

从图像数据存储创建分块图
从图像数据存储创建并自定义分块图。
创建一个图像数据存储,其中包含指定文件夹中文件扩展名为 "tif" 或 "png" 的所有文件。
创建一个包含数据存储中图像的分块图。
using TyImages
pkg_dir = pkgdir(TyImages)
source_path1 = pkg_dir * "/examples/resources/corn.tif"
source_path2 = pkg_dir * "/examples/resources/peppers.png"
out = imtile([source_path1, source_path2]);
imshow(out);
使用 bordersize 和 backgroundcolor 参数为分块图添加蓝色边框。
using TyImages
using TyPlot
pkg_dir = pkgdir(TyImages)
source_path1 = pkg_dir * "/examples/resources/corn.tif"
source_path2 = pkg_dir * "/examples/resources/peppers.png"
out2 = imtile([source_path1, source_path2], bordersize=10, backgroundcolor="b");
figure();
imshow(out2);

# 输入参数
filenames - 包含图像的文件的名称n×1 或 1×n 字符串数组 | 字符向量
包含图像的文件的名称,指定为 n×1 或 1×n 字符串数组、字符向量。
I - 多帧图像二值图像、灰度图像或真彩色图像序列
多帧图像,指定为二值图像、灰度图像或真彩色图像序列。I 可以是 m×n×k 或 m×n×1×k 数组,也可以是二值图像、灰度图像或真彩色图像序列。二值图像或灰度图像序列必须是 m×n×k 或 m×n×1×k 数组。真彩色图像序列必须是 m×n×3×k 数组。
X,map - 索引图像和关联的颜色图二维数值数组
索引图像和关联的颜色图,指定为二维数值数组(图像)和 Float64 类的 n×3 数值数组(颜色图)。n 是颜色图中的颜色数。
# 名称-值对组参数
指定可选的、以逗号分隔的 Key=Value 对组参数。Key 为参数名称,Value 为对应的值。您可采用任意顺序指定多个名称-值对组参数,如 Key1=Value1,...,KeyN=ValueN 所示。
示例: out = imtile(["peppers.png", "ngc6543a.jpg"],backgroundcolor="g");
backgroundcolor - 背景颜色"black" (默认)
背景颜色,默认为黑色。imtile 函数使用此颜色填充所有空白区,包括 bordersize 指定的区域。如果指定背景色,imtile 函数会以 RGB 图像形式呈现输出。
示例: "green"
示例: "g"
示例: [0 1 0]
bordersize - 每个缩略图周围的填充[0 0] (默认) | 数值标量或 1×2 向量
每个缩略图周围的填充,指定为以逗号分隔的对组,该对组由 bordersize 和数值标量或 [brows bcols] 形式的 1×2 向量组成。imtile 用背景色填充边框。
frames - 要包含的帧图像总数 (默认) | 数值数组 | 逻辑值
要包含的帧,指定为以逗号分隔的对组,该对组由 frames 和数值数组或逻辑值组成。imtile 函数将值解释为图像数组或数组的索引。以下示例创建包含前三个图像帧的分块图。
示例: out = imtile(I,frames=1:3);
示例: out = imtile(I,frames=[true true true]);
gridsize - 缩略图的行数和列数图像网格形成正方形 (默认) | 二元素向量
分块图中缩略图的行数和列数,指定为以逗号分隔的对组,该对组由 gridsize 和 [nrows ncols] 形式的二元素向量组成。nrows 指定网格中的行数,ncols 指定网格中的列数。使用 NaN 使 imtile 以包含所有图像的方式计算特定维度的大小。
- 如果 gridsize 是 [2 NaN],则 imtile 会创建一个分块图,其中包含两行以及包括所有图像所需的列数。
- 如果两个元素均为 NaN ,则 imtile 会计算网格大小以形成一个正方形。imtile 会以从左到右、从上到下的排列方式返回图像。
- 如果 gridsize 与图像(帧)数不匹配,imtile 将根据 gridsize 创建分块图。
# 输出参数
out - 图块输出图像数值数组
图块输出图像,以数值数组形式返回。