Brain Dump

segunda-feira, 22 de junho de 2009

As batalhas do magenta

Convencer as pessoas de que o magenta existe foi uma batalha, mas certamente não a única batalha pela qual a cor passou. O magenta é uma cor mais sofrida que o flicts; na verdade a própria origem do magenta foi em uma batalha!

Originalmente, a cor #FF00FF era chamada de fúcsia, em homenagem a uma singela florzinha que tem essa cor. Mas em 1859 houve uma sangrenta batalha entre franceses e austríacos, tão intensa que pintou o chão de sangue. Essa batalha aconteceu na cidade italiana de Magenta, e desde então aquele tom da cor de sangue ficou conhecido como magenta.

A batalha mais recente do magenta é contra outra injustiça cometida pelo povo que não conhece física. Dessa vez a abobrinha veio de um designer coreano, que bolou uma caneta-scanner especial para desenhistas. Se você quiser pintar uma maçã com a aparência similar a uma maçã real, basta usar a ponta-scanner da caneta para capturar o tom RGB exato da fruta, e na outra ponta a caneta mistura as proporções exatas de tintas (vermelhas, verdes e azuis) que reproduzem aquele tom. A idéia da caneta até é legal, mas do jeito que foi bolada, não funciona.


O problema da caneta, é claro, são as tintas. Para entender por que elas são um problema, precisamos relembrar a definição de cor do Kandel: "Cor é uma experiência subjetiva relacionada à composição espectral da luz que atinge o olho". Ou seja, segundo essa definição, a única coisa que pode ter cor é luz. Como tinta não é luz, logo tinta não pode ter cor.

A maneira correta de caracterizar uma tinta é através da sua refletância, ou seja, a relação entre luz absorvida e refletida para um dado comprimento de onda. A cor da tinta não depende apenas de suas características intrínsecas, mas também da luz que incide sobre ela.

Você pode fazer um experimento simples para verificar isso. Primeiro pegue dois pedaços de pano, branco e vermelho, e um lightsaber bicolor, azul e vermelho (se você não tem um lightsaber bicolor, eis uma boa desculpa pra comprar um!). Veja agora como a cor do tecido depende da luz incidente:

Luz ambiente (branca)

Luz vermelha

Luz azul

Agora dá pra ver claramente: o tecido "branco" na verdade reflete toda a luz que chega, então ele só é branco quando a luz é branca. Se a luz for vermelha, o tecido fica vermelho, se a luz for azul, o tecido fica azul.

Já o tecido "vermelho", na verdade, absorve todos os comprimentos de onda, menos o vermelho. Tanto faz se a luz é branca ou vermelha, o resultado é o mesmo: só o vermelho é refletido. Já quando a luz é azul, sem componente vermelho nenhum, o resultado é que ele fica com aparência praticamente preta, pois não tem nada pra refletir. O diagrama abaixo mostra o que aconteceu:


Agora fica claro porque a escolha de cores do designer coreano é falha. As tintas que ele escolheu (vermelho, verde e azul) não podem ser misturadas! Vejamos: uma tinta vermelha, na verdade, absorve o verde e azul, refletindo só o vermelho. Uma tinta verde, na verdade, absorve o vermelho e o azul, refletindo só o verde. Se você misturar o vermelho com o verde, a tinta resultante vai absorver o vermelho, o azul e o verde, ou seja, não vai refletir nada. Uma mistura de tintas vermelhas e verdes, em proporções iguais, dá uma tinta preta.

Quem já trocou cartuchos de impressora jato de tinta sabe qual a solução para esse problema. Basta escolher outras cores: amarelo, ciano... e magenta! Essas sim são tintas que podem ser misturadas. Confira: uma tinta magenta, na verdade, absorve o verde. Uma tinta ciano, na verdade, absorve o vermelho. Se você misturar magenta com ciano, o resultado absorve o verde e o vermelho, ou seja, só sobra azul. Tinta magenta com tinta ciano dá tinta azul.


Essas tríades de cores são chamadas de cores primárias. Vermelho, verde e azul são as cores primárias aditivas, aquelas que você usa com emissores de luz, como lâmpadas e LEDs. Ciano, magenta e amarelo são as cores primárias subtrativas, aquelas que você usa com tintas.

Por fim, isso nos leva a mais uma batalha do magenta. "Peraí, minha professora na escolinha disse que as cores primárias são vermelho, azul e amarelo"! Hum, foi mal, mas a sua professora te ensinou errado (deve ter sido a mesma professora que ensinava que se a órbita da Terra era elíptica, então o inverno é quando a Terra está mais longe do Sol). Ela não sabia diferenciar magenta de vermelho, nem ciano de azul.

Uma dúvida mais sutil é "Ah, mas eu misturava vermelho, azul e amarelo, e conseguia fazer todas as cores"! Sim, sim, essas cores formam uma base no espaço das cores subtrativas, o problema é que não é uma base ortogonal. Se você fizesse uma impressora com essas cores, um dos tubinhos de tinta iria acabar mais rápido. Por isso também que impressoras tem um quarto tubo com tinta preta: para escurecer um tom é mais barato adicionar preto que misturar tinta dos três outros tubos.

Conclusão da história toda: não subestime o magenta! Apesar de ser sistematicamente ignorada, é uma cor com muitas utilidades :)

Marcadores: , ,

terça-feira, 3 de março de 2009

O olhar do macaco

RicBit e um povo da Engenharia vão até o prédio da psicologia se encontrar com um biólogo europeu. Por trás dessa aglomeração interdisciplinar, uma tese sobre a origem da humanidade, baseada na análise do olhar dos macacos. E tudo isso culminando com a conclusão do dilema: afinal, magenta é ou não uma cor? Suspense, emoção e integrais os aguardam no resto desse post!


No post anterior eu expliquei o que era o magenta, então agora é hora de ver o que é uma cor. O Kandel diz que cor é "uma experiência subjetiva relacionada à composição espectral da luz que atinge o olho", mas isso é uma simplificação. Pra ter uma experiência cromática você não precisa de luz, e nem de olho.

Certamente você já ouviu que as pessoas que levam porrada ficam "vendo estrelas". Não é só uma expressão, isso acontece de verdade. O que ocorre é que os mesmos cones da retina que convertem luz em sinais elétricos também são sensíveis a pressão. Então, se você apertar o sensor (por exemplo, com uma paulada bem dada), você vai gerar o mesmo impulso elétrico que teria sido gerado se você estivesse olhando para uma fonte luminosa. Daí, a sensação é de ver estrelas, mesmo que você esteja sem nenhuma luz, no completo escuro.

Certo, então podemos usar os olhos mesmo sem luz. Mas nem os olhos são realmente necessários. Os sinais elétricos que vão dos cones até o córtex visual primário podem ser injetados diretamente com eletrodos: nesse caso você tem a experiência da cor sem precisar da retina. Ou então você pode injetar uma droga psicoativa como o LSD, que altera o equilíbrio químico do cérebro, causando uma experência cromática mais intensa que colocar uma camiseta branca e um monte de roupas coloridas dentro da máquina de lavar.

Mas esses são efeitos colaterais. Na maior parte do tempo, você vai mesmo enxergar cor como sendo uma conseqüência do espectro eletromagnético. Curiosamente, tudo que eu posso afirmar é que a cor é uma conseqüência: eu não posso dizer, por exemplo, que a cor é uma função do espectro, porque ela falha em satisfazer a definição de função: você pode ter duas cores para um mesmo espectro, e dois espectros para a mesma cor. O primeiro caso pode ser visto facilmente na imagem abaixo:

Os dois MSX produzem a sensação de duas cores diferentes, mas na verdade são o mesmo espectro (pode conferir no Photoshop)! A explicaçao é que o cérebro tem uma etapa diferencial após a captura do espectro pelos cones, então um espectro isolado pode produzir duas percepções diferentes, dependendo do que está em volta.

O segundo caso é mais chatinho. Eu poderia mostrar aqui dois espectros diferentes, falar que eles geram a mesma cor, e pedir pra vocês acreditarem em mim; mas resolvi fazer melhor que isso: criei um editor de espectro online! Para usar, basta desenhar um espectro com o mouse em cima da caixa bege, logo abaixo vai aparecer qual a cor que o seu olho enxergaria se estivesse vendo esse espectro. Veja como existem um monte de maneiras diferentes de fazer o amarelo. Você consegue fazer o magenta?



Source do editor de espectros online

Eu escrevi o editor usando GWT, a abscissa é o comprimento de onda (de 430nm até 650nm), a ordenada é a intensidade luminosa (em escala log), e as funções de transferência eu peguei no site do Colour and Vision Research Lab da Universidade da Califórnia em San Diego. Se você estiver lendo esse post por RSS, pode ser que o seu leitor faça sanitização de javascript e o applet não apareça; nesse caso é só ver o post original no www.ricbit.com.

Ok, agora nós sabemos que uma cor pode ser gerada por vários espectros diferentes. Por que isso acontece? A resposta é que o nosso sistema visual joga fora a maior parte da informação que entra, e para explicar os detalhes temos que entender como funcionam os cones.

Um cone é uma coisinha bem burrinha. A saída dele é binária: manda impulso elétrico ou não manda impulso elétrico; e o disparo é totalmente aleatório. Mas apesar ser aleatório, não é ruído puro, porque a probabilidade de disparo pode ser controlada através da luz que entra no sensor. Algumas freqüências fazem ele disparar com mais facilidade, e se você aumentar a intensidade da luz ele também aumenta a probabilidade.

No fim do processo, o cérebro vai interpretar esse trem de pulsos e gerar um único valor, que é uma espécie de média ponderada da luz que atingiu o cone. De outra maneira, é como se o cérebro calculasse o produto interno da função de transferência do cone com o espectro da luz incidente (lembrando que produto interno de distribuições é definido como a integral do produto das distribuições; e, de fato, no source do meu editor de espectro tem um método que faz exatamente isso). Em resumo, um cone gera um valor escalar a partir da entrada.

Mas com um cone sozinho nós não conseguiríamos ver cores. Humanos normais possuem três deles, e na verdade é aí que entra a história do macaco. O tal biólogo europeu tinha notado que o olhar dos macacos americanos era diferente do olhar dos macacos africanos: os primeiros tinham só dois cones, enquanto que os segundos tinham três cones. Isso serve de evidência de que a espécie humana surgiu na África, e não na América (já que os macacos de lá tem o mesmo número de cones que a gente).

A quantidade de cones define quão rica é sua experiência cromática. Alguns humanos nascem com apenas dois cones: são os daltônicos, que enxergam menos cores que os humanos normais. Segundo a wikipedia, entre as mulheres existe um grau significativo de tetracromia também, o que faz algum sentido pra mim (isso explicaria aquelas mulheres chatas que falam: "você não limpou direito, olha uma mancha aqui", e você olha, olha e não vê mancha alguma; vai ver ela era tetracromática e a mancha era de uma cor que você não enxerga).

A resposta dos três cones de um humano normal é a abaixo, nós os chamamos S, M, L (baseado nos comprimentos de onda que eles cobrem, small, medium e large).

Vamos juntar tudo agora. Um cone retorna um valor escalar, e nós temos três deles. Se podemos formar uma tripla ordenada de escalares com a saída dos cones, então na verdade eles definem um espaço vetorial de dimensão três. Uma cor, então, é simplesmente um vetor desse espaço.

Ora, todo espaço vetorial admite uma base. Como o espaço tem dimensão três, você pode escolher três vetores quaisquer pra formar essa base, desde que sejam linearmente independentes. O mais comum é escolher o vermelho, o verde e o azul, porque essas são as cores que você percebe quando estimulamos os nossos cones de maneira independente. Isso dá origem ao sistema RGB que todo mundo conhece.

Você pode aplicar uma transformação linear qualquer nessa base pra gerar outras, como por exemplo, o YIQ usado em transmissão NTSC, ou o YJK usado nos chips de vídeo do MSX2+. Alguns sistemas de cores são não-lineares, como o YCbCr da compressão MPEG. Um sistema não-linear muito usado por artistas é o HSV, que deforma o cubo RGB em um cilindro, onde o raio é a saturação, a altura é o brilho, e o ângulo é o tom da cor.

O sistema HSV pode ser realizado fisicamente se você tiver disponível um laser de freqüência variável e uma lâmpada de cor branca. Se você mudar a freqüência do laser, muda o tom da cor; se mudar a intensidade da lâmpada, mantendo a intensidade do laser fixa, você muda a saturação; e se mudar a intensidade dos dois ao mesmo tempo, muda o brilho. Por exemplo, eu poderia gerar um tom de rosa com um laser vermelho e com branco não muito forte. Um screenshot do editor de espectro gerando esse rosa é assim:

E agora chegamos ao ponto crucial do problema: como você gera o magenta com esse método? A resposta é: você não gera! Não dá pra fazer o magenta assim, porque um único laser não consegue estimular o cone do vermelho e o cone do azul sem estimular junto o cone do verde.

Isso é evidência de que o magenta não é uma cor? Claro que não, é só uma evidência de que esse método específico de gerar cores não é capaz de percorrer todo o espaço vetorial, e algumas cores ficam de fora.

A moral da história é que pra trabalhar com cognição você precisa ter um time interdisciplinar. Se o seu time não tiver alguém de exatas pra interpretar a álgebra linear do seu problema, você corre o risco de escrever bobagens como "magenta não é uma cor".

No próximo post, a conclusão da série do magenta, com as batalhas que a coitada da cor passou!

Marcadores: , , , , , ,

sexta-feira, 20 de fevereiro de 2009

There Is No Magenta (mesmo?)

O último meme que circula na twitosfera é debater se Magenta, afinal de contas, é uma cor ou não. A origem da dúvida é um artigo intitulado "Magenta ain't a colour", que afirma que não, magenta não é uma cor, ou pelo menos não uma cor de verdade.

Mas e aí? Enfim, o magenta é ou não uma cor? Bem, depende de como você define, e tem duas definições nessa afirmação. A primeira é "o que é uma cor?", mas também tem uma segunda, mais sutil e igualmente não trivial: "o que é magenta?".

Pra podermos discutir o que é o tal do magenta, eu proponho um gedankenexperiment famoso. Suponha que você tenha nascido com problema no sistema visual, e tudo que as pessoas enxergam como verde você veja como laranja, e vice-versa. Seus pais nunca fizeram nenhum exame em você, então simplesmente apontavam pro Hulk e ensinavam: tá vendo, o Hulk é verde.

Esse experimento foi proposto pelo John Locke, e até hoje filósofos e estudiosos da cognição o usam pra discutir sobre o qualia. Independente disso, uma observação mais simples é que não importa em qual estado sensorial o menino esteja, ele vai chamar o Hulk de verde porque é assim que seus pais o ensinaram. O nome das cores não está ligado apenas às percepções sensoriais: cores são construtos culturais.

Por exemplo, se eu tivesse nascido no japão feudal, meus pais me ensinariam que a cor verde chama Aoi (青い), nome dado para a cor da maçã que não está madura. Mas essa cor Aoi também é a cor do céu e a cor da água. Então, pros japoneses antigos verde e azul eram a mesma cor?

Incrivelmente, sim! Pra eles o verde e o azul eram apenas tons diferentes de Aoi, da mesma maneira que nós temos azul claro e azul escuro. Com o tempo eles criaram uma outra palavra, Midori (緑), pra falar especificamente do conjunto "Aoi que não é azul". E quando querem falar do azul propriamente dito, hoje em dia eles falam Burú (ブルー), copiado do inglês Blue.

Isso ocorre em todas as culturas. Pra gente, o azul é uma coisa só, mas um americano pode dizer que Blue é só o azul escuro, e aquilo que a gente chama de azul claro na verdade é Cyan.

Por isso, quando eu li o título do artigo, minha primeira dúvida foi: mas de qual magenta ela está falando? O que ela chama de magenta é o mesmo que eu chamo de púrpura? Ou é roxo? Violeta? É a cor da calça do Hulk?

Ler o artigo original não ajuda, pois lá ela afirma que magenta é a mesma coisa que pink, e aqui na minha cultura isso são coisas diferentes: magenta é a cor no meio do azul e do vermelho, rosa é o vermelho desaturado.

A moral da história é que se você quer afirmar alguma propriedade a respeito de uma cor, não chame a cor pelo nome pois depende de locale. Ao invés disso, é melhor usar uma descrição quantitativa.

No fim das contas, o que autora queria dizer mesmo é que #FF00FF não é uma cor de verdade, e isso eu vou mostrar no próximo post que é falso também :)


PS: Aparentemente eu não tinha cumprido a promessa de dois posts por mês, mas isso é porque eu tive que viajar para a Índia, e os posts acabaram indo para um blog novo só sobre a viagem. Se você quiser ler as bizarras aventuras do Ricbit na Índia, basta visitar o India Broadcast.

Marcadores: ,