2

我想使用 将图像单元格数组一起添加imadd,但imadd只需要两个参数。MATLAB中是否有一个reduce函数,我可以使用将所有这些图像添加在一起而无需编写for循环?

images = {im1, im2, im3};
sum = reduce(@imadd, images);
4

2 回答 2

1

您可以只使用具有额外维度的数组。例如二维(灰度图像)

images = {im1, im2, im3};
imarr = cat(3, images{:});
imsum = sum(imarr, 3);

当然,首先不需要创建元胞数组;你可以直接去

imarr = cat(3, im1, im2, im3);
imsum = sum(imarr, 3);

甚至

imsum = sum(cat(ndims(im1)+1, im1, im2, im3),ndims(im1)+1);

这也更普遍地结合了任何维度矩阵。

于 2012-07-27T19:27:09.737 回答
0

由于您使用的是图像处理工具箱,因此也可以使用IMLINCOMB函数(图像的线性组合),只需将所有系数设为 1:

imsum = imlincomb(1,im1, 1,im2, 1,im3)
于 2012-07-29T19:46:56.973 回答