Como detectar a luz do sol em uma foto

11

Como você detectaria algoritmicamente para uma determinada foto se o sol estava brilhando quando a foto foi tirada?

Exemplos

Uma amostra desta webcam no topo de uma montanha:

exemplo do sol

Claramente o sol está brilhando.

Nesta outra amostra, é muito menos óbvio:

exemplo nublado

Provavelmente, é possível detectar com facilidade se está nebuloso tentando identificar a pequena torre da igreja na capela no centro. No entanto, sabendo muito pouco sobre o processamento de imagens, eu ficaria surpreso se houvesse um (combinação de) algoritmo que pudesse dizer com segurança se há luz do sol ou não.

Marcel Stör
fonte
1
Eu acho que se encaixa muito bem no CS.SE. Não seria adequado se você perguntasse sobre um script de imagemagick que classifica suas fotos dependendo da luz do sol.
frafl
1
Você quer dizer detectar se o sol estava brilhando no momento ou não, ou detectar onde (orientação) o sol estava brilhando?
Paresh
@Paresh, se o sol estava brilhando no momento em que a foto foi tirada (pense na webcam).
Marcel Stör 06/04
1
Há uma história adorável sobre loucuras de redes neurais : o Pentágono tentou detectar tanques inimigos em fotos com uma rede neural. Mas, no final, eles tinham um computador de mainframe de vários milhões de dólares que conseguia distinguir fotos tiradas em um dia nublado e fotos tiradas em dia ensolarado. :-)
uli 06/04/2013
Podemos assumir uma câmera calibrada, ou seja, podemos confiar nas cores?
Raphael

Respostas:

9

Se você puder acessar os metadados, poderá aplicar várias heurísticas:

  1. Verifique a configuração de balanço de branco escolhida pela câmera para a foto. Basicamente, indica a temperatura da cor da luz no momento em que a foto foi tirada. Geralmente a luz solar é de cerca de 5500 Kelvin. Iluminação interna ou dias nublados, geralmente têm temperaturas diferentes.

  2. Verifique as configurações de exposição . Geralmente, quando o sol brilha, há mais luz disponível, e isso influencia as seguintes configurações:

    1. Uma velocidade mais baixa do obturador
    2. Uma configuração ISO mais baixa
    3. Um valor f mais alto

    Nos velhos tempos da fotografia, a regra Sunny 16 era usada para estimar a exposição. E você pode usá-lo, juntamente com as informações da lista acima, para verificar se a foto foi tirada durante o dia.

  3. Verifique se um flash disparou ou não.

  4. Verifique a hora em que a foto foi tirada . Supondo que o usuário tenha configurado o relógio, você pode remover imediatamente as fotos tiradas à noite.

Se, no entanto, você deseja abordar esse problema simplesmente do ponto de vista do processamento de imagens. Posso dizer que a luz solar costuma ter maior contraste e arestas mais severas. Portanto, a análise do histograma e a localização de arestas duras podem fornecer uma boa indicação.

Supondo que as fotos que você está processando estejam em um formato de imagem não processada, você pode aplicar o mesmo truque de balanço de branco descrito acima. No entanto, isso não funciona para imagens padrão como jpeg ou png. Isso porque o processador de imagem na câmera já compensa a mudança na temperatura da cor e incorpora o resultado na imagem final, apenas registrando a definição de wb nos metadados.

decadente
fonte
Eu estava rolando no chão quando li "Verifique a hora em que a foto foi tirada". No entanto, não tenho certeza de que o OP queira reconstruir o que a câmera fez.
fácil
@frafl, adicionei dois exemplos
Marcel Stör
@frafl Uma heurística, é qualquer abordagem para solução de problemas, aprendizado ou descoberta que emprega um método prático que não é garantido como ideal ou perfeito, mas suficiente para os objetivos imediatos. Verificar a hora em que a foto foi tirada (se o local for parcialmente conhecido) seria uma heurística perfeitamente aceitável.
Andy Gee