首页 > 解决方案 > 在通道维度连接两个图像?

问题描述

我必须在 MATLAB 或 Python 中连接两个通道维度中的图像。

假设我们采用两个灰度输入图像,其中每个图像都具有例如尺寸[1, 1, 28, 28](即 1 个图像、1 个通道、28x28 分辨率)。我们如何将它们连接成一个 size 的图像[1, 2, 28, 28]

标签: pythonimagematlabmatrixconcatenation

解决方案


在 MATLAB 中,您通常会cat为此使用以下命令:

bigMat = cat(dimNo, matA, matB); % dimNo can be 1, 2, ...

但是在沿第二维连接的情况下,您也可以简单地使用[... ; ...]

bigMat = [matA; matB];

(相当于vertcat函数)。

如果您事先知道要连接多少个矩阵(即结果的最终大小),则应使用 eg 预先分配矩阵bigMat = zeros(1, N, 28, 28),然后将每个图像放在与上一个答案类似的正确位置 -

img1(:,n,:,:) = img2; % where n is 1..N, and not anything like end+1

我们不想使用end+1它,因为这会导致与不断重新分配越来越大的数组以及每次复制数组的所有内容相关的性能损失。


推荐阅读