imagemagick意味着图像序列并忽略alpha通道

时间:2017-05-04 07:19:07

标签: imagemagick photoshop mean alpha

我想通过使用Imagemagick获得一系列图像的平均值。因此,我使用以下命令:

convert *.png -evaluate-sequence mean MEAN.png

我的每张图片都包含一个Alpha通道。我想要的是:通过忽略alpha通道来合并所有图像。

当我合并图像时,alpha通道被认为是“均值”方法,而我的最终图像具有透明度。那不是我想要的。

结果:

mean transparency

我尝试关闭-alpha参数,但Imagemagick将alpha通道转换为黑色。

convert *.png -alpha off -evaluate-sequence mean MEAN.png

结果:

mean with alpha off

Photoshop做得很好。我将所有图片加载到堆栈中并创建智能对象。当我在Photoshop中使用“均值”方法时,最终结果中不会考虑alpha通道。

我想要Imagemagick的结果:

mean with photoshop

有人知道如何使用Imagemagick做到这一点吗?

4 个答案:

答案 0 :(得分:3)

您需要做的是使用Alpha通道作为每张图像的加权图像。来自所有alpha通道的每个像素的白色值的总分数将是用于平均值的权重。所以这样的事情应该做你想要的或至少接近。

首先,cd到你的图像目录。然后运行以下命令。

convert *.png -evaluate-sequence mean \
\( -clone 0 -alpha off \) \
\( -clone 0 -alpha extract \) \
-delete 0 +swap -compose divide -composite result.png

如果来自至少一个图像的每个像素存在一些图像纹理,则这将起作用。即在给定像素处,所有图像都不是完全黑色(透明)。

compare -metric rmse result.png mean_photoshop.png null:
125.167 (0.00190993)

所以这表明我的结果与你从photoshop获得的结果差不多有0.2%

答案 1 :(得分:2)

也许这种工作方式可以帮助你实现目标 - 或者至少解释一下这个问题:

# ImageMagick pixel enumeration: 1,1,65535,srgba
0,0: (21845,0,0,43690)  #550000AA  srgba(85,0,0,0.666667)

<强>输出

var latestResponse = Api.getResponsePayload();
var context = latestResponse.context;
Api.setResponsePayload('{"output": {"text": ["Hi $name!"]},"context" : ' + JSON.stringify(context) +'}');

答案 2 :(得分:1)

使用IM 6.8.9.4 Q16或IM 7.0.5.5 Q16 Mac OSX Sierra,这对我来说似乎没问题:

制作透明图像

convert logo: -transparent white logot.png

得到卑鄙的

convert logot.png logot.png logot.png -alpha off -evaluate-sequence mean result.png

magick logot.png logot.png logot.png -alpha off -evaluate-sequence mean result.png

这似乎也有效:

convert logot.png logot.png logot.png -channel rgb -evaluate-sequence mean -alpha off result.png

所以也许你需要升级你的ImageMagick(和/或libpng?)

您可以发布一些输入图像的zip文件,以便我们可以测试您的图像吗?

答案 3 :(得分:0)

我看到的一个问题是您提供的PNG图像在透明区域下面是黑色而不是图像纹理。因此,当您在上面的命令中禁用alpha时,您会看到黑色,并且黑色会被平均到最终结果中。您是否在Photoshop中使用了这些相同的PNG图像,或者您是否使用了Photoshop PSD图像或其他一些您使用过的图像,然后导出到PNG,这可能会在透明区域下方放置黑色。您是否尝试在Photoshop中使用相同的PNG图像来进行平均值?

实际上,您有8位颜色(调色板)图像,其中一种颜色(黑色)被指定为透明颜色。