¿Función de reducción de MATLAB?

Me gustaría agregar una matriz de celdas de imágenes juntas usando imadd, pero imadd solo toma dos argumentos. ¿Hay una función de reducción en MATLAB que podría usar para agregar todas estas imágenes juntas sin escribir un bucle for?

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

preguntado el 27 de julio de 12 a las 20:07

2 Respuestas

Simplemente podría usar una matriz con una dimensión adicional. Por ejemplo, para 2-d (imágenes en escala de grises)

images = {im1, im2, im3};
imarr = cat(3, images{:});
imsum = sum(imarr, 3);

Por supuesto, no hay necesidad de crear la matriz de celdas en primer lugar; podrías ir directamente a

imarr = cat(3, im1, im2, im3);
imsum = sum(imarr, 3);

o incluso

imsum = sum(cat(ndims(im1)+1, im1, im2, im3),ndims(im1)+1);

que también combina más generalmente cualquier matriz dimensional.

Respondido 31 Jul 12, 01:07

Dado que está utilizando la Caja de herramientas de procesamiento de imágenes, el IMLINCOMB También se puede usar la función (combinación lineal de imágenes), solo dé todos los coeficientes como uno:

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

Respondido 29 Jul 12, 20:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.