2012-07-27 102 views
1

我想使用imadd将图像单元阵列添加到一起,但imadd只需要两个参数。在MATLAB中有没有减少函数,我可以将所有这些图像一起添加,而无需编写for循环?MATLAB减少功能?

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

回答

1

您可以只使用一个具有额外维度的数组。例如。 for 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); 

这也更普遍地将任何一个三维矩阵。

0

由于正在使用的图像处理工具箱,该IMLINCOMB功能(图像的线性组合)也可使用,只要给所有的系数作为一个:

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