MATLAB减少功能?

时间:2012-07-27 19:11:57

标签: matlab image-processing functional-programming

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用具有额外维度的数组。例如。用于2-d(灰度图像)

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);

也更通常地组合任何维矩阵。

答案 1 :(得分:0)

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

imsum = imlincomb(1,im1, 1,im2, 1,im3)