Espirrando — e triplicando a resolução de seu monitor

56354-siemens-large-monitor-embed 

Você já espirrou na tela do monitor? É algo fascinante – se apreciado da forma correta, claro, tudo pode ser fascinante. Experimente. Não é preciso contaminar a tela; pode-se molhar a mão e então chacoalhá-la, jogando muito levemente gotículas de água sobre ele. Gotículas, é bom alertar, não se deve encharcar o monitor.

Aqui está o fascinante: as gotas sobre o monitor adquirem uma aparência multicolorida, alternando entre vermelho, verde e azul, mesmo que o monitor esteja exibindo uma imagem completamente branca. Isto ocorre porque a imagem completamente branca é em verdade formada por uma série de elementos vermelhos, verdes e azuis, e as gotículas de água agem como lentes de aumento, permitindo que você veja estes minúsculos elementos individualmente. Você também poderia se fascinar observando o monitor com uma lupa – só não seria algo tão nerd (ou nojento?) quanto admirar gotículas de cuspe sobre o monitor.

Uma boa notícia – e outra não tão boa

Citando Steve Gibson, que escreveu uma série de textos sobre o assunto (não, não espirros sobre monitores):

Quando nossos olhos vêem uma sólida linha branca:

cleartype3

O que está sendo realmente exibido é:

cleartype4

Cada pixel branco é formado por três elementos, as cores primárias vermelho, verde e azul, brilhando simultaneamente. Como Isaac Newton demonstrou, a soma destas cores resulta na percepção da cor branca. Saber disso não é apenas fascinante, é também uma boa notícia, porque significa que se seu monitor possui, por exemplo, 1024 pixels de resolução horizontal, então como cada pixel é formado por três elementos, há em realidade 3072 destes sub-elementos. O triplo da resolução horizontal.

E se pudéssemos lidar com estes sub-elementos individualmente, aproveitando assim o triplo da definição? Aqui vem uma notícia não tão boa. Sistemas Windows mais modernos, a partir do Windows XP, já implementam esta tecnologia para exibir letras na tela através do Cleartype. Nos Windows Vista e 7, o Cleartype é ativado por padrão, no XP pode ser preciso ativar o recurso. Sistemas Apple já possuem o recurso há ainda mais tempo.

O que significa que seu sistema operacional provavelmente já aproveita esta resolução “triplicada”. É como descobrir que se ganhou um prêmio, mas que já se está gastando o dinheiro. Ainda assim, é bom conhecer melhor o “prêmio”.

Utilizando esta técnica de renderização em subpixels, você pode conferir a diferença na definição em fotos tomadas por Gibson da tela de seu notebook:

cleartypephoto1  cleartypephoto2

A imagem à direita, com a renderização em subpixels, é claramente melhor, sem as bordas tão serrilhadas. Genial, não? Então por que não se usa a técnica para tudo? E talvez o que seja um mistério ainda maior, como as agências de marketing não vendem monitores mencionando o número de subpixels, dando a impressão de que um monitor com 3072 subpixels seja melhor que um com 1024 pixels? Algo similar já é feito com equipamentos de som e a infame unidade PMPO.

Não podemos responder os mistérios do marketing, mas há um motivo pelo qual a renderização por subpixels não é um parâmetro muito honesto de resolução. Os mais atentos podem ter notado que na imagem acima à direita há uma certa distorção de cores nas bordas. Os sub-elementos de cada pixel, afinal, não são realmente pixels de imagem capazes de exibir toda uma gama de cores. Possuem cores fixas, e acendê-los individualmente buscando melhorar a definição de luminosidade de uma imagem também criará uma distorções de cores em suas bordas. Citando Gibson novamente:

“Veja o que ocorre quando traduzimos os pixels aos sub-elementos da tela de um monitor LCD:

cttech5

Uma vez que a largura das três pernas da letra ‘m’ não são múltiplos de três, as pernas acabam cercadas nos dois lados por sub-elementos vermelhos!”

Relembrando, um pixel “de verdade” é formado por três subpixels, vermelho, verde e azul, que somados podem compor um pixel branco. Lidar com os subpixels individualmente é lidar com distorções no balanço de cores. Como corrigir isso? Aqui a história se torna mais interessante mesmo para quem já conhece algo da renderização de fontes em subpixels.

O retorno do magenta

Em um texto anterior, abordamos como realmente percebemos as cores, que não existem como frequências de luz determinadas e absolutas, e sim como nosso cérebro interpreta os estímulos recebidos pelos olhos. Que vejamos o branco em nossos monitores, mas que um espirro – ou uma lupa – revele a terrível verdade dos subpixels RGB é uma aplicação deste conhecimento. Que a nossa percepção de cores esteja sujeita a fortes ilusões de cor, como a abaixo, onde as espirais azul e verde são em verdade da mesma cor (clique, caso não acredite):

Monspiral

É outro conhecimento, e um que pode ajudar a corrigir pelo menos parte das distorções de cor. Diferentes sistemas operacionais e programas implementam soluções diferentes, mas vamos continuar com Gibson.

Uma forma de manter o balanço local de cores é voltar a lidar com três subpixels de cada vez… o que seria voltar a lidar com pixels, voltando à resolução normal? Não necessariamente. Suponha esta série de três pixels lado a lado, formados cada um por três subpixels, RGB:

RGB-RGB-RGB

O pixel do meio está em negrito. E se lidássemos com três subpixels desta forma:

R-GBR-GBR-GB

Note que a ordem dos subpixels realmente não importa para preservar o balanço de cores e formar um pixel completo – de fato, há monitores com ordens diferentes dos subpixels. A mais comum é RGB, mas também há monitores com pixels na ordem BGR. Aqui está o “truque”: mesmo em um monitor RGB, pode-se lidar com os subpixels em outras ordens, em diferentes grupos de três. Em verdade, pode-se lidar com todos os grupos de três subpixels possíveis para buscar o máximo de resolução preservando ao máximo o balanço de cores.

Soa complicado, mas curiosamente na prática não é tanto. Voltando ainda outra vez a citar Gibson,

“Simplesmente espalhamos a ‘energia’ do subpixel a seus dois subpixels vizinhos. Isto é, quando um subpixel está ‘aceso’, nós o acendemos com 1/3 da intensidade e também seus dois vizinhos imediatamente adjacentes em 1/3 cada. Uma vez que os vizinhos à esquerda e direita de cada subpixel sempre serão, por definição, suas cores complementares, esta ‘partilha de energia’ tem o efeito de ‘rebalancear’
instantaneamente qualquer descoloração local!”

Note que isso também significa que a intensidade com que cada subpixel deve ser aceso depende da intensidade original com que deveria ser, e também da intensidade de seus vizinhos. Interpolando tudo ao mesmo tempo, a informação de definição original em subpixels – com o triplo de resolução – ainda está presente, e o balanço de cores ainda é preservado.

Há mais alguns detalhes – tanto no método discutido por Gibson quanto nos implementados em diferentes programas – mas estes são os fundamentos. O resultado final é este:

cttech13

Os tons de bege, amarelo, azul e afins ao redor do negro das letras são o resultado de “distribuir a energia” dos subpixels para preservar o balanço de cores. Embora aumentado desta forma surjam distorções claras de cor, quando vistos em seu tamanho original, representado diretamente nos subpixels de seu monitor, parecerá… preto no branco. Como provavelmente estão renderizadas as letras que você lê neste exato momento. A renderização em subpixels é ela mesma uma ilusão de cores.

Surpreendemente, para fornecer uma impressão mais definida de letras pretas sobre um fundo branco, o computador exibe uma série de cores diferentes, inesperadas, justamente aonde o preto deveria mais contrastar com o branco. Diga que está mostrando o preto no branco em seu monitor, e saiba que com renderização em subpixels, isso inclui uma enorme série de cores também.

“Preto no Branco”

A expressão popular nunca foi muito literal – não existem papéis puramente brancos, e você pode se surpreender ao descobrir que mesmo a tinta preta de sua caneta é em verdade um azul muito, muito escuro. Enxergar tudo em extremos realmente parece ser apenas uma ilusão. Há mais algumas curiosidades de bônus para encerrar este longo texto – que não é de longe uma olhada profunda ao tema.

Quando abordamos a percepção de cores, mencionamos a teoria Retinex de Edwin Land, e como ele desenvolveu um sistema capaz de exibir cores com base em apenas duas cores primárias. Lembra-se do hambúrguer?

hamb

Seria possível desenvolver uma renderização em subpixels aproveitando estas idéias, indo além da forma tradicional de lidar sempre com três subpixels adjacentes? Seria superior às formas já existentes? Já terá sido patenteada? Ficam como perguntas aos universitários.

Outra curiosidade é que levando a utilização de subpixels ao limite, é possível criar fontes com três pixels de tamanho. Pareceria impossível, mas se torna possível porque, como vimos, são em verdade 9 subpixels horizontais. No ano passado, Miha criou manualmente este conjunto de fonte:

sbpx_5884

Letras miúdas, quase impossíveis, mas ainda legíveis, e à primeira vista… preto no branco. Ken Perlin também criou outra fonte minúscula aproveitando-se dos subpixels, confira, há uma lente de aumento virtual que permite ver toda a variedade de cores.

Miha também fez algo muito interessante: redesenhou o favicon – o pequeno ícone – do Youtube utilizando subpixels. O resultado:

youtube-favicon-subpixel

A versão à direita é muito mais clara, principalmente no “Tube” abaixo, não? Aumente o ícone e:

youtube-favicon-subpixel-large

Para tornar o “Tube” mais claro, inseriram-se pixels amarelos e rosas! De fato, quase não há branco no “Tube”. Não deve ter sido tanta surpresa depois de todo este texto. Neste caso, “branco no vermelho” não é tão branco, ou vermelho.

Toda a aplicação da renderização em subpixels discutida aqui envolveu fontes, letras exibidas em um monitor. Isso ocorre porque fontes são renderizadas no momento em que são exibidas, e busca-se priorizar sua legibilidade, deixando um pouco de lado as distorções de cor ao lidar com subpixels – que podem ser diminuídas, como vimos, mas estarão ainda presentes e mesmo levemente aparentes. É possível ir além?

Para renderizar todas as imagens em seu monitor em subpixels, buscando aumentar sua definição aparente, seria necessário que as imagens em si mesmas tivessem uma resolução superior à que seria exibida, e um tanto de distorções de cores acabaria ocorrendo. Mais do que isso, de certa forma, imagens, principalmente as capturadas por câmeras digitais, já são processadas para aumentar seu contraste aparente, com o sacrifício da acurácia nas cores, mas esta é ainda outra história.

Este site oferece um serviço interessante: renderização em subpixels de qualquer imagem apenas para favicons. Experimentei com a bandeira do Brasil, e o resultado:

brasilsubpixel

Note que um rosa adicionado à bandeira realmente aumenta a definição aparente da bandeira, exibia em apenas 16 pixels de tamanho. Um rosa na bandeira. Piadinhas à parte, talvez como preto no branco, é toda a viagem que pode começar com um espirro no monitor.

[dica do RicBit, com uso maciço de material original de Steve Gibson]

Discussão - 4 comentários

  1. Patola disse:

    Não é só no Mac OS X e Windows não. Informação adicional para o mundo Windowscêntrico que ignora a existência de software livre e de sistemas operacionais livres como o GNU/Linux e FreeBSD: nos nossos sistemas também existe essa tecnologia há uns bons anos. No Ubuntu, por exemplo, você clica no canto esquerdo inferior da tela, "Sistema", "Preferências", "Aparência", clica na aba "fontes" e terá as opções: Monocromático, melhores formas, melhor contraste e suavização de subpixels (recomendada para LCDs e TFTs). Seria interessante ver as diferenças entre esses modos, imagino que o "melhores formas" seja apenas a suavização por cinzas e o "melhor contraste" parece ser uma versão de letras mais finas do melhor contraste.

  2. Kentaro Mori disse:

    Sabia que iriam mencionar o Linux... só não adivinhei que seria tu, Patola 🙂
    Aos entusiastas Open Source, considerem como um elogio: acredito que vocês já conheçam bem o assunto, então nem os mencionei.

  3. Dimitri disse:

    É legal de usar uma câmera digital com zoom ótico e tirar um macro do monitor. Dá pra ver que alguns monitores tipo o meu usam geometria Dot Pitch triangular, outros as famosas tiras deste artigo.

  4. Só eu que sempre me incomodo com as aberrações cromáticas dessa técnica? Não suporto ficar vendo borrões vermelhos à esquerda e azuis à direita. Grayscale smoothing FTW!

Deixe um comentário para Patola Cancelar resposta

Seu e-mail não será divulgado. (*) Campos obrigatórios.

Sobre ScienceBlogs Brasil | Anuncie com ScienceBlogs Brasil | Política de Privacidade | Termos e Condições | Contato


ScienceBlogs por Seed Media Group. Group. ©2006-2011 Seed Media Group LLC. Todos direitos garantidos.


Páginas da Seed Media Group Seed Media Group | ScienceBlogs | SEEDMAGAZINE.COM