MATLAB的reduce函数是什么?

3

我想使用imadd将一组图像的单元数组相加,但是imadd只接受两个参数。在MATLAB中是否有缩减函数可以用于将所有这些图像相加而不编写for循环?

images = {im1, im2, im3};
sum = reduce(@imadd, images);
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);

它还可以更普遍地组合任何维度的矩阵。


0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接