¿Cómo promediar varias imágenes en una con ImageMagick?

¿Cómo promediar varias imágenes en una con ImageMagick?
convert -average darky1.jpg darky2.jpg lighty1.jpg lighty2.jpg l.ppm
convert -average lighty1.jpg lighty2.jpg lighty1.jpg lighty2.jpg d.ppm

l.ppm es mucho más ligero que d.ppm. El orden de las imágenes importa (pero no debería hacerlo).

Lo mismo para usar evaluate-sequence mean.

¿Cómo hacerlo correctamente?

Respuesta1

Solo usaGráficosMagia:gm convert -average *.JPG q.ppm

Respuesta2

Ocho años después, esto todavía parece ser un problema y no hay respuestas satisfactorias en la familia StackExchange.

Deesta publicación de blog:

El operador -average de ImageMagick promedia dos imágenes a la vez: la imagen considerada actualmente y el resultado del promedio anterior. Luego pasa a la siguiente imagen.

Entonces, en lugar de que todas las imágenes de la secuencia tengan el mismo peso, las imágenes posteriores tienen un peso mayor. Esto no da el resultado que casi todos los que usan esta opción esperarían intuitivamente. También existe el problema de que es necesario cargar todas las imágenes en la memoria.

La solución a ambos problemas es un script para llamar a convert recursivamente, en pares de imágenes, como este:

#!/bin/bash

i=0
for file in img*jpg; do
    echo -n "$file.. "
    if [ $i -eq 0 ]; then
        cp $file avg.jpg
    else
        convert $file avg.jpg -fx "(u+$i*v)/$[$i+1]" avg.jpg
    fi
    i=$[$i+1]
done

Respuesta3

Del foro de ImageMagick:

convert darky1.jpg darky2.jpg lighty1.jpg lighty2.jpg -evaluate-sequence Mean avg.ppm

Cuidado: esto carga todas las imágenes en la memoria a la vez.

información relacionada