Gerando efeitos de profundidade de campo em aplicativos de Realidade Virtual  
 
 
    Introdução e aspectos teóricos
     
    O olho humano tem um limitado campo de visão, principalmente no aspecto de profundidade de campo. Aimagem que se forma borrada na retina força o estímulo de acomodação, que produz as tensões dos músculos ciliares e resultam na alteração da curvatura da lente - cristalino. A própria acomodação em si fornece informações sobre a profundidade. A informação de acomodação estará contida nos chamados circulos borrados em torno das imagens que se formam na retina, para objetos mais ou menos distantes dos olhos. O cérebro converte esta informação combinada com outras em sensações de profundidade e de distância. No mundo real, são os seguintes os demais fatores que influenciam nossa percepção:
    - oclusão;
    - perspectiva;
    - efeitos de atmosfera: perspectiva atmosférica;
    - luz e sombra;
    - disparidade binocular;
    - movimentos;
    - interposição;
    - convergência: rotação dos olhos;
    - acomodação.
    Em R.V. uma pessoa está circundada por uma representação 3D do mundo virtual, gerada por computador. Para atingir altos índices de realismo, este mundo deve reproduzir os fatores listados acima. As estações de trabalho gráficas podem conseguir realizar os quatro primeiros fatores listados acima.  Alguns mais sofisticados podem realizar o fator de disparidade binocular, movimentação, interposição e convergência. Mas, nenhum sistema gráfico consegue implementar os efeitos de acomodação e profundidade de campo. A ausência gera a aparência surrealista das cenas. A percepção de profundidade do olho humano está associada à distância de 2 metros. 
     
    Acomodação e profundidade de campo:
     
    A acomodação faz com que nossos músculos tentem clarear a imagem borrada formada na retina. Ao mesmo tempo, borra as imagens que estão fora da distância de interesse. Cada ponto do objeto gera um círculo na tela de projeção, quando há imagem borrada. O diâmetro e a intensidade deste círculo são determinados por características de formação da imagem e pela distância da imagem a tela de projeção. Os nossos olhos promovem o ajuste automático para dar clareza à imagem. Assim, podemos usar equações das lentes para tal processo - acomodação. O mesmo deve ser feito no caso de olharmos uma cena num mundo virtual e tal processo vai gastar tempo. Conhecido o ponto da cena em que os olhos estão focados, e a distância deste ponto ao observador - o valor de z, retirado direto do z buffer, podemos encontrar os diâmetros do círculo borrado para um dado estado de acomodação dos nossos olhos.  Faça Cd ser o diâmetro do círculo e df a distância em que um dado sistema está focado, temos: 
    Cd = |Vd - Vf| (F/(n.Vd))*
    Para renderizar a imagem desfocada na retina como computação gráfica, nós também devemos determinar o diâmetro do círculo borrado que precisará ser produzido  na tela. 
    Cs = (ds/dr)Cr
    onde:
    ds é a distância entre os olhos e a tela;
    dr é a distância entre o cristalino e a retina;
    Cr é o diâmetro dos círculos borrados*
     
    Gerando efeitos desfocados:
     
    A literatura de computação gráfica fornece diversos algoritmos para gerar imagens desfocadas e efeitos de profundidade de campo.Potmesil e Chakravarty propuseram uma técnica de  pós processamento para simular efeitos de profundidade de campo e outras propriedades das lentes. Tal sistema primeiro produz uma imagem usando um algoritmo tradicional de tratamento de linhas escondidas. As intensidades e os valores de z são computados e armazenados para cada ponto. A intensidade de cada pixel na imagem de saída é então calculada como uma média ponderada de intensidades nos circulos borrados para cada pixel transposto.
    Tal processo consome muito tempo e memória, para ser implementado nos hardwares atuais. Além do mais, tal abordagem oferece somente uma aproximação, mas, como técnica de pós-processamento apresenta a vantagem de ser facilmente adicionada a sistemas já desenvolvidos. 
    Outra técnica, baseada em técnicas de amostragem estocásticas usada num ray-tracing distribuído, foi proposta por Cook*. A profundidade de campo, neste caso, é modelada por modificações na distribuição dos raios lançados através da área da cena. Tal técnica dá bons resultados, mas, não considera o fenômeno físico e óptico. Além disto, não pode ser aplicado à imagens em tempo real. 
    O processo proposto pelo autor aplica um filtro de  convolução com uma função apropriada, para a intensidade de cada pixel. O resultado da convolução é normalizado - dividido pela soma das pesos das máscaras de convolução. Para imagens coloridas, tal filtro é aplicado para cada uma das três cores básicas. A máscara de convolução é de tamanho 3X3. A máscara tem a forma
     
    1 2 1
    2 f 2
    1 2 1
    com f sendo um fator >= 4.
    O efeito de desfocalização produzido pelo filtro é proporcional a dois fatores:
    - fator f para a máscara de convolução e
    - contador de interação c, que representa o número de vezes que o filtro passou sobre a imagem - ou região.
    Para valores maiores de f o c diminui.
    * - descrição melhor no artigo original.