如何使用 ImageMagick 將多張影像平均為一張?

如何使用 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 比 d.ppm 輕很多。影像的順序很重要(但不應該)。

使用時也是一樣evaluate-sequence mean

怎樣做才正確呢?

答案1

只需使用圖形魔術師:gm convert -average *.JPG q.ppm

答案2

8 年過去了,這似乎仍然是一個問題,StackExchange 家族沒有給出令人滿意的答案。

這篇博文:

ImageMagick 的 -average 運算子一次對兩個影像進行平均:目前考慮的影像和先前平均的結果。然後它會移動到下一個圖像。

因此,並不是序列中的每個影像都具有相同的權重,而是後面的影像具有更高的權重。這並沒有給出幾乎每個使用此選項的人都直觀期望的結果。還有一個問題是所有圖像都需要載入到記憶體中。

這兩個問題的解決方案是一個在圖像對上遞歸呼叫 Convert 的腳本,如下所示:

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

答案3

來自 ImageMagick 論壇:

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

注意:這會立即將所有圖像載入到記憶體中。

相關內容