Cor e profundidade no processamento digital de imagens: Parte I

Cor e profundidade no processamento digital de imagens: Parte I

Às vezes você acorda. Às vezes a queda te mata. E às vezes, quando você cai, você voa.-Neil Gaiman, Fábulas e Reflexões

Você provavelmente já se deparou com o tal ajuste RGB na paleta de cores, eu me lembro que o primeiro lugar que vi isso foi no Ronaldinho Soccer 97, um jogo de futebol do super nintendo, bons tempos de cartucho. Nesse jogo você podia editar os uniformes dos times, podendo misturar as cores usando as paletas RGB. Até aí tudo bem, mas o tempo passou, e depois de muitos anos, descobri que aqueles valores não estavam relacionados ao colorido em si, mas sim na quantidade de píxels brancos em um canal. Doidera né?

Bom, vamos lá, imagens, vídeos, sons, são basicamente ondas eletromagnéticas, elas possuem suas características relacionadas a frequência/período, amplitude e estas podem ser capturadas, e processadas. No começo era um processo analógico, bem rudimentar, o processo de captura desses sinais, principalmente imagem sempre foi muito interessante (vou deixar para uma segunda parte). Porém, com o tempo, tecnologias de digitalização do sinal foram desenvolvidas, possibilitando uma maior resolução e qualidade desses sinais. Claro, alguns artistas vão dizer que o ponto negativo é que tudo é muito artificial, tanto que hoje existem técnicas para injetar ruído em sons e imagens para eles possuirem um ar mais... rústico. Porém, do ponto de vista técnico, é maravilhoso, é mais barato, e podemos ver e ouvir mais, graças a isso. Dois pontos legais que queria explicar hoje são: cor e profundidade. Como as câmeras e a tecnologia nos conseguem passar a percepção de profundidade em algo que parece unidimensional (tipo uma foto)? Ou como algo é colorido e descolorido digitalmente, questões relacionadas à nitidez, contraste de luz.

Pra começar, imagens são sinais do tipo 2D (duas dimensões) - textos, escalas de cinza, multiespectros, imagens hyperespectrais, etc. Vídeos, 3D (às duas dimensões de uma imagem e uma terceira de tempo, pois um vídeo nada mais é do que uma sequência de imagens em um tempo definido), uma imagem que analisa volume de um objeto também é um sinal 3D. Nessas imagens, temos os píxels, a unidade elementar (digamos assim) mais importante para nossa premissa. Quanto mais bits tivermos por píxel, mais cor você tem na imagem.

Imagem mostrando os fitlros a intensidade do sinal discretizada em 256 bits

Isso significa que em uma imagem com 24 bits (considerando RGB) por píxel, considerando que um bit pode valer 0 ou 1, nós temos 16 milhões de cores aproximadamente para 1 único na imagem, quanto mais píxels, mais nítida é a imagem, provavelmente você já copiou uma imagem pequena, colou no paint e tentou ampliar, a resolução não ficou lá muito boa, devido a exatamente essa característica dos sinais discretizados e quantizados das imagens. Mas o papo aqui não é sobre tipos de compressão/mídia/qualidade/resolução, mas sim, cor. Das várias formas existentes para se colorir uma imagem, a mais famosa é o RGB (temos muuuuuitas outras). Basicamente estes são filtros, canais em um certo espectro de luz, que variam sua intensidade, colorindo assim uma imagem. Cada um desses canais tem 8 bits, podendo assumir então 256 valores (0 a 255).

Os valores mais próximos de 255 são os mais claros, e os mais próximos de 0 são mais escuros, resultando então em uma intensidade de cor diferente quando os 3 canais são combinados na imagem preto e branco. Claro, podemos ter também outros tipos de filtros digitais em uma imagem, por exemplo, o satélite LANDSAT, possui 8 bandas de frequência, RGB e mais 5 relacionadas ao infravermelho. Com 30 metros de resolução no mínimo, e máximo de 60 metros, conseguimos boas imagens para acompanhar fenômenos naturais e artificiais na terra. Se combinarmos canais diferentes, conseguimos imagens com cores diferentes, podendo assim fazer análises específicas.

fitros diferentes foram combinados do espectro para gera essa imagem

O nosso mundo é 3D, porém imagens são 2D, e estas fazem a projeção 3D no sistema 2D. A nossa percepção de profundidade depende dos nossos 2 olhos, as câmeras fazem algo semelhante, 2 sistemas de câmeras capturam a mesma cena, e emulam essa percepção, a diferença entre as 2 cenas capturadas é chamada de mapa de disparidade, que nos diz qual píxel se moveu de uma imagem para a outra, e também sua direção. Essa diferença pode ser capturada utilizando os canais azul e vermelho, por exemplo, usando lentes de polaridades diferentes (efeito base para o 3D). Outra forma interessante de se capturar profundidade é usada no Kinect da Microsoft. Onde ele projeta um padrão em um espaço, e percebe profundidade baseado na deformação deste, utilizando então luz estrutural com duas técnicas computacionais (profundidade do foco e profundidade do estéreo).

Cálculo em tempo real da posição e profundidade da imagem no Kinect

Bom, essa é só uma primeira parte desse mundo de processamento de sinais digitais, existe muito assunto dentro dessas áreas, isso passa por, captura, processamento, armazenamento, transmissão, codificação, etc...Pretendo continuar nessa linha focando em imagem e vídeo. Até uma próxima.