Se uma imagem RGB de 24 bits com faixa de 0 a 255 por canal for exibida em uma televisão que exibe uma faixa de aprox. 16-235 por canal, os detalhes da cor serão perdidos, correto?
Nesse caso, as imagens devem ser pré-processadas para armazenar apenas um intervalo válido? Eu gostaria de fazer isso com código, não em um aplicativo de edição de imagens. Lembro-me vagamente de ler que um mapeamento linear não é a melhor maneira de fazer isso, mas infelizmente não consigo localizar o artigo que estava lendo! Como se chama esse processo? Que outros detalhes eu preciso saber?
O mapeamento linear provavelmente não é a melhor solução (que eu acredito que envolve converter seu RGB em um espaço de cores CIE , redimensioná-lo e convertê-lo novamente), mas é muito fácil de implementar, e a diferença de alcance é pequena o suficiente, provavelmente não importará .
Se você usar o SOIL , ele poderá fazer isso automaticamente ao carregar a imagem, passando SOIL_FLAG_NTSC_SAFE_RGB para as funções de carregamento.
A documentação da Microsoft diz para prender e recomenda fazê-lo em um pixel shader. (O dimensionamento linear também deve ser fácil em um.) Ele também menciona o chroma crawl, que, na minha experiência, é um fenômeno muito mais irritante ao trabalhar em telas de TV.
fonte