Como a profundidade de campo é implementada?

10

Eu sei que a profundidade de campo envolve desfoque.

Há ótimas informações sobre como fazer um desfoque gaussiano na pergunta Como o desfoque gaussiano é implementado?

Mas, além disso, como a profundidade de campo é implementada?

Quais são as regras sobre como você desfoca cada pixel e como você lida com o caso de quando há um pixel que deseja desfocar muito ao lado de um pixel que não quer desfocar tanto?

Eu também ouvi falar do "círculo de confusão", mas não tenho idéia do que é isso.

Alguém pode explicar a DOF de maneira simples e fácil de entender?

Alan Wolfe
fonte

Respostas:

20

A profundidade de campo é uma característica de uma configuração de lente de câmera, embora o nome "Profundidade de campo" seja comumente usado para descrever o efeito causado por essa característica.

As lentes da câmera podem focar perfeitamente apenas um ponto, mas há uma distância pela qual a imagem ainda parecerá razoavelmente nítida. Essa distância é o que realmente é a profundidade de campo. Essa distância é variável, dependendo de vários fatores, mas digamos, por uma questão de brevidade, que a maneira mais fácil de ajustá-la é alterando a abertura da câmera.

insira a descrição da imagem aqui

Quanto ao círculo de confusão, é útil procurar uma foto da wikipedia:

insira a descrição da imagem aqui

Nos três casos, um único ponto é "projetado" no nosso plano de imagem, mas como você pode ver, isso está a diferentes distâncias da lente.

Basicamente, porque, como eu disse, nem tudo está perfeitamente focado (ou seja, o ponto focal está no plano da imagem), um ponto pode ser projetado no nosso plano de imagem, não em um único ponto, mas em uma área. Isso, como fica claro na foto, ocorre porque o ponto focal é antes ou depois do plano da imagem. Esse "círculo" criado no plano da imagem é chamado de círculo de confusão.

Agora, a partir disso, deve ficar claro que, variando a profundidade de campo, você varia o tamanho do CoC; portanto, ele pode ser usado como uma medida da própria Dof e intuitiva ao pensar em termos de desfoque.

Conforme é implementado na renderização, existem muitos métodos por aí. Geralmente nos jogos é feito como um processo posterior, usando as informações de profundidade para dividir sua cena em diferentes "planos"; por exemplo, um plano de foco que não precisa ser desfocado, um plano próximo e um plano distante / plano de fundo que precisam ser desfocados. Depois de desfocar seus aviões, você pode compor os dois novamente para obter sua imagem final. Quanto você desfoca os vários planos, depende do efeito que você deseja alcançar. O sistema avançado geralmente implementa esse e outros efeitos de "lentes" usando parâmetros apropriados provenientes do mundo da fotografia, como a abertura.

Observe que existem muitas maneiras de implementar o efeito. A que descrevi é apenas uma que também possui variações (por exemplo, executar a coisa toda em menor resolução). O limite depende de qual é sua meta e de quanto você planejou para esse efeito. Você pode deixar de adotar o método "3 planos" em resolução extremamente baixa para calcular o círculo de confusão para cada pixel e aplicar o desfoque ad-hoc resultante nesse pixel.


EDIT: O comentário de @NathanReed precisa estar mais em evidência como parte da resposta:

As postagens de Matt Pettineo no blog Como Fake Bokeh e Bokeh II: The Sequel são ótimas introduções para como implementar praticamente o DoF pós-processo e abordar os artefatos típicos que você obtém dele.

cifz
fonte
1
Uma maneira barata de fazer isso é simplesmente usar o desfoque gaussiano em sua cena final e armazenar dois deles. Um para o primeiro plano e outro para o fundo. Eles podem ter o mesmo nível de desfoque ou diferente e depende de você. Ao terminar o desfoque, basta ler a partir da profundidade 0 até uma profundidade determinada (e ajustável) (por exemplo, 0,10). O que você está aprendendo é essa cena desfocada para a cena perfeitamente focada. Para o desfoque de fundo, você pode simplesmente fazer o mesmo, exceto se estiver desfocando da perfeita focagem para a imagem desfocada. Deixe algum espaço para o meio para criar uma região perfeitamente em foco.
ChaoSXDemon