Decorative line

Como fazer anaglifos no MATLAB

Pese embora os avanços tecnológicos na área, os anaglifos mantêm-se, há já quase um século, como uma das formas mais rápidas e acessíveis para gerar e ver imagens estereoscópicas. Por essa razão, têm um lugar privilegiado em aulas sobre percepção binocular, permitindo com poucos recursos ilustrar alguns princípios perceptivos básicos (e.g., disparidade binocular, rivalidade binocular, estereogramas de pontos aleatórios, etc).

Neste contexto, um exercício útil para envolver activamente os alunos pode envolver a criação, de raíz, dos seus próprios anaglifos. Este tutorial fornece instruções detalhadas para o fazer utilizando o MATLAB – ainda que existam livremente programas para construir anaglifos, o MATLAB, ao obrigar a especificar passo-a-passo e sob a forma de apenas quatro comandos cada um dos procedimentos requeridos, fornece uma maior clareza quanto à lógica envolvida e, consequentemente, aos princípios elementares subjacentes à estereoscopia.

De entre os diversos tipos de anaglifos possíveis (e.g., vermelho-verde, vermelho-azul, etc.) focar-nos-emos nos vermelho-cyan – isto é, a imagem a apresentar ao olho esquerdo apenas possui informação no canal RGB vermelho (e, por isso, requer um filtro vermelho à frente do olho esquerdo) e aquela a apresentar ao olho direito apenas possui informação nos canais RGB verde e azul (= ciano; por isso, requer um filtro ciano à frente do olho direito). Esta escolha é motivada não apenas por ser particularmente adequada a anaglifos mostrados em ecrãs, preservando alguma percepção de cor, mas também porque os óculos vermelho-ciano (ver Figura 1) se encontram amplamente disponíveis a preços acessíveis.

Óculos vermelho-ciano usados para ver anaglifos
Figura 1. Óculos vermelho-ciano usados para ver anaglifos.

A lógica de base para os anaglifos vermelho-ciano pode ser vista na Figura 2. Duas fotografias coloridas (RGB) são combinadas numa única imagem – a informação da fotografia a ser vista pelo olho esquerdo é retida no canal vermelho; a informação da fotografia a ser vista pelo olho direito é usada para os canais verde e azul, cuja combinação resulta em ciano. Esta imagem compósita pode, de seguida, ser vista com óculos vermelho-ciano, resultando numa percepção estereoscópica.

Diagrama ilustrativo dos princípios subjacentes aos anaglifos vermelho-ciano
Figura 2. Diagrama ilustrativo dos princípios subjacentes aos anaglifos vermelho-ciano.

Naturalmente, para as instruções que se seguem, é preciso dispor previamente de duas fotos, tiradas de posições ligeiramente desfasadas entre si na horizontal. Estas podem ser previamente disponibilizadas ou podem ser obtidas no momento (com as câmaras dos telemóveis pessoais). Este é o passo mais crítico de todo o processo e que pode determinar ou frustrar o sucesso do anaglifo. Deve-se, primeiro, tirar uma foto – esta será a imagem a apresentar no olho esquerdo. De seguida, o telemóvel/câmara fotográfica deve ser ligeiramente movido(a) para a direita, procurando manter o mais fixo possível a distância ao objecto fotografado e a altura da câmara (o uso de um tripé ou, no mínimo, de uma pilha de livros ou apenas uma mesa é aqui encorajado) – a amplitude do movimento para a direita deve ser relativamente curta, não mais que 4/5 cm (é preferível um movimento menor, de apenas 1 ou 2 cm, que um maior, de 6 ou mais cm, mesmo que a perspectiva aparente ser exactamente igual). Tira-se, deste novo ponto, uma segunda fotografia (imagem para o olho direito). A Figura 3 mostra um exemplo das duas fotos requeridas.

Fotografias de uma máquina de escrever, tiradas de perspectivas ligeiramente diferentes para construção de uma imagem estereoscópica
Figura 3. Fotografias de uma máquina de escrever, tiradas de perspectivas ligeiramente diferentes para construção de uma imagem estereoscópica. A fotografia do lado esquerdo/direito deve ser apresentada ao olho esquerdo/direito.

Estas duas fotos devem, agora, ser copiadas para a pasta activa do MATLAB, e introduzidos, à vez, cada um dos comandos seguintes (os comentários a cada comando, detalham o que exactamente é feito com esse):

OlhoEsq = imread('IMGESQ.EXT'); % Importar, como matriz (com o nome 'OlhoEsq'), a imagem a ser mostrada ao olho esquerdo – deve-se substituir 'IMGESQ' pelo nome do ficheiro e 'EXT' pela sua extensão
Anaglifo = imread('IMGDIR.EXT'); % Importar, como matriz (com o nome 'Anaglifo' – esta será usada para o anaglifo final) a imagem a ser mostrada ao olho direito – deve-se substituir 'IMGDIR' pelo nome do ficheiro e 'EXT' pela sua extensão
Anaglifo(:,:,1) = OlhoEsq(:,:,1); % Substituir, na matriz 'Anaglifo', o canal vermelho (R) pelo correspondente da matriz 'OlhoEsq'
imshow(Anaglifo) % Mostrar o anaglifo final, como imagem, numa nova janela

O resultado deverá ser algo similar ao mostrado na Figura 4 (neste caso, o anaglifo é aquele obtido com as fotografias mostradas na Figura 3).

Anaglifo vermelho-ciano de uma máquina de escrever
Figura 4. Anaglifo vermelho-ciano construído com base nas fotografias da Figura 3.

← Voltar a Ensino