correction gamma formule : .^(gamma) ou .^(1/gamma)?
Je suis à la recherche d'une simple correction gamma formule pour les images en niveaux de gris avec des valeurs entre 0 et 255.
Disons que le gamma de l'affichage de mon écran est de 2,2 (c'est un écran LCD, alors je serais probablement besoin d'estimer avec une procédure plus complexe, mais supposons que mon écran se comporte bien).
Dont l'une des formules suivantes serait la bonne?
Corrected = 255 * (Image/255).^2.2
OU
Corrected = 255 * (Image/255).^(1/2.2)
(Ceux qui sont destinés à être MATLAB codes, mais j'espère qu'ils sont compréhensibles même pour les non-MATLAB personnes)
J'ai été chercher sur Internet mais a trouvé les deux formules passe autour. Je soupçonne (2) est la bonne, et ma confusion est due à la tendance à appeler "valeur gamma", l'inverse de la réelle valeur de gamma, mais je voudrais vraiment l'apprécier certains des commentaires par des gens qui savent de quoi ils parlent...
- vous êtes en droit de demander. tout cela est très confus.
Vous devez vous connecter pour publier un commentaire.
Gamma commandes de correction de la luminosité globale de l'image. Des Images qui ne sont pas corrigées pouvez regarder soit blanchi ou trop sombre. Supposons qu'un écran d'ordinateur a
2.2
fonction de la puissance comme l'intensité de la tension de la courbe de réponse. Cela signifie que si vous envoyez un message à l'écran un certain pixel doit avoir intensité égale àx
, il va afficher un pixel qui a intensité égale à x2.2 en Raison de la gamme de tensions envoyé au moniteur est entre0
et1
, cela signifie que l'intensité de la valeur affichée sera inférieure à ce que vous voulais. Un tel moniteur est dit d'avoir un gamma de2.2
.Donc dans votre cas,
Les deux formules sont utilisées, l'une pour encoder gamma, et l'un de décoder gamma.
Gamma de codage est utilisé pour augmenter la qualité des valeurs d'ombre lorsqu'une image est stockée en tant que nombre entier de valeurs d'intensité, de sorte à faire le gamma de l'encodage que vous utilisez la formule:
Gamma décodage est utilisé pour restaurer les valeurs d'origine, de sorte que la formule qui est:
Si le moniteur ne le gamma de décodage, vous pouvez utiliser la première formule d'encoder les données de l'image.
original
est une SYNTHÈSE de la valeur à partir de, disons, un moteur de rendu. (raytracing, raster quoi que ce soit). et est linéaire (physique) de l'espace. Sioriginal
est le pixel d'une photo, ou une texture, alors vous N'avez PAS à APPLIQUER une FORMULE, parce qu'ils sont déjà gamma codé. si vous le faites, vous aurez juste à faire des choses deux fois. Et c'est là que les choses se compliquent, si vous avez des textures comme entrée d'un convertisseur ? vous avez besoin de linéariser en appliquant la formule 2 d'abord, puis de faire des maths, puis gamma-identifier arrière pour le stockage.