Wie werden mit ImageMagick mehrere Bilder zu einem zusammengefasst?

Wie werden mit ImageMagick mehrere Bilder zu einem zusammengefasst?
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 ist viel leichter als d.ppm. Die Reihenfolge der Bilder ist wichtig (sollte es aber nicht).

Das Gleiche gilt für die Verwendung evaluate-sequence mean.

Wie macht man es richtig?

Antwort1

Benutz einfachGrafikMagick:gm convert -average *.JPG q.ppm

Antwort2

Auch 8 Jahre später scheint dies noch immer ein Problem zu sein, für das es in der StackExchange-Familie keine zufriedenstellenden Antworten gibt.

Ausdieser Blog-Beitrag:

Der -average-Operator von ImageMagick berechnet den Durchschnitt von zwei Bildern gleichzeitig: dem aktuell betrachteten Bild und dem Ergebnis der vorherigen Durchschnittsberechnung. Anschließend fährt er mit dem nächsten Bild fort.

Anstatt dass also jedes Bild in der Sequenz das gleiche Gewicht hat, haben die späteren Bilder ein höheres Gewicht. Dies führt nicht zu dem Ergebnis, das so ziemlich jeder, der diese Option verwendet, intuitiv erwarten würde. Außerdem besteht das Problem, dass alle Bilder in den Speicher geladen werden müssen.

Die Lösung für beide Probleme ist ein Skript, mit dem „convert“ rekursiv für Bildpaare aufgerufen werden kann, etwa wie folgt:

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

Antwort3

Aus dem ImageMagick-Forum:

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

Achtung: Dadurch werden alle Bilder auf einmal in den Speicher geladen.

verwandte Informationen