Si une image RVB 24 bits avec une plage de 0 à 255 par canal est affichée sur un téléviseur qui affiche une plage d'env. 16-235 par canal, les détails des couleurs seront perdus, n'est-ce pas?
Dans l'affirmative, les images doivent-elles être prétraitées pour ne stocker qu'une plage valide? Je voudrais le faire avec du code, pas dans une application d'édition d'image. Je me rappelle vaguement avoir lu qu'une cartographie linéaire n'est pas la meilleure façon de le faire, mais malheureusement je ne trouve pas l'article que je lisais! Comment s'appelle ce processus? Quels autres détails dois-je savoir?
Le mappage linéaire n'est probablement pas la meilleure solution (ce qui, je crois, implique de convertir votre RVB en espace colorimétrique CIE , de le redimensionner et de le reconvertir), mais il est très facile à mettre en œuvre, et la différence de plage est suffisamment petite, cela n'aura probablement pas d'importance .
Si vous utilisez SOIL , il peut le faire automatiquement lors du chargement de l'image, en passant SOIL_FLAG_NTSC_SAFE_RGB aux fonctions de chargement.
La documentation de Microsoft dit de bloquer et recommande de le faire dans un pixel shader. (La mise à l'échelle linéaire devrait également être facile en un seul.) Il mentionne également l'exploration de la chrominance, ce qui, selon mon expérience, est un phénomène beaucoup plus ennuyeux lorsque vous travaillez sur des écrans de télévision.
la source