Por que este retrato não é tirado em f / 29 nítido?

25

Estou confuso sobre o motivo pelo qual esta imagem não é nítida. Esta é uma foto em retrato na F / 29 ISO100 1/250 com uma lente de 17-85 mm focada em 38 mm. A distância do sujeito foi de 1,2M. Meu aplicativo DOF diz que meu DOF deveria ter ~ 82,98 cm ou aproximadamente 1 milhão.

Estou confuso sobre o motivo pelo qual essa imagem não é tão nítida quanto deveria ser. Para esta captura de tela, aumentei o zoom para 200%. Isso é muito borrão em 200% normal?

EDIT: Algumas pessoas têm perguntas sobre o DOF nesta foto, então aqui estão algumas informações que podem ser obtidas em qualquer calculadora online do DOF. Minha estimativa de 82,8 cm era de um aplicativo e 1,2 M era da informação EXIF. Usando essa ferramenta on - line , o DOF no F28 seria:

 Subject distance   1.2 m

 **Depth of field** 
 Near limit     0.84 m
 Far limit      2.13 m
 Total          1.29 m

 In front of subject        0.36 m  (28%)
 Behind subject             0.93 m  (72%)

 Hyperfocal distance         2.7 m
 Circle of confusion       0.019 mm

Isso também está correto, porque é o quão longe eu realmente estava da câmera - 1,2 milhão. Portanto, para esta foto ficar fora de foco, eu teria que estar a meio metro de distância da câmera, o que não é o que eu lembro. Possivelmente, o desfoque observado nesta foto não se deve ao fato de o assunto estar desfocado.

retrato F / 29 ISO100 1/250

MyStack corrompido
fonte
6
a difração desempenha um papel nessa abertura
null
7
Definitivamente relacionado, se não uma duplicata: O que é um "limite de difração"? .
Philip Kendall
11
A lente estava focada em 38 mm ou 38 cm? mm parece improvável.
mattdm
9
Em nenhum lugar na descrição das suas configurações você disse a que distância sua lente estava focada. Observe que isso não tem nada a ver com a distância focal em que sua lente de zoom foi ajustada. Você pode ter a lente focada no infinito, pelo que sabemos. OK, talvez não seja infinito, mas simplesmente perder o foco é um candidato provável.
osullic
2
"Focado em" e "distância focal" são dois conceitos diferentes. Mais aqui .
mattdm

Respostas:

48

Como mencionado nas outras respostas, a difração levou à nitidez. Para colocar isso à prova, pode-se tentar aprimorar a imagem usando a deconvolução usando a função de dispersão pontual que corresponde ao F / 29. Para difração, temos (até uma normalização geral)

P (s) = {J 1rs / ( λF )] / [π rs / ( λF )]} 2

onde J 1 é a função Bessel da primeira espécie de ordem 1 ,
s é a distância na imagem medida em pixels,
r é o tamanho de um pixel (tipicamente cerca de 4,2 * 10 ^ (- 6) metros para sensores de culturas),
λ é o comprimento de onda da luz e
F o número F, neste caso 29.

Isso é verdade para a luz monocromática, para aproximar a função de espalhamento pontual para os canais de cores que podemos calcular em média em uma faixa apropriada de comprimentos de onda. Além disso, deve-se integrar P (s) sobre a área do pixel especificado por s.

Se compilarmos funções de dispersão de 3 pontos para os 3 canais de cores dessa maneira, podemos aguçar a imagem, transformando-a em espaço linear de cores, aplicando um algoritmo de deconvolução e transformando novamente em sRGB. Eu obtive o seguinte resultado:

Imagem nítida

Portanto, o rosto foi nitidamente aguçado usando apenas os dados sobre o número F e a suposição sobre o tamanho do pixel. Os artefatos de faixas são visíveis na parte escura da imagem, devido à posterização após a transformação novamente em sRGB.

Conforme solicitado, adicionarei mais alguns detalhes sobre os programas usados. Usei o ImageJ e o ImageMagick , também usei o Mathematica para calcular a função de dispersão de pontos, mas isso também pode ser feito no ImageJ. Começarei explicando como deconvolucionarei com o ImageJ quando já tiver a função de spread de ponto. Para fazer a deconvolução, você precisa instalar um plug-in para o ImageJ, usei esse plug-in para este caso, mas também existem outros plugins disponíveis, por exemplo, o plug-in DeconvolutionLab .

Primeiro, você precisa converter em espaço de cores linear, usei o ImageMagick para converter a imagem não-nitida (input.jpg) em espaço de cores linear usando o comando:

convert input.jpg -colorspace RGB output.tif

Em seguida, com o ImageJ, você abre o arquivo output.tif. Em seguida, nas opções do menu, você seleciona "imagem", "cor" e "Spit Channels". Em seguida, no menu, selecione "plugins" e "deconvolução iterativa paralela" e, em seguida, deconvolução interativa 2d ".

Você então obtém a janela de deconvolução, seleciona a imagem e "PSF" significa a função de dispersão de pontos. Lá, você seleciona o arquivo de imagem que contém a função de dispersão de pontos. Para o método, escolhi "WPL", que é baseado no filtro Wiener, que geralmente funciona razoavelmente bem para imagens com baixo ruído. Nas opções para WPL, marque a opção "normalize PSF" e, para o filtro passa-baixo, altere o valor para 0,2; por padrão, é 1, mas um valor mais baixo é melhor para imagens com baixo ruído (se você escolher maior, você ' obterá uma imagem menos nítida). As outras opções, Limite, podem ser escolhidas para serem reflexivas, o redimensionamento pode ser definido para "próxima potência de 2", a saída pode ser definida para 32 bits, a precisão pode ser definida para dobrar. Eu escolhi o número máximo de iterações para 15,

Você executa o programa clicando em "deconvolve". Você então obtém um arquivo de imagem de 32 bits como saída. Geralmente, os valores de pixel são bastante semelhantes aos da imagem original, mas você pode ter alguns pixels que excedem o máximo para o formato da imagem original. Portanto, nesse caso, começamos com imagens de 8 bits, mas na imagem não envolvida, você pode ter valores de cinza que excedem 255, o que faz com que toda a imagem fique muito escura. Isso deve ser corrigido recortando esses pixels para 255, o que você pode fazer selecionando no menu "processo" e depois em "Matemática" e, em seguida, "Máximo". O valor Máximo será usado para cortar os valores em cinza que excederem esse valor. Observe que isso será feito na imagem em que você clicou pela última vez. Você também pode ver qual arquivo é o "arquivo atual" selecionando "

Depois de desconectar os três componentes de cores, você pode combiná-los selecionando no menu "imagem", depois "cor" e "Mesclar canais". Você obtém uma imagem composta que pode ser convertida em RGB de 8 bits usando o comando "Empilhar em RGB" encontrado lá.

Você salva essa imagem, vamos chamá-la de im.tif. Finalmente, você deve converter isso em sRGB, pode fazer isso com o ImageMagick usando o comando:

convert im.tif -set colorspace RGB -colorspace sRGB output.tif

A questão restante é, então, como obter a função de spread de ponto. Na prática, se você tivesse tirado uma foto como a que está sendo discutida aqui, poderia simplesmente tirar uma foto de uma fonte pontual, por exemplo, uma estrela no F / 29 e usá-la como sua função de espalhamento pontual. Como alternativa, é possível observar limites de alto contraste e extrair a função de dispersão de pontos da maneira como os valores de cinza mudam de um valor para outro através do limite. Mas então você está tentando aprimorar a imagem da melhor maneira possível.

Nesse caso, o objetivo era compilar as funções de dispersão pontual para o canal de cores com base no que você esperaria que fosse para o F / 29, deconvolver a imagem com isso e verificar se o resultado parece ter melhorado o suficiente. Usei o Mathematica para fazer alguns cálculos e, em um programa de álgebra computacional tão avançado, é muito fácil fazer todo tipo de manipulação, incluindo a média de um intervalo de comprimento de onda e a integração de áreas de pixel para tornar o PSF mais realista.

Mas o ImageJ também permite criar uma nova imagem que você pode usar como a função de dispersão pontual. Se você clicar em "Arquivo" e depois em "Novo", poderá criar uma imagem de tamanho de 32 bits, por exemplo, 64 por 64 preenchida com preto. Você pode programar uma fórmula para os valores de cinza selecionando "processo", "Matemática" e "Macro". Para obter a função de dispersão pontual para este caso, que envolve a função Bessel aqui, você pode usar o fato de que ela é bem descrita pelos primeiros termos da expansão em série. A página do MathWorld à qual vinculei fornece expansões desta série, portanto, J 1 (x) 2 / x 2 com x = π rs / ( λF ) pode ser substituído por uma função do formato A + B s 2 + C s 4. Essa aproximação se tornará inválida se s for muito grande. Agora, sabemos que o PSF tende a zero, por exemplo, a uma distância de cerca de 5 ou 6 pixels, pode ser definido como zero. Supondo que o polinômio ainda seja pequeno nesses valores, você pode escrever a Macro como:

if(d<7) v = A + B  * pow(d,2) +  B * pow(d,4)

Em seguida, você cria 3 imagens para, digamos, lambda = 650 nm, 500 nm e 400 nm, ou quaisquer outros valores que considere adequados para representar a difração nos 3 canais de cores. Você pode fazer a média de alguns comprimentos de onda diferentes, criando imagens para lambda diferentes e selecionando "processo", depois "calculadora de imagem" e, em seguida, selecione "adicionar". Você pode adicionar outra imagem a esse resultado e, quando terminar de adicionar, poderá dividir para obter a média selecionando "processo", depois "matemática" e "dividir".

Conde Iblis
fonte
Isso é incrível. Gostaria de saber quanto tempo levará até que as câmeras tenham esse recurso embutido em seu arsenal de correção automática e esse tipo de coisa seja aplicada como é óbvio.
mattdm
2
+10 (no entanto, não é possível fazer +10) para adicionar a matemática. É ótimo que você tenha adicionado. Você pode citar isso? Eu quero tentar isso sozinho. Quanto mais detalhada a matemática, melhor!
MyStack corrompido
Isso é realmente bastante surpreendente. Em que software você fez isso? Parece que isso pode ser incrivelmente útil para a fotografia macro.
Whelkaholism
A deconvolução do @mattdm requer bastante poder computacional, mas alguns algoritmos como a deconvolução de Richardson – Lucy podem ser mais facilmente implementados no hardware do que outros. Além disso, o software da câmera usado para processar seus arquivos brutos em seus computadores pode incluir a deconvolução especificamente otimizada para lidar com o desfoque real que você obtém devido à desfocagem e difração.
Count Iblis
11
@CorruptedMyStack Vou adicionar mais alguns detalhes na resposta. Você poderá fazer um trabalho muito melhor se tiver o arquivo bruto. Você pode procurar o tamanho do sensor e, a partir disso, calcular o tamanho do pixel. Mas você também pode pular os cálculos e medir diretamente a função de dispersão de pontos tirando fotos de algum ponto como objeto e, em seguida, apenas extrair a função de dispersão de pontos. No caso de difração, a deconvolução é mais bem executada com os arquivos brutos, ao contrário de outros casos, agora você tem franjas de cores que não devem ser corrigidas antes da deconvolução.
Count Iblis
51

Você ultrapassou o limite de difração . Os raios de luz que passam através de um pequeno orifício divergem e interferem um com o outro e um padrão emerge - um tipo de faixa em que diferentes frequências / posicionamento podem causar raios separados para somar ou negar um ao outro. Quanto menor a abertura, maior essa divergência / interferência se torna. Esse padrão é chamado de disco Airy. Quando o diâmetro do pico do disco Airy fica maior que o tamanho de um pixel e os discos Airy para cada pixel começam a se mesclar, você obtém suavidade - portanto, quanto maior a contagem de pixels do sensor e menor o sensor, mais cedo você vou ver quando você parar.

Você geralmente é mais afiado em um "meio feliz". Onde o "meio feliz" do seu equipamento pode estar mudará dependendo da densidade / tamanho do pixel e do design da lente. Com sensores do tamanho APS-C, que eu detecte de maneira inteligente que você está usando da referência de lente 17-85, você provavelmente não quer passar do f / 11 sem uma razão realmente boa e com vontade de desistir de alguma nitidez. Os limites de difração teórica provavelmente estarão na faixa f / 5.6-f / 8. Você também vai querer descobrir onde está o "ponto ideal" da sua lente - muitas lentes têm um desempenho melhor parado de uma a duas paradas de distância. Por exemplo, o "ponto ideal" da EF 50mm f / 1.8 II está na faixa de f / 4-5.6.

Eu também diria que julgar a nitidez com uma ampliação de 200% é apenas pedir que todas as suas lentes se pareçam com carne de cachorro. Essa não é uma ampliação realista em termos de distâncias de visualização que você teria em uma impressão típica, e é uma lente rara que suporta esse tipo de teste, mesmo quando usado em seu ponto ideal. Pare de espiar os pixels. Comece a olhar para a impressão.

Veja também: http://www.cambridgeincolour.com/tutorials/diffraction-photography.htm

inkista
fonte
Ou, se você estiver avaliando a aparência da impressão, faça o seguinte: amplie a imagem para que ela apareça na tela com o mesmo tamanho da impressão e olhe para a tela da mesma distância que você faria com a impressão. Isso lhe dará uma idéia muito melhor de como será o resultado final, mesmo que esse não seja um método perfeito. @CorruptedMyStack
um CVn
15

Por causa da difração. f / 29 é demais para você esperar uma imagem nítida. Tente fotografar a mesma coisa em f / 8 e você verá a diferença.

K. Minkov
fonte