module inscription newsletter haut de page forum mobile

Ateliers et Formations

[Problème] 32768 niveaux en16 bpc

Discussion in 'Archives moteurs' started by Sequelles, Apr 24, 2012.

Tags:
  1. Sequelles

    Sequelles Modérateur
    Modérateur So

    Trophy Points:
    11,780
    Likes Received:
    20
    Messages:
    4,261
    Appréciations:
    +2 / 13 / -0
    Bonjour,

    pourquoi en 16 bpc la valeur maximal d'un canal est de 32768 or que 2^16 = 65536 ?

    la bonne réponse gagne une semaine d'accès aux formations video2brain ;)
     
  2. Robinsstudio

    Trophy Points:
    1,520
    Likes Received:
    9
    Messages:
    271
    Appréciations:
    +0 / 1 / -0
    Bonjour,

    Et bien parce que la répartition des 16 bits se fait de la manière suivante :

    - 5 bits pour le canal rouge
    - 5 bits pour le canal vert
    - 5 bits pour le canal bleu
    - 1 bit pour le canal alpha

    Donc en faisant le calcul, on obtient bien 32768 valeurs. :good:
     
  3. dahis

    Trophy Points:
    300
    Likes Received:
    1
    Messages:
    12
    Appréciations:
    +0 / 0 / -0
    J'allais répondre un truc bien bêta :
    Si 2^16=65536, alors il est normal que 1^16 fasse 32768 (65536/2 quoi...)

    Je vous avais prévenu, c'est une réponse de novice...:D
     
  4. Robinsstudio

    Trophy Points:
    1,520
    Likes Received:
    9
    Messages:
    271
    Appréciations:
    +0 / 1 / -0
    OH ! ooo 1^16 = 1 !!!
     
  5. dahis

    Trophy Points:
    300
    Likes Received:
    1
    Messages:
    12
    Appréciations:
    +0 / 0 / -0
    Rire ! Oui euh, je précise que j'essayais de faire une blague...
    Je suis pas sûre que mon humour ait bien été comprit...
    Je suis désolée...:sad:
    J'ai honte...:cry2:
     
  6. Sequelles

    Sequelles Modérateur
    Modérateur So

    Trophy Points:
    11,780
    Likes Received:
    20
    Messages:
    4,261
    Appréciations:
    +2 / 13 / -0
    Non si l'alpha était sur 1 bits il n'y aurai pas d'alpha car il y aurait que deux états 100% opaque ou 100% transparent, pas très intéressant comme alpha :mdr:
     
  7. Spunker

    Trophy Points:
    300
    Likes Received:
    1
    Messages:
    9
    Appréciations:
    +0 / 0 / -0
    J'arrive après la tempête, mais je viens de tomber sur le sujet qui m'a intrigué car je me suis souvent posé la question, sans chercher vraiment la réponse, mais là je crois bien que je l'ai trouvée.
    Au début je pensais à une simple checksum (la quantification d'une couche est sur 15bits + 1bit de parité).
    Mais la correction d'erreur n'intervient généralement que pour les phases de compression puis de transmission (et c'est autre chose qu'un simple checksum)

    Ensuite je me suis souvenu qu'en C++ on utilise le bit shifting au lieu du bit divided quand on veut faire des opérations en nombre entier (16bpc d'AE), et non en virgule flottante (avec une décimale), comme le 32bpc d'AE.
    C'est beaucoup plus rapide.

    En gros le bit shifting c'est ça :
    - on a par exemple un mot de 16 bits :
    0000 0000 0000 0101 (5 en valeur décimal)
    On le shift (décale) à gauche, on a :
    0000 0000 0000 1010 (10 en valeur décimal)
    On a donc multiplié par 2 !
    Et donc on peut faire des multiplications par 2 successives

    Pour retrouver notre valeur initiale, on a juste à faire un right shift :
    0000 0000 0000 1010 (10) - > 0000 0000 0000 0101 (5) !
    Mais attention, il y a un piège ! J'y reviendrais plus tard !

    Donc avec le shifting, on peut faire des divisions et multiplications successives par 2.
    ->Left shift de 3 bits : multiplication par 2^3 = 8
    ->Right shift de 4 bits : division par 2^4 = 16

    Prenons ce mot binaire de 12 bits :
    1101 0010 0001 (3361 en décimal)
    Left-shiftons le de 3 :
    100 1000 1000 (1288)
    Vous remarquerez qu'on a perdu nos deux premiers 1 !
    Right-shiftons ensuite de 4 :
    000 0100 1000 (72)

    On est donc passé de 3361 à 72 juste en décalant à deux reprise la valeur binaire.
    C'est comme si on avait divisé 3361 par 46.68055 pour obtenir 72.

    La division a toujours été une opération complexe pour un processeur qui lui demandera toujours plus de temps de calcul.
    Le bit-shifting est beaucoup plus rapide à calculer pour un processeur. Et souvent en infographie, comme dans pas mal de softs demandant des ressources CPU, on utilisera cette methode.
    Mais avec les procos actuels, je pense qu'un bit divided ne serait pas non plus insurmontable ...
    Le problème du bit-shifting est qu'il donnera un résultat imprécis, par rapport un bit divided classique.

    Revenons à notre première opération, on a perdu nos deux premiers 1 !
    C'est bête, car il faudrait garder en mémoire notre chiffre de départ (3361).

    Admettons maintenant une valeur de Rouge sur un pixel qui à une valeur décimale de 3361 sur un mot de 16 bits (65 536 valeurs), mais qui en réalité n'est codé que sur 15 bits (32768 valeurs).
    En terme de pourcentage, sur AE, ça reviendrait à un rouge de 3361/(2^15) c'est à dire 33615/32768, ou encore 10,25%

    Là, on va passer à la partie où je ne suis pas sûr à 100%...
    After Effects va se servir des 32768 valeurs inutilisées comme zone de mémoire, pour stocker le chiffre initial, avant sa division/multiplication successive.(mais sinon, à quoi sert la RAM ??)
    Avec le premier bit qui sert à indiquer la polarité (complément à un), on est donc sur une fourchette de [-32768,32767] en 16 bits
    (mais ça je suis pas sûr du tout, il faut que je me renseigne ...)
    Du coup, à cause de la complémentarité, la valeur max est de 32767 en 16 bits.

    Voilà, je crois sincèrement que c'est pour tout ça :p
    Par contre, ça n'explique toujours pas pourquoi en 8 bits, on est bien à 8bits et pas à 7 effectifs...
     
  8. Sequelles

    Sequelles Modérateur
    Modérateur So

    Trophy Points:
    11,780
    Likes Received:
    20
    Messages:
    4,261
    Appréciations:
    +2 / 13 / -0
    Merci de revenir sur le sujet :-)

    Comme tu dis je ne vois pas pourquoi ton explication ne s'applique pas aux autres modes.

    Dans les options de la palette info on peut lire :
    8 bpc (0 - 255)
    10 bpc (0 - 1023)
    16 bpc (0 - 32768)

    donc ce qui est curieux aussi c'est que l'on compte bien le niveau 0 pour les deux premiers : 0 à 255 donne 256 niveaux mais pour le 16 bpc si c'était en fait du 15 bpc ça devrait afficher (0 - 32767) :perplexe:
     
  9. Spunker

    Trophy Points:
    300
    Likes Received:
    1
    Messages:
    9
    Appréciations:
    +0 / 0 / -0
    Hello !

    Peut-être qu'il y a un bit divided sur les 8bpc et 10bpc ?
    Diviser en bit-divided avec 256 ou 1024 niveaux est beaucoup plus rapide que diviser en bit-divided avec 32768 niveaux.
    Et en 32bpc virgule flottante, le compilateur divise des nombres à décimale donc il n'y a pas de soucis pour la rapidité (le proc doit quand même être capable de calculer en virgule flottante, mais depuis une paire d'années, ils sont tous capables de le faire).

    1ère possibilité : Pour ce qui concerne le 16 bits, ce n'est pas vraiment du 15bits + 1. L'info est bien codée sur 16 bits, dont la première unité sert peut-être de polarité. Alors oui, sur le papier, l'image passe forcément en 15 bpc, mais le tout reste codé sur 16bits.

    Je ne suis en revanche pas sûr du tout pour le stockage négatif de l'info de départ.

    2ème possibilité :Ou peut être que tout simplement parce que le rendement et le taux d'erreurs avec un bit-shifting est meilleur à 15bits qu'à 16bits et qu'Adobe a préféré tronquer une unité après une interpolation, la perception d'une différence de couleurs par l'oeil entre 32768 et 65536 niveaux étant négligeable.


    En tout cas, je suis sûr du bit-shifting pour le 16bpc et que c'est probablement la raison d'un passage à 32768 niveaux. C'était le cas il me semble sur Max et bons nombres de softs d'infographie à l'époque si on avait pas de FPU pour calculer en virgule flottante.

    Edit : je vais faire des recherches en partant du bit-shifting
     
    #9 Spunker, Aug 17, 2012
    Last edited: Aug 17, 2012
  10. Spunker

    Trophy Points:
    300
    Likes Received:
    1
    Messages:
    9
    Appréciations:
    +0 / 0 / -0
    J'ai trouvé ! Je m'étais pas gouré.

    Adobe Forums: 16-bit or 15-bit+1?

    Si c'est le cas pour Photoshop, ça doit être le cas pour AE !
    Par contre, je pige pas en quoi le blending serait amélioré :perplexe:
     
    • Je recommande ! Je recommande ! x 1
  11. Sequelles

    Sequelles Modérateur
    Modérateur So

    Trophy Points:
    11,780
    Likes Received:
    20
    Messages:
    4,261
    Appréciations:
    +2 / 13 / -0
    Bravo pour avoir trouvé ces infos ! :good:

    Mais je suis pas très sur de savoir le réexpliquer :unsure:

    et regage tes mp ;-)
     
Loading...
Similar Threads - 32768 niveaux en16
  1. Amadis Dudu
    Replies:
    14
    Views:
    1,100

Dernières occasions

 

Share This Page