Simulação de daltonismo com recurso ao MATLAB
4 de agosto de 2026
O termo daltonismo compreende uma série de condições específicas em que um observador manifesta uma redução na capacidade de discriminar algumas cores, em comparação com a visão cromática normal. Esta última é caracterizada pela presença na retina de três tipos de cones (células fotossensíveis) distintos ou tricromacia: cones S, que respondem preferencialmente (mas não exclusivamente) a comprimentos de onda curtos da luz visível (percebidos como azul); cones M, que respondem preferencialmente (mas não exclusivamente) a comprimentos de onda médios da luz visível (percebidos como verde); e cones L, que respondem preferencialmente (mas não exclusivamente) a comprimentos de onda longos da luz visível (percebidos como vermelho). No daltonismo (excluindo a acromatopsia, na qual toda a retina é desprovida de cones), o funcionamento de um desses encontra-se alterado, ou devido a anomalias (o mais comum) ou por se encontrar ausente na retina – dicromacias, entre as quais se distingue a protanopia (ausência de cones L), a deuteranopia (ausência de cones M), e a tritanopia (ausência de cones S).
Com base nesta descrição, poder-se-ia formular a hipótese de que pessoas com dicromacia perdessem a capacidade de percepcionar as tonalidades às quais o cone ausente se mostra mais responsivo. Isto é, por exemplo, uma pessoa com protanopia, não possuindo cones L na retina, mostrasse uma incapacidade de percepcionar tons vermelhos, aos quais esses cones responderiam preferencialmente. Isto não é o que acontece de facto. Os portadores de dicromacias mostram uma incapacidade de discriminar entre dois tons – isto é, as perdas perceptivas ocorrem em pares: na protanopia e na deuteranopia perde-se a capacidade de discriminar entre tons vermelhos e verdes e na tritanopia perde-se a capacidade de discriminar entre tons azuis e amarelos. A razão para tal advém do facto de que as respostas dos cones, apesar de crítica para a percepção das cores, representam tão-somente o primeiro passo numa sequência mais complexa de processamento de informação (ver Figura 1). Assim, algumas células ganglionares, ainda na retina, bem como neurónios no Núcleo Geniculado Lateral efectuam uma reparametrização das respostas de populações de cones, resultando no que se chama de canais oponentes. Algumas dessas células respondem à diferença nas respostas de cones L e M, efectivamente computando a quantidade relativa de vermelho ou verde. Algumas outras respondem à diferença entre as respostas de cones S e ao conjunto de respostas de cones L e M, resultando na oposição entre azul e amarelo. Finalmente, algumas outras células processam a quantidade total de luz, processando as respostas de todos os tipos de cone. Nas dicromacias, isto é, na ausência de um dos três tipos de cones, estes canais oponentes ficam comprometidos: na protanopia e na deuteranopia, a ausência de cones L ou M, respectivamente, impossibilita o processamento da oposição entre vermelho (cones L) e verde (cones M); na tritanopia, a ausência de cones S impossibilita, de forma similar, o processamento da oposição entre azul (cones S) e amarelo (cones M + L).
Note-se que a descrição “incapacidade de discriminar entre tonalidades vermelhas e verdes” aplica-se tanto à protanopia como à deuteranopia, sugerindo que as duas condições produzem exactamente o mesmo efeito perceptivo. Isto não é inteiramente verdade – ainda que essa descrição se aplique qualitativamente a ambas as condições, existem diferenças quantitativas subtis. Posto esta ressalva, o exercício que se segue irá simular apenas qualitativamente, e como primeira aproximação, as dicromacias, sem procurar modelizar as distinções entre protanopia e deuteranopia. Ainda que seja perfeitamente possível simular dicromacias com um maior grau de precisão (e existem na internet várias ferramentas que o fazem), tal iria implicar um grau de complexidade acrescido, e consequente comprometimento do valor pedagógico, àquele que se espera num curso introdutório à psicologia da percepção, ao qual o exercício se destina. Apesar desta ressalva, os procedimentos que se seguem poderão ser úteis em contextos em que a distinção entre protanopia e deuteranopia não seja crítica como, por exemplo, testar esquemas de cores para assegurar a sua adequação a portadores de daltonismo. Para a execução deste exercício é necessário instalar previamente o Add-On ‘Image Processing Toolbox’ no MATLAB. Adicionalmente, deverá ser copiada para a pasta activa do MATLAB uma qualquer fotografia digital que se pretenda usar para a simulação de dicromacias.
A lógica de base que será aqui usada consiste no seguinte: as cores de uma imagem, codificadas no sistema RGB, serão convertidas para o sistema CIELAB (ou L*a*b*), o qual representa as cores em três canais oponentes: (i) Luminância (L*), (ii) vermelho-verde (a*), e (iii) azul-amarelo (b*). Estes três canais são codificados, no MATLAB, na terceira dimensão de uma matriz, à semelhança do que acontece no sistema RGB. Uma vez feita esta conversão, será selectivamente eliminada a segunda (a*; vermelho-verde, simulando o resultado da protanopia e deuteranopia) ou terceira (b*; azul-amarelo, simulando o resultado da tritanopia) camada desta terceira dimensão (alterando os seus valores para 0). O resultado será, de seguida, reconvertido para RGB para apresentação visual.
Assim, começa-se por importar uma imagem digital como uma matriz H × V × 3, em que H e V especificam as dimensões horizontais e verticais da foto, com a terceira dimensão codificando a intensidade dos canais vermelho, verde, e azul (RGB). Essa matriz é ainda normalizada (os valores dos canais R, G, e B são convertidos de bytes, entre 0 e 255, para valores entre 0 e 1) e convertida para o sistema CIELAB.
Foto = imread('nome.extensão'); % Importar imagem como matriz - Substituir "nome" e "extensão" pelos correspondentes do ficheiro de imagem
Norm = im2double(Foto); % Normalizar os valores da matriz (0-1)
LAB = rgb2lab(Norm); % Converter a imagem, em RGB, para CIELAB
De seguida criam-se duas cópias da matriz LAB, uma na qual se alteram os valores de b* (azul-amarelo) para 0 – LAx – e outra na qual se alteram os valores de a* (vermelho-verde) para 0 – LxB.
LAx = LAB; % Duplicar a matriz LAB com o nome LAx
LAx(:,:,3) = 0; % Alterar os valores da terceira camada da terceira dimensão (b*; azul-amarelo) para 0
LxB = LAB; % Duplicar a matriz LAB com o nome LxB
LxB(:,:,2) = 0; % Alterar os valores da segunda camada da terceira dimensão (a*; vermelho-verde) para 0
As matrizes LxB e LAx são, de seguida, convertidas para RGB, para apresentação visual.
ProtDeut = lab2rgb(LxB); % Converter a matriz LxB para RGB com o nome ProtDeut
Trit = lab2rgb(LAx); % Converter a matriz LAx para RGB com o nome Trit
Para que se possam ver os resultados, juntamente com a imagem original, usam-se os seguintes comandos:
figure;
subplot(1,3,1)
image(Foto)
subtitle('Visão Normal')
subplot(1,3,2)
image(ProtDeut)
subtitle('Protanopia e Deuteranopia')
subplot(1,3,3)
image(Trit)
subtitle('Tritanopia')
O resultado deverá ser similar ao da figura 2.
Um exercício interessante, que poderá ajudar a clarificar alguns aspectos da visão cromática, consiste em repetir este exercício utilizando como imagem inicial padrões do teste de Ishihara, para diagnóstico de daltonismo (ver Figura 3).