Como meu cursor é mais branco que branco?

Como meu cursor é mais branco que branco?

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

Foto do cursor

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

Foto do cursor com filtro de mosaico

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

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

O computador é Windows XP com placa gráfica 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 16x16 de cada valor de escala de cinza de 0 a 0xFF em blocos 2x2.

Dois cursores e um quadrado sombreado com filtro de mosaico

Igual à imagem anterior, mas com filtro de mosaico aplicado. Deve 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 170 na foto é 0xFFFFFF na tela. Não posso usar o seletor de cores no próprio cursor porque ele mostra a cor diretamente sob o cursor.

Responder1

Conforme mencionado na resposta do Psychogeek, este é 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 do monitor.

Para perfis de cores do sistema operacional no Windows, quando enviado para a placa de vídeo, o perfil de cores é aplicado de maneira diferente ao cursor e à imagem da 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 cores aplicado, alterando o ponto branco para um nível inferior.

O cursor é enviado para a placa de vídeo separadamente do restante dos dados de exibição e é mixado 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 sistema operacional aos dados de "captura", pois eles são capturados no estágio de janelamento. Geralmente a captura de tela não mostra o cursor, pois ela captura antes mesmo de o perfil do sistema operacional ser aplicado. No entanto, certas ferramentas (que presumo que você usou) para capturar a tela irão misturar o cursor sobre a imagem da mesma forma que a placa de vídeo. Como os níveis de branco do cursor e do fundo são 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 LUT de hardware para calibração de cores ou forçando o desenho do cursor para ocorrer em um ponto de renderização diferente, veja istoPergunta 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 isso torna o cursor mais perceptível na tela.

Responder2

Esta 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 serão processados.
  • Então é comprimido até a morte.
  • Em seguida, ele se move 1:1 para o seu computador.
  • Onde é exibido sendo ajustado por qualquer perfil de cores do sistema operacional.
  • Onde é desenhado digitalmente em uma placa de vídeo que não só pode ser ajustada pelo usuário, mas também pode ter alguns truques de cores próprios.
  • Enviado para o monitor 1:1.
  • Onde pode ser completamente atacado no processamento, antes de chegar ao painel de exibição.
  • O próprio painel de exibição não é capaz de renderizar todos os seus aspectos.
  • As cores da retroiluminação variam em grandes porcentagens com base no espectro de cores que a retroiluminação emite.

Neste caso, o cursor é (provavelmente) um item renderizado por hardware que está 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 ao sistema operacional. Os perfis de cores são encontrados em Painel de controle, Todos os itens do painel de controle, Gerenciamento de cores. Lá você encontrará perfis de cores que alteram a cor antes de chegar ao próprio monitor.
Os perfis podem ser desabilitados, para que você possa observar o efeito que tem.

Ajustes no software da placa de vídeo. O desktop, o 3D e o vídeo Direct Draw são todos controláveis, mesmo que essas coisas não tenham sido ajustadas no software da placa de vídeo, pode ser que tendo tudo definido como 0 0 0 ainda exista algum processamento. Você poderia tentar usá-lo para combinar com a sobreposição do cursor, se houvesse algum motivo real para se preocupar com isso.

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

--com base na foto de controle, nada do resto se aplica a esta questão específica--

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

Perfis em monitores como jogos, filmes, desktop ou quaisquer nomes que eles usem para perfis definem configurações específicas de cor, 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 não na placa de vídeo, mas novamente no monitor, podem criar uma matriz de destaque em torno de áreas, aumentando os contrastes originais ou (é claro) reduzindo-os. Nesta questão é menos provável porque o branco se expande além dos pixels aos quais uma matriz de nitidez se aplicaria, a menos que houvesse 2 processamentos diferentes.

A lista fica ainda mais longa quando o software não precisa ter fundos totalmente brancos; eles podem ser ajustados. O SO e os programas podem ter um fundo que não seja branco, mas você já sabe que não é assim, nesta questão se você escolheu a cor do fundo, no desktop ou programa original.

A seleção de cores na área de trabalho mostra a cor do pixel (ou pixels) que existe ali, fornecendo ao usuário os fatos sobre o que o programa está exibindo. A imagem colorida vem antes de qualquer perfil de cor ajustar a saída. Portanto, escolher cores é uma ótima maneira de descobrir a cor real. Depois ainda passa pelo processamento novamente.

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

informação relacionada