Question

J'ai une image en niveaux de gris d'une photographie. J'avons déterminé que certaines parties de l'image sont underilluminated, et en ce qu'un pixel de luminance Y = 0,8 doit effectivement être ajustée à 90% de gris, à savoir, ce pixel doit être donnée luminance 0,9. Ma question est Comment puis-je échelle les autres pixels à proximité? Je suis assez sûr multiplier tous les luminances par 9/8 est faux, parce que je me souviens vaguement avoir entendu que pour Rechercher uniforme, l'échelle doit être non linéaire. Mais je vais avoir du mal à trouver une équation qui me permettrait de progresser. (Bien sûr, je suis en train d'écrire un programme pour faire cet ajustement à un grand nombre de photos.)

La source de mes pixels est le format pbmplus PGM, dont la page de manuel dit:

  

Chaque valeur de gris est un nombre proportionnel à l'intensité de la   pixel, ajusté par la CIE Rec. 709 fonction de transfert gamma. (Cette   fonction de transfert spécifie un numéro de gamma de 2,2 et a un linéaire   section pour les petites intensités). Une valeur de zéro est donc noire.   Une valeur de Maxval représente le blanc CIE D65 et la valeur la plus intense   à l'image et une autre image à laquelle peut être comparée l'image.

Si je comprends mieux cela, je serais probablement une meilleure idée de la façon de procéder.

J'ai trouvé une question connexe sur faire une image de luminosité uniforme .


Merci Shmoopty pour me faire sur la bonne voie. J'ai accepté votre réponse puis ajouté quelques informations à lui.

Était-ce utile?

La solution

Vous voulez probablement correction gamma , qui gardera vrai noir blanc et vrai correcte , tout en fléchissant les valeurs entre les deux.

La formule pour l'ajustement du gamma, lorsque l'entrée est dans la gamme (0,0, 1,0) est la suivante:

output = pow( input, gamma )

... où gamma éclairera quand moins de 1,0 et assombrir quand 1.0 ci-dessus.

Pour pousser 0,8 à 0,9, vous calculer log(0.9)/log(0.8) pour obtenir un gamma de 0,4722 .

Notez que ceci est l'une des très nombreuses formules - et il est mathématiquement plus simple qui préservera noir et blanc comme couleurs uniques (dont certains considèrent important) - mais il n'y a pas de formule unique et correcte pour donner vous ce qui est "vrai".


Additif: I a vérifié que la correction de gamma peut être appliquée à des valeurs qui sont déjà gamma-codé. Il est difficile de transcrire les mathématiques en Markdown, mais la loi algébrique clé est

(y**a)**b == y**(a*b) == y**(b*a) == (y**b)**a

Si vous appliquez cette loi, vous pouvez déterminer que les corrections gamma trajet, il est donc OK pour appliquer la correction gamma aux valeurs déjà corrigées. -NR

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top