我想使用imadd
将一组图像的单元数组相加,但是imadd
只接受两个参数。在MATLAB中是否有缩减函数可以用于将所有这些图像相加而不编写for循环?
images = {im1, im2, im3};
sum = reduce(@imadd, images);
我想使用imadd
将一组图像的单元数组相加,但是imadd
只接受两个参数。在MATLAB中是否有缩减函数可以用于将所有这些图像相加而不编写for循环?
images = {im1, im2, im3};
sum = reduce(@imadd, images);
您可以使用带有额外维度的数组。例如,对于二维(灰度图像)
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);
它还可以更普遍地组合任何维度的矩阵。
由于您正在使用图像处理工具箱,因此IMLINCOMB函数(图像的线性组合)也可以使用,只需将所有系数作为一个参数传递:
imsum = imlincomb(1,im1, 1,im2, 1,im3)