web-dev-qa-db-fra.com

formule de correction gamma:. ^ (gamma) ou. ^ (1 / gamma)?

Je recherche une formule de correction gamma simple pour les images en niveaux de gris avec des valeurs comprises entre 0 et 255.

Disons que le gamma de mon écran est de 2,2 (c'est un écran LCD donc j'aurais probablement besoin de l'estimer avec une procédure plus compliquée, mais supposons que mon écran se comporte bien).

Laquelle des formules suivantes serait la bonne?

  1. Corrected = 255 * (Image/255).^2.2

OR

  1. Corrected = 255 * (Image/255).^(1/2.2)

(Ceux-ci sont destinés à être des codes MATLAB mais j'espère qu'ils sont compréhensibles même pour les personnes non MATLAB)

J'ai cherché sur Internet mais j'ai trouvé les deux formules. Je soupçonne que (2) est le bon, et ma confusion est due à la tendance à appeler la "valeur gamma" l'inverse de la valeur gamma réelle, mais j'apprécierais vraiment les commentaires de personnes qui savent de quoi ils parlent .. .

35
user42174

La correction gamma contrôle la luminosité globale d'une image. Les images qui ne sont pas corrigées peuvent sembler blanchies ou trop sombres. Supposons qu'un écran d'ordinateur ait 2.2 fonction de puissance en tant que courbe de réponse intensité-tension. Cela signifie simplement que si vous envoyez un message au moniteur qu'un certain pixel doit avoir une intensité égale à x, il affichera en fait un pixel dont l'intensité est égale à x2.2 Parce que la plage de tensions envoyées au moniteur se situe entre 0 et 1, cela signifie que la valeur d'intensité affichée sera inférieure à ce que vous vouliez qu'elle soit. Un tel moniteur aurait un gamma de 2.2.

Donc dans votre cas,

Corrected = 255 * (Image/255)^(1/2.2).
25
Deepu

Les deux formules sont utilisées, une pour coder le gamma et une pour décoder le gamma.

Le codage gamma est utilisé pour augmenter la qualité des valeurs d'ombre lorsqu'une image est stockée sous forme de valeurs d'intensité entières, donc pour effectuer le codage gamma, vous utilisez la formule:

encoded = ((original / 255) ^ (1 / gamma)) * 255

Le décodage gamma est utilisé pour restaurer les valeurs d'origine, donc la formule pour cela est:

original = ((encoded / 255) ^ gamma) * 255

Si le moniteur effectue le décodage gamma, vous souhaitez utiliser la première formule pour coder les données d'image.

29
Guffa