Como meu cursor é mais branco que branco?

21

Recentemente, notei que meu cursor era mais branco que o fundo branco (0xFFFFFF puro). Originalmente, pensei que era uma ilusão de ótica, pois as capturas de tela mostravam que o fundo e o cursor estavam em 0xFFFFFF. Então tirei uma foto do cursor e ela mostra claramente uma diferença no brilho:

Foto do cursor

Coloquei um filtro de mosaico na imagem para ver melhor o brilho médio:

Foto do cursor com filtro de mosaico

O interior da seta é cerca de 191 cinza (0xBF) e o fundo é cerca de 177 cinza (0xB1), o que significa que o branco do cursor é cerca de 8% mais brilhante que o branco puro do fundo.

Que hardware está fazendo isso e como? As informações de cores estão sendo transmitidas com mais de 8 bits por canal?

O computador é o Windows XP com uma placa de vídeo NVIDEA GeForce 8500 GT conectada a uma TV Samsung 5100 por meio de um cabo HDMI.

Outra foto:

Dois cursores e um quadrado sombreado

Um cursor de hardware, uma captura de tela do cursor de hardware e um quadrado de 16x16 de cada valor da escala de cinza de 0 a 0xFF em blocos 2x2.

Dois cursores e um quadrado sombreado com filtro de mosaico

O mesmo que a imagem anterior, mas com um filtro de mosaico aplicado. Deveria ser óbvio qual é o cursor real e qual é a captura de tela do cursor na foto. O brilho desta vez é 185 e 170, ainda com cerca de 8% de diferença. Usando um seletor de cores, a cor que é 170 na foto é 0xFFFFFF na tela. Não consigo usar o seletor de cores no próprio cursor porque ele mostra a cor diretamente abaixo do cursor.

CJ Dennis
fonte
Você já brincou com as configurações de brilho ou contraste do seu monitor?
519 Ron
1
Se as imagens acima do problema foram capturadas usando qualquer item de câmera que processa as imagens brutas do sencor (todas elas são armazenadas em formatos de arquivo brutos), os resultados visuais já foram alterados pelo processamento dos dados do sencor das câmeras. Para aliviar esse problema, seria ter um "controle". No fundo branco, tenha uma imagem de um cursor (não um cursor separado renderizado) e observe como eles são diferentes. Usando vários métodos e aplicando controles, você poderia assumir onde ocorreu.
Psycogeek 5/05
@ Psycogeek Acho que o software aos meus olhos está fazendo a mesma coisa então. Como faço para acessar os dados brutos do meu olho? Sério, a única coisa que fiz na imagem foi cortá-la no bit relevante. Eu poderia fazer upload de uma imagem de uma captura de tela do cursor com o cursor real ao lado, mas não seria mais esclarecedor do que eu já expliquei. O brilho (como eu o entendi anteriormente) varia entre 0 e 255 (0xFF) por canal de cor. Se o branco dentro do cursor estivesse na mesma escala, seria aproximadamente 275 (0x113) e simplesmente não há espaço suficiente em 8 bits para codificar isso.
CJ Dennis
@ user2714915 Não ajustei o brilho ou o contraste em lugar algum ! Isso realmente não chega ao cerne da minha pergunta: como o cursor pode ser mais brilhante que a cor mais brilhante que pode ser codificada em 8 bits quando meu modo gráfico é de 8 bits por cor de canal?
CJ Dennis
@CJDennis: Quais programas são afetados? Parece-me um problema de calibração gama.
James P

Respostas:

10

Conforme mencionado na resposta da Psychogeek, esse é um problema com a configuração do perfil de cores pelo sistema operacional.

Os perfis de cores podem ser aplicados pelo aplicativo, pelo sistema operacional, pela placa de vídeo e pelo hardware da tela.

Para perfis de cores do SO no Windows, quando enviado para a placa de vídeo, o perfil de cores é aplicado de maneira diferente ao cursor e à imagem na tela, o que pode resultar em cores diferentes se o perfil de cores alterar o ponto branco. No seu caso, o cursor é enviado como branco verdadeiro, enquanto a imagem abaixo tem um perfil de cor aplicado, alterando o ponto branco para um nível mais baixo.

O cursor é enviado para a placa de vídeo separadamente do restante dos dados da tela e é misturado pela placa de vídeo posteriormente durante a renderização, antes de ser enviado para a tela.

Em um nível simplificado:

[Cursor Draw]   --   --   --   --   --   --   --
                                               ˅
[Windowing] --> [OS Profile] --> [Video Driver] --> [Video Card] --> [Hardware Profile] --> ...

Uma captura de tela não aplica o perfil de cores do SO aos dados da "captura", pois são capturados no estágio de janelas. Geralmente, a captura de tela não mostra o cursor, porque é capturada mesmo antes da aplicação do perfil do SO. No entanto, certas ferramentas (que suponho que você usou) para capturar a tela misturam o cursor sobre a imagem da mesma forma que a placa de vídeo. Como os níveis de branco do cursor e o fundo são ambos 100%, a captura de tela tem o mesmo nível de branco para ambos.

O comportamento normal que você está vendo pode ser corrigido usando um monitor ou placa de vídeo com um hardware LUT para calibração de cores ou forçando o desenho do cursor a ocorrer em um ponto de renderização diferente, consulte esta pergunta sobre Photo.SE . Você também pode editar a imagem do cursor e alterar o nível de branco, se isso o incomodar. No entanto, acho que torna o cursor mais visível na tela.

Richie Frame
fonte
Concordo que o cursor é mais perceptível. Isso não me incomoda, eu estava apenas curioso sobre como isso é possível tecnicamente. O HDMI carrega mais de 8 bits por canal ou o restante da imagem é compactado (como na compactação de áudio, não na compactação de dados digitais), para que alguns níveis sejam equivalentes ao nível vizinho?
CJ Dennis
1
O HDMI está transportando dados não compactados, provavelmente a 8 bits por canal no seu caso, mas é capaz de transportar mais. Esse problema ocorre antes do sinal HDMI
Quadro Richie
en.wikipedia.org/wiki/Uncompressed_video menciona que o HDMI pode ter 24, 30, 36 ou 48 bits por pixel (8, 10, 12 ou 16 bits por canal). Portanto, se estiver sendo enviado como 10 bits por canal no meu sistema, o branco "puro" pode ser 0x3B3 por canal, enquanto o branco do cursor é 0x3FF. Isso permitiria que todos os 256 níveis de 8 bits fossem distintos, permitindo espaço para cores extra brilhantes para o cursor. A maioria dos níveis adjacentes teria uma diferença de 0x4, mas alguns seriam apenas 0x3.
CJ Dennis
Se você tiver a placa de vídeo criado para saída canais de 10 bits, então é 10 bits, mas não é provável que seja o caso
Quadro Richie
Encontrei uma configuração no painel de controle da NVIDIA que permite ajustar o brilho. Isso afeta apenas a imagem da tela, não o cursor. Eu posso diminuir o brilho até que o branco seja, aproximadamente, 0xC0, fazendo o cursor realmente se destacar! Não vejo nada sobre bits por canal de transmissão.
CJ Dennis
1

Essa resposta começa com uma análise de por que as coisas não são 1: 1 com o digital e termina com possíveis maneiras de mudar as coisas com base na sua pergunta real.

  • Tire uma foto com sua câmera, todos os dados do sensor são processados.
  • Então é comprimido até a morte.
  • Em seguida, move 1: 1 para o seu computador.
  • Onde é exibido sendo ajustado por qualquer perfil de cores do SO.
  • Onde é desenhada digitalmente em uma placa de vídeo que não apenas pode ser ajustada pelo usuário, mas também pode ter alguns truques de cores.
  • Enviado para o monitor 1: 1.
  • Onde ele pode ser completamente atacado no processamento, antes de chegar a um painel de exibição.
  • O próprio painel de exibição não é capaz de renderizar todos os seus aspectos.
  • As cores da luz de fundo variam em porcentagens enormes, com base no espectro de cores que a luz de fundo emite.

Nesse caso, o cursor é (provavelmente) um item renderizado por hardware que é sobreposto no hardware da placa de vídeo. A primeira coisa a analisar ou tentar ajustar para alterá-lo é o perfil do monitor e / ou os perfis de cores aplicados pelo SO. Os perfis de cores são encontrados no Painel de controle, Todos os itens do painel de controle, Gerenciamento de cores. Lá, você encontrará perfis de cores que alteram a cor antes que cheguem ao próprio monitor.
Os perfis podem ser desativados, para que você possa observar o efeito que ele tem.

Ajustes no software da placa de vídeo. A área de trabalho, o 3D e o material de desenho direto de Vídeo são todos controláveis, mesmo que essas coisas não tenham sido ajustadas no software da placa de vídeo, pode ser que, com tudo definido como 0 0 0, ainda exista algum processamento. Você pode tentar usá-lo para combinar com a sobreposição do cursor, se houver algum motivo real para se preocupar com isso.

A placa de vídeo está sobrepondo o cursor renderizado por hardware e não usa os mesmos parâmetros para o resto do plano de fundo, e é exatamente assim que está funcionando.

- com base na foto de controle, o restante não se aplica a essa pergunta específica -

Outra possibilidade são as configurações do monitor, embora isso seja menos provável. O contraste automático, os itens de cores automáticas em monitores e TVs podem equilibrar enormes áreas claras ou escuras e muitas vezes causar alterações indesejadas. Os ajustes automáticos de cor e nivelamento nos monitores nem sempre são ajustáveis ​​e usam muitos nomes fofos diferentes para as ações que realizam.

Perfis em monitores como jogo, filme, área de trabalho ou quaisquer nomes que eles usem para perfis definem configurações específicas de cor e contraste e brilho que consideram úteis para o perfil selecionado e, novamente, podem ser alterações indesejadas, mesmo para as seleções de perfil adequadas.

Algoritmos de nitidez na câmera, provavelmente na placa de vídeo, mas novamente no monitor podem criar uma matriz de realce em torno das áreas, aumentando os contrastes originais ou (é claro) reduzindo-os. Nesta questão, é menos provável que o branco se expanda além dos pixels aos quais uma matriz de nitidez se aplicaria, a menos que houvesse dois processos diferentes.

A lista fica ainda mais longa quando, na verdade, não é necessário que o software tenha fundos brancos fortes, eles podem ser ajustados. O sistema operacional e os programas podem ter um plano de fundo que não é branco, mas você já sabe que não é assim. Nesta pergunta, se você selecionou a cor do plano de fundo, na área de trabalho ou programa original.

A seleção de cores na área de trabalho mostra a cor do pixel (ou pixels) existente, fornecendo ao usuário os fatos sobre o que o programa está exibindo. A foto colorida é exibida antes que qualquer perfil de cor ajuste a saída. Portanto, a escolha de cores é uma ótima maneira de descobrir a cor real. Em seguida, ele ainda passa pelo processamento novamente.

Existem programas que farão uma captura de tela com o cursor sobreposto. a partir disso, uma pessoa pode fazer uma escolha de cores, mas, novamente, o cursor pode ser desenhado usando um método diferente e processado da mesma maneira que o resto. Portanto, embora seja possível fazer uma captura digital de tela da tela e inclusive do cursor, isso pode mudar o que é realmente visto aqui.

Psycogeek
fonte