2015-03-07 4 views
2

У меня есть два изображения. Один - это фон без альфы. Другое - белое облако. Альфа облачного изображения предварительно умножается на черный. Когда я их совмещаю, у белого облака есть черное в нем, поэтому оно выглядит серым, а не белым, как должно. Я делаю:Композиция предварительно умноженных изображений с использованием ImageMagick

convert -gravity Center bg.tga whitecloud.tga -composite comp.tga 

Есть ли способ композитных изображений в предварительно умноженных ImageMagick, или же изображение должно быть без предварительно умноженным? Могу ли я сделать предварительно умноженное изображение без предварительного умножения с помощью ImageMagick?

Update:
Ok, вот образы, как TGA для скачивания:

http://acatysmoof.com/posting/problems/imagemagick/premultiplication/bg.tga http://acatysmoof.com/posting/problems/imagemagick/premultiplication/whitecloud.tga http://acatysmoof.com/posting/problems/imagemagick/premultiplication/aftereffects.tga http://acatysmoof.com/posting/problems/imagemagick/premultiplication/imagemagick.tga

и в том же порядке, как JPGs для просмотра в вашем браузере:

bg.jpg whitecloud.jpg aftereffects.jpg imagemagick.jpg

Я пробовал все режимы, представленные, но ни один из них не создать такой же результат, как и After Effects.

ответ

2

Было бы проще, если бы вы показали свои изображения, но попробуйте добавить -compose lighten до того -composite в вашей команде, например:

convert a.tga b.tga -compose lighten -composite out.tga 

В принципе, что сделает ImageMagick выбрать более светлый пиксель двух изображений в каждой точке ,

Если это не сработает, попробуйте другие режимы смешивания

for b in $(identify -list compose); do 
    convert -label "$b" bg.tga whitecloud.tga -compose $b -composite miff:- 
done | montage - -tile 5x out.png 

enter image description here

Я вроде мышления Atop, Dissolve, SrcAtop и SrcOver могут быть ваши друзья, но есть смотреть полный размер и посмотреть, что плавает ваша лодка. Это будет

convert a.tga b.tga -compose Atop -composite out.tga 
+0

Нет, но я очень ценю усилия. Режимы смешивания не имеют ничего общего с премультипликацией. RGB неверен до тех пор, пока не произойдет премультипликация, и никакой режим смешивания не исправит это. Я провел некоторое исследование, и как Imagemagick, так и Graphicsmagick не поддерживают предварительную мультиплексированную альфу. Это действительно усугубляет, так как большинство профессиональных 2D и 3D программ по умолчанию воспроизводят предварительно умноженные изображения. Все профессиональные комплекты композиций также предполагают предварительную альфа, включая After Effects, Fusion, Nuke, Harmony и т. Д. Imagemagick не предлагает этого. Зачем? Я попрошу их списки. – whereisalext

+0

Хорошо, спасибо за отзыв. Если есть формула, которая может выполнять/отменять премультипликацию, ее можно реализовать в ImageMagick с помощью оператора '-fx' или модуля, поэтому, если вы узнаете больше и позаботите добавить заметку или ссылку позже, это может можно что-то сделать. –