Como calcular a média de várias imagens em uma com o ImageMagick?

Como calcular a média de várias imagens em uma com o 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 é muito mais leve que d.ppm. A ordem das imagens é importante (mas não deveria).

O mesmo para usar evaluate-sequence mean.

Como fazer isso corretamente?

Responder1

Apenas useGráficosMagick:gm convert -average *.JPG q.ppm

Responder2

Oito anos depois, isso ainda parece ser um problema, sem respostas satisfatórias na família StackExchange.

Deesta postagem do blog:

O operador -average do ImageMagick calcula a média de duas imagens ao mesmo tempo: a imagem atualmente considerada e o resultado da média anterior. Em seguida, passa para a próxima imagem.

Portanto, em vez de todas as imagens da sequência terem o mesmo peso, as imagens posteriores têm um peso maior. Isso não dá o resultado que quase todo mundo que usa essa opção esperaria intuitivamente. Há também o problema de que todas as imagens precisam ser carregadas na memória.

A solução para ambos os problemas é um script para chamar convert recursivamente, em pares de imagens, assim:

#!/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

Responder3

Do fórum ImageMagick:

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

Cuidado: isso carrega todas as imagens na memória de uma só vez.

informação relacionada