我想使用imadd
一起添加图像的单元格数组,但imadd
只需要两个参数。在MATLAB中是否有一个reduce函数,我可以在不编写for循环的情况下将所有这些图像一起添加?
images = {im1, im2, im3};
sum = reduce(@imadd, images);
答案 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)