module inscription newsletter haut de page forum mobile

Ateliers et Formations

L'alpha prémultipliée et After Effects.

Discussion dans 'Archives moteurs' créé par Julien W., 17 Août 2004.

Tags:
  1. Sequelles

    Sequelles Modérateur
    Modérateur So
    Appréciations:
    +2 / 13 / -0

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    Je te conseil de lire plutôt le document en pdf indiqué précédemment ftp://ftp.alvyray.com/Acrobat/4_Comp.pdf . Il aborde l'historique (le mode prémultiplié a était très avantageux pour une raison de calcul beaucoup plus léger) et un point très intéressant sur "The “Second-Composition” Problem"
     
  2. allaigrg

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    177
    en faite on dirait qu'il n'utilise pas l'alpha de l'image en gros, mais plutot un keying sur la couleur noir (comme on fait avec le vert)
    je vais lire les doc que tu as donnée

    merci
     
  3. Sequelles

    Sequelles Modérateur
    Modérateur So
    Appréciations:
    +2 / 13 / -0

    Points Repaire:
    11 780
    Recos reçues:
    20
    Messages:
    4 261
    non tu n'y es pas du tout:non:

    L'image est ajoutée simplement donc il n'y a pas de key, le noir n'a pas d'effet en mode addition, c'est tout.
    Mais la couche alpha sert toujours elle est utilisée pour l'image du dessous pour préserver les zones où l'image du dessus va venir s'ajouter.

    dans cette doc ftp://ftp.alvyray.com/Acrobat/7_Alpha.pdf on aborde un peu plus l'historique:
    Au départ on met au point ce système de fichier avec une couche alpha. Pour superposer les images avec ce système, dans les opérations qui sont faite à chaque fois on doit multiplier l'alpha avec l'image. donc pour gagner une étape et du temps de calcul (à l'époque il y plus de trente ans je te laisse imaginer le coût exorbitant et la puissance dérisoire des machines) on trouve cette solution de déjà multiplier l'alpha dans l'image pour gagner une étape du temps et de l'argent.
     
    #18 Sequelles, 20 Août 2004
    Dernière édition: 21 Août 2004
  4. Julien W.

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    J'adore cette discussion :D

    En fait, il est facile de raisonner avec cette formule:
    Result = Backgrond * (1-alpha) + Foreground

    Allons-y cas par cas. Imagine un endroit où l'alpha vaut 1 (donc blanc).
    Background * (1-1) + Foreground = Background * 0 + Foreground = Foreground.
    On est d'accord? Là où l'alpha est totalement blanc, on ne voit que le premier plan.

    Ensuite imaginons que l'alpha est gris, donc 0.5.
    Background * (1-0.5) + Foreground = Background * 0.5 + Foreground.

    Maintenant si l'alpha vaut 0...
    Background * (1-0) + Foreground = Background + Foreground.
    Nous avons là une classique addition (donc mode de transfert "Ajouter").
    Ce qui démontre bien que si l'alpha est noir, l'image est ajoutée au fond. Donc, l'éclaire est ajouté au fond.

    Biensûr ce n'est valable que dans un cas où l'image est pré-multipliée, car, normalement, là où l'alpha vaut 0 l'image en RGB est noire (dans un cas normal, où l'alpha est le même que l'alpha qui a multiplié auparavant les couches RGB). Et le noir (0) ajouté au fond, ça donne le fond.

    J'ai bien lu tout les documents concernant le sujet. Le plus intéressant est le fait que lorsqu'on combine deux images avec un alpha "straight", on obtient une image pré-multipliée.

    Je donnerai un avis un peu plus poussé une autre fois, il se fait tard :D
     
  5. allaigrg

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    177
    salut

    en faite la formule :
    C = A * (1-alpha) + B
    ne s'applique que si A et B sont premultiplier ?
     
  6. Julien W.

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    En fait, cette formule ne s'applique que si A est pré-multiplié et si B n'a pas d'informations de transparance.

    La formule complète est la suivante:
    C’ = B’ + (1-b)A’ = B’ + A’ - bA’

    A étant le premier calque, 'a' sa couche alpha, A'=A*a la version pré-multipliée de ce calque.

    Si l'on travaille en "straight", on a ces formules:
    C’ = bB + (1-b)aA = bB + aA - baA
    c = b + (1-b)a = b + a - ab
    C = C'/c

    Comme tu peux le constater, la pré-multiplication est, en quelque sorte, nécessaire. Si l'alpha n'est pas déjà pré-multiplé, il est pré-multiplié lorsqu'il est composé.

    Toutes les explications ici: ftp://ftp.alvyray.com/Acrobat/4_Comp.pdf
     
  7. allaigrg

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    177
    ok
    en faite ce qui me manquait c'est que quand tu composes avec le formule normal :

    C' = (bB + (1-b)aA = bB + aA - baA)
    c = b + (1-b)a = b + a - ab
    C = C'/c

    tu obtiens C' qui est l'image premultiplier donc pour simplifier on a invinter ce mode là pour pas faire la division de C' par c.

    c'est l'inverse par rapport à ta formule
    C’ = B’ + (1-b)A’ = B’ + A’ - bA’
    car B' est le foreground et A' le background

    en gros si on a 3 calques A,B et C
    les 3 sont premultipliers en A',B' et C'

    dans l'ordre de la composition on a :

    C'
    B'
    A'

    on compose A' et B' on obtient D' :
    D'=B'+(1-b)*A'

    ensuite D' et C' :
    E'=C'+(1-c)*D'

    ok ça doit etre ça

    merci
     
  8. Julien W.

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    En fait c'est pas vraiment l'inverse, il y a juste les termes qui sont inversés:
    Par contre je me suis trompé avec la première formule que j'ai donné; c'est exactement la même (je t'ai dit qu'elle ne marchait que lorsqu'une seule des deux images avec une alpha, c'est faux).

    Donc:
    C = A * (1-alpha) + B

    Signifie en fait (avec la bonne notation):
    C' = A' * (1-alpha) + B'

    Et c'est la même chose que:
    C' = B' + (1-alpha)*A'

    Tout à fait. Deux images "straight" donnent une image pré-multipliée.
    Et comme expliqué dans le PDF, un problème se pose après si on veut re-combiner à nouveau le résultat à une autre image non-multipliée. On se retrouve avec une image pré-multipliée, et une image non-multipliée.
    Donc faut-il diviser la première par son alpha, pour la dé-multipliée? Ou alors multiplier la deuxième?

    Au final on remarque qu'il est beaucoup plus simple de tout pré-multiplié.
    Au départ c'était surtout à cause du temps de calcul.
    Maintenant c'est pour d'autres raisons. Par exemple parce que l'on peut retoucher une image pré-multipliée, et ces zones retouchées seront additionnées à l'autre image (c'est l'exemple plus haut avec les éclairs).
     
  9. jonz

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    352
    salut.. je passais par la...

    Ok je vais être un peu pragmatique meme si j"ai un interet grandissant pour cette discussion. C'est pourquoi je vais vous poser une question qui risque de refroidir l'ambiance.

    Qu'est ce qu'apporte le 'vrai' mode premultiplié outre un mode addition dans les zones masqués par la couche alpha?

    Concretement j'ai l'impression que ca sert a rendre "plus pratique" l'application d'effets de lumieres (eclaires / sabre laser, neon), mais encore...?
     
  10. Julien W.

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    Je cite MasterZap:


    Donc oui, je pense que tu as tout dit. La pré-multiplication n'apporte rien d'autre, si ce n'est une certaine "logique".
     
  11. allaigrg

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    177
    salut

    en faite l'image avec le gamin est dejà premultiplier ?
    Le truc que je comprends pas encore c'est dans after effects quand tu lui dis que l'image est premultiplier il faut lui donner une couleur. Cette couleur est utilisé où dans les formules ?

    merci
     
  12. Doigtscarrés

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    213
    Je suis la discussion depuis le début ainsi que celle de Julien sur le Jedi Council Forum ...pour tenter de comprendre enfin quelque chose...

    Allaigrg, ce que j'ai compris, c'est que traditionnellement on utilise le noir comme couleur pour prémultiplier...et une image noire en rgb c'est : (0, 0, 0)... donc cela n'a pas d'influence dans la formule.

    Maintenant, je ne sais pas ce que cela donne si on veut prémultiplier depuis une autre couleur... (je n'ai pas encore lu tout les documents qui ont été cités)

    I may be completely wrong... mais j'espère que Julien voudra bien nous éclairer plus.

    A+

    DC.
     
  13. Julien W.

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    En fait, comme l'a dit MasterZap, une pré-multiplication avec autre chose que du noir est stupide.
    Je m'explique. Vous être d'accord qu'une image pré-multipliée, c'est une image RGB multipliée par son alpha.
    Maintenant, une couche alpha est blanche et noire. Si l'on exprime les couleurs de 0 à 1, on remarque tout de suite que, lors de la multiplication, les zones blanches de l'alpha (1) multipliées par les couches RGB donnent les couches RGB (car 1 * n'importe quoi = n'importe quoi). Et que les zones noires (0) multipliées par les couches RGB donnent du noir (car 0 * n'importe quoi = 0).
    Par conséquant une image "pré-multipliée" est NOIRE là où son alpha est noir.
    Donc une VRAI pré-multiplication donnera une image sur fond NOIR, TOUJOURS.

    Oui, tout à fait.

    Pré-multiplier une image, c'est facile. Importez une image contenant les couches RGB et une image contenant l'alpha dans une nouvelle composition, et passez le mode de transfert d'une des images (peu importe laquelle, vu que la multiplication est COMMUTATIVE (...enfin, dans le cas qui nous concerne)) à MULTIPLIER. Vous venez de pré-MULTIPLIER l'image RGB par son alpha.

    D'ailleurs on peut aussi aller plus loin.
    Si on prend la formule suivante: C' = A' + (1-a)*B'
    On peut la décomposer en plusieurs opérations. Tout d'abord une addition (mode de transfert Ajouter), puis le 1-alpha n'est rien d'autre que l'inverse de alpha (avec des valeurs allant de 0 à 1), et la multiplication c'est, on l'a vu, une multiplication.
    Donc vous pouvez importer deux images pré-multipliées (ou les pré-multipliées à la main comme je l'ai expliqué plus haut), inverser l'alpha de l'image supérieure, la multiplier avec l'image inférieure, puis additionner le résultat avec l'image supérieure (pré-multipliée).
    Essayez seulement avec les images du fils de MasterZap, vous obtiendrez exactement le même résultat.
     
  14. allaigrg

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    177
    les logiciels 3D donnent en general des images premultiplier.
    Ok maintenant j'ai bien compris.
    En faite dans la plupars des logiciels par exemple 3dsmax donne des images premutliplier avec le fond noir.
    Je comprends pourquoi vous dites qu'utiliser une autre couleur que le noir n'a pas de sens.
    pourtant photoshop c'est blanc ? non ?

    pour tester tous ça j'ai fait un petit prog en C et ça donne bien l'image souhaité

    merci, je crois que pas beaucoup de gens ce pose la question sur les images premultiplier et pourtant c'est important.
    @+
     
  15. Julien W.

    Appréciations:
    +0 / 0 / -0

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    1 499
    Oui, tout à fait. D'ailleurs une fois je me suis battu avec 3ds max pour essayer d'exporter sans pré-multiplication. Et je me rapelle d'avoir été étonné que la documentation ne disait que du bien de la pré-multiplication, alors que celle d'After Effects disait presque le contraire!

    Je n'ai pas le temps de vérifier, mais en effet je pense que tu as raison. D'ailleurs il me semble que MasterZap en parle.
    D'après ce dont je me souviens, il disait qu'After Effects est une sorte de Photoshop adapté à la vidéo, et bien que Photoshop soit un excellent programme graphique, son "principe de fonctionnement" n'est pas du tout adapté à la vidéo.
    Enfin... j'ai tendance à le croire donc je ne suis pas allé vérifier.

    Je serais très intéressé à jetter un coup d'oeil au code! Si c'est possible, bien entendu.

    Tout à fait d'accord. Et il en va de même pour le principe de l'image LINEAIRE... principe qui est à mon avis NETTEMENT plus important, et aussi NETTEMENT connu.
     
Chargement...
Discussions similaires - L'alpha prémultipliée After
  1. JB60
    Réponses:
    7
    Nb. vues:
    1 274

Partager cette page