7
votes

Antialiasing et compensation gamma

La luminence de pixels sur un écran d'ordinateur n'est généralement pas liée linéairement aux valeurs de triplet RVB numériques d'un pixel. La réponse non linéaire des CRT précoces nécessitait un codage non linéaire compensant et nous continuons à utiliser de tels codages aujourd'hui.

Généralement, nous produisons des images sur un écran de l'ordinateur et les consommons également, de sorte que tout fonctionne bien. Mais lorsque nous anticicias, la non-linéarité - appelée gamma - signifie que nous ne pouvons pas simplement ajouter une valeur alpha de 0,5 à un pixel couvert de 50% à 50% et nous attendons à ce que cela ressemble à bien. Une valeur alpha de 0,5 est seulement 0,5 ^ 2.2 = 22% aussi brillante qu'un alpha de 1,0 avec un gamma typique de 2,2.

existe-t-il une meilleure pratique largement établie pour la rémunération gamma antialiasing? Avez-vous une méthode d'animal de compagnie que vous utilisez au jour le jour? Quelqu'un a-t-il vu des études sur les résultats et les perceptions humaines de la qualité de la sortie graphique avec des techniques différentes?

J'ai pensé à faire une indemnité standard x ^ (1 / 2.2), mais c'est assez intense de calcul. Peut-être que je peux le rendre plus rapide avec une table de recherche de 256 entrées, cependant.


0 commentaires

4 Réponses :


2
votes

Les tables de recherche sont utilisées assez souvent pour travailler comme ça. Ils sont petits et rapides.

Mais que ce soit sur la recherche ou une formule, si le résultat final est un fichier d'image et que le format permet, il est préférable de sauvegarder un profil de couleur ou d'au moins la valeur gamma dans le fichier pour une visualisation ultérieure, plutôt que d'essayer de régler la suite. Les valeurs RVB vous-même.

La raison: pour les canaux R, G, B, G, B, vous avez 256 valeurs uniques dans chaque canal à chaque pixel. C'est presque suffisamment bon pour être bon à l'œil humain (je souhaite que "l'octet" avait été défini comme neuf bits!) Tout type de mathématique, mis à part une valeur d'inverversion de la valeur triviale, caraperait plusieurs à une pour certaines de ces valeurs. La sortie ne disposera pas de 256 valeurs à choisir de chaque pixel pour R, G, ou B, mais beaucoup moins. Cela peut conduire à contourner, jaggies, bruit de couleur et autres méchants.

Questions de précision de côté, si une sorte de qualité décente est souhaitée, tout ce type de qualité, de compostage, de mélange, de mélange, de correction des couleurs, d'addition de flare de lentille, de chromate-clé et de tout, devrait être effectuée dans l'espace RVB linéaire, où les valeurs de r , G et B sont proportionnellement à l'intensité de la lumière physique. L'image mathématique imite les mathématiques légères physiques. Mais où la vitesse ultime est vitale, il existe des moyens de tricher.


1 commentaires

Neuf octets? Vous aimez beaucoup d'octal? :-)



2
votes

Jim Blinns - Le livre "Dirty Pixels" décrit un calcul de composition rapide et bon en utilisant des tables de recherche de 16 bits Math Plus pour remonter avec précision l'espace de couleur linéaire. Ce gars a travaillé sur les visualisations de Nasas, il sait ses affaires.


0 commentaires

2
votes

J'essaie de répondre, mais principalement à des références maintenant, aux questions actuelles:

Premièrement, il existe les recommandations de l'UIT ( http : //www.itu.int/rec/t-rec-h.272-200701-h272-200701-I8/fr ) qui peut être appliqué à la programmation (mais vous devez connaître vos affaires).

dans la "Notation, la notation", la notation, la notation, le chapitre 9 de Jim Blinn, a une analyse erronée mathématique et perceptuelle très détaillée, bien qu'il ne couvre que la composition (de nombreuses autres tâches graphiques sont également affectées).

La notation qu'il établie peut également être utilisée pour dériver une façon de traiter avec gamma ou de vérifier si une manière donnée de le faire est réellement correcte. Très pratique, ma méthode de la PET (principalement comme je l'ai découverte de manière indépendante mais la plus tard a trouvé son livre).


0 commentaires

0
votes

Lors de la génération d'images, on fonctionne généralement dans un espace de couleur linéaire (comme RGB linéaire ou l'un des espaces de couleur CIE), puis se convertit à un espace RVB non linéaire à la fin. Cette conversion peut être accélérée dans du matériel ou via des tables de recherche ou même par des mathématiques difficiles. (Voir les autres réponses des réponses.)

Lors de l'exécution d'un mélange alpha (par exemple, rendez cette icône sur ce fond), ce type de précision est souvent élu en faveur de la vitesse. Les résultats sont calculés directement dans l'espace RVB non linéaire en liant avec l'alpha comme paramètre. Ce n'est pas "correct", mais c'est assez bon dans la plupart des cas. Surtout pour des choses comme des icônes sur des ordinateurs de bureau.

Si vous essayez de faire un mélange plus correct, vous le traitez comme un rendu original. Travaillez dans un espace linéaire (qui peut nécessiter une conversion initiale), puis convertir dans votre espace d'affichage non linéaire à la fin.

Beaucoup de graphiques utilisent aujourd'hui SRGB comme espace de couleur d'affichage non linéaire. Si je me souviens bien, SRGB est très similaire à un gamma de 2,2, mais il y a des ajustements apportés à des valeurs au bas de la fin.


0 commentaires