Como corrigir iluminação irregular / gradiente em uma tela com fundo branco?

24

Eu tenho uma foto de um desenho a lápis feito em papel, tirado com um flash hotshoe na DSLR e dois filtros polarizadores ( técnica de polarizador cruzado para fotografia em tela).

O problema agora é que, ao se aproximar do desenho, a iluminação se torna irregular, pois a lente projeta uma sombra em parte da imagem. Isso cria um gradiente sobre a imagem que é aproximadamente, mas não totalmente linear.

Abaixo está um exemplo de imagem; o original tem cerca de 3 cm de largura.

Como isso pode ser editado de forma que o plano de fundo fique igualmente branco?

Imagem de origem com iluminação irregular

-Editar-

Resultados digitalizados abaixo, não corrigidos e corrigidos. Embora isso pareça bastante promissor no início, infelizmente é de resolução total o que você vê aqui (600 px de largura); o scanner pode fazer 300 dpi e o desenho tem aproximadamente uma polegada de largura. Isso é um pouco menos comparado aos 5000 px da câmera.

Além disso, a varredura não corrigida sugere que a grafite realmente reflete uma boa parte da luz, em oposição à técnica do polarizador cruzado.

Digitalização não corrigida Digitalizar com curva corrigida

Simon A. Eugster
fonte
Existe alguma razão para você tirar uma foto em vez de digitalizá-la?
Cole Johnson
Sim; a tela pode ser maior que A4. Mas vou comparar os resultados à noite. Suspeito um pouco da reflexão que poderia ocorrer na grafite.
Simon A. Eugster
@ColeJohnson Scan adicionado acima.
Simon A. Eugster
Outra coisa a tentar: ter uma mesa de luz , ou simplesmente desligar o seu desenho e brilhar uma luz brilhante para ele do lado traseiro, e fotografar com a luz que brilha através dele (deixando o papel em si agir como um difusor). Obviamente, isso não funcionará com tintas opacas, ou se houver algo desenhado no verso, mas para imagens de lápis, giz de cera, tinta ou aquarela de um lado, pode valer a pena tentar.
Ilmari Karonen

Respostas:

8

O método que eu me usei é semelhante ao seu , mas usa o plug-in Resynthesizer (para GIMP) ou Fill com reconhecimento de conteúdo (para Photoshop) para reconstruir o gradiente:

  1. Crie uma seleção que cubra completamente o desenho. Você pode fazer isso manualmente ou pode usar a filtragem passa-alta para calcular uma máscara de seleção como esta:

    • Comece usando um filtro de detecção de borda, como Diferença de Gaussianos, em (uma cópia) da sua digitalização para extrair grosseiramente o desenho:

      Etapa 1.1: Extrair o desenho com Diferença de Gaussianos

    • Se o resultado não tiver contraste, use a ferramenta Níveis para escurecê-lo:

      Etapa 1.2: Ajustar níveis

    • Aplique um pouco de Gaussian Blur :

      Etapa 1.3: Aplicar desfoque gaussiano

    • Use a ferramenta Limiar para obter uma máscara que cubra todo o desenho e use Selecionar por cor para selecioná-lo:

      Etapa 1.4: Use a ferramenta de limite para obter a máscara

  2. Depois de ter uma seleção cobrindo o desenho, faça uma cópia da camada de digitalização original e use Heal Selection / Aware-Fill Fill para preenchê-la. Idealmente, sua camada copiada deve agora parecer uma imagem de uma folha de papel em branco:

    Etapa 2: curar a seleção para reconstruir o papel em branco

  3. Defina o modo da camada editada como Dividir, como em sua própria resposta. Se desejar reter parte da textura e / ou sombreamento do papel, reduza um pouco a opacidade da camada e aplique uma pequena quantidade de desfoque:

    Etapa 3: Divida pela camada de papel em branco

    (A imagem acima tem a camada preenchida Gaussiana borrada em 10px e a opacidade definida em 95%.)

  4. Como opção, depois de mesclar as camadas, ajuste os níveis para definir o ponto preto (dica: use a visualização do histograma logarítmico) e aumente o contraste:

    Etapa 4: ajustar os níveis

(Ps. Clique nas imagens de tamanho médio para visualizá-las em tamanho real.)

O bom desse método é que ele pode funcionar razoavelmente bem, mesmo para gradientes de sombreamento não lineares. Obviamente, não é perfeito - se o papel tiver, por exemplo, uma mancha irregular cujo limite se encontra parcialmente sob o desenho, é improvável que o preenchimento com reconhecimento de conteúdo o reconstrua corretamente. Ainda assim, como visto acima, muitas vezes fornece resultados bastante decentes.

Ilmari Karonen
fonte
Isso é muito legal e realmente o que eu queria fazer primeiro, mas não encontrei o Resynthesizer! Vou tentar isso amanhã com alguns desenhos. Curioso sobre um onde partes maiores do desenho são cobertas. Seu resultado já está ótimo.
Simon A. Eugster
Parece que não consigo registrar o Heal Selection no Gimp, infelizmente ...
Simon A. Eugster 10/02
Isso é estranho. Você está no Windows ou Linux? Uma possibilidade é que você pode não ter o Python disponível ou o GIMP pode não encontrá-lo por algum motivo. Nesse caso, a Heal Selection pode não funcionar, mas o filtro básico > Mapa> Resynthesize (que pode fazer tudo o que Heal Selection pode, mesmo que a interface do usuário possa não ser tão conveniente) ainda deve estar disponível.
Ilmari Karonen
Estou no Linux e tive que compilar o plugin sozinho. Mapa> Ressintetizar está realmente disponível. Como posso verificar se o Gimp encontra a versão python necessária? Eu tenho 2.7.5 e 3.3.2 instalado.
Simon A. Eugster
Eu não tenho certeza; Eu mesmo uso o Ubuntu e deixo o APT cuidar das coisas. O submenu Python-Fu aparece para você? Caso contrário, pode ser necessário instalar o GIMP-Python (se estiver disponível separadamente no próprio GIMP) e / ou recompilar o GIMP com o suporte ao Python ativado. Então, novamente, eu realmente estou apenas adivinhando aqui.
Ilmari Karonen
18

Edit: Eu escrevi um script do Gimp que segue as etapas abaixo e outro para a resposta do Ilmaris . Ambos os scripts estão disponíveis para download no GitHub . O caminho sugerido a seguir é este .


Estou respondendo aqui, porque tenho procurado uma solução há algum tempo e encontrei uma simples e funcional. Vamos ao resultado imediatamente:

  1. Crie uma camada de plano de fundo copiando apenas uma faixa vertical do plano de fundo e estendendo-a para o tamanho da imagem original.

    No Gimp: selecione rum retângulo de cima para baixo contendo o fundo, cole Shift+Ctrl+Vem uma nova imagem e expanda Filter > Map > Tile-a para o tamanho da imagem, execute um desfoque gaussiano sobre ela e copie-o novamente para a imagem como nova camada.

  2. Defina o modo de camada para Divisão .

  3. Reduza a opacidade da camada conforme desejado, por exemplo, para 90%. Mantê-lo em 100% geralmente é um pouco brilhante demais.

Etapas da divisão

O que isso faz, em essência, é que a camada de fundo define o valor RGB wde "branco" em cada pixel. O modo da camada de divisão amplia o valor na imagem de [0,w]para [0,255](consulte modos de camada do GIMP ) por pixel.

(Ruim) Exemplo usando curvas e gradiente linear

As primeiras tentativas eram sempre duplicar a camada, alterar o brilho para que a parte mais escura na parte inferior fosse iluminada corretamente e adicionar uma máscara de camada com um gradiente linear para iluminar apenas as regiões mais escuras. Quanto mais forte o gradiente, pior parecia.

Tentativa com um gradiente linear

(Melhor) Exemplo usando divisão

Divisão produz resultados muito melhores; a iluminação é fixada uniformemente e não há áreas queimadas, especialmente na parte esquerda do desenho.

Usando divisão

Simon A. Eugster
fonte
Ou apenas alterar os níveis de ajuste no photoshop
SaturnsEye
3
Para obter resultados ainda melhores, especialmente no caso de sombras não constantes / não lineares em ambas as direções, pode funcionar para tirar uma foto de uma folha de papel branca, aplicar um leve desfoque para se livrar do ruído da câmera e usar isso como uma base de camada de ajuste.
PlasmaHH
11
@SaturnsEye Experimente com a imagem de entrada acima. Não funciona;) Se o papel fosse cinza, como 10%, sim, seria a maneira mais fácil.
Simon A. Eugster
@PlasmaHH Isso exigiria que eu usasse um tripé para obter uma distância consistente, mas é uma boa solução, especialmente para fotografias muito pintadas. A parte de trás do papel geralmente é branca de qualquer maneira, portanto pode ser usada para a camada de ajuste. (Utilizamos diferentes tipos de papel com diferentes tons de cinza / marrom).
Simon A. Eugster
@ SimonA.Eugster: Se eu fizesse essas coisas mais de uma vez ou outra, usaria um tripé e uma iluminação recriada para obter resultados consistentes.
PlasmaHH
5

Esta resposta descreve a abordagem mais rápida e confiável que conheço, com base na resposta de Ilmari Kanoren . É semi-automático; a máscara automática não funciona para imagens rígidas como a abaixo, porque não há arestas em algumas partes do desenho.

Esse script do Gimp automatiza as etapas 3 e 4 (observe que o Resynthesizer é necessário); portanto, o fluxo de trabalho é apenas: Criar seleção, executar script. Demora 6 segundos para o script concluir uma imagem de 15 MP no meu laptop de 3 anos.

insira a descrição da imagem aqui

Etapa 1 (opcional): ajuste as curvas para preto profundo

Ponto preto

Etapa 2: selecione o objeto

No Gimp, a Máscara Rápida Shift+Qé uma maneira rápida. Use o lápis Ne pinte o objeto de branco, pressione Shift+Qnovamente para converter a máscara em uma seleção.

Objeto selecionado

Etapa 3: recrie o plano de fundo

  • Duplique a imagem e dimensione para 400 × 400 px
  • Use Seleção de recuperação ou preenchimento com reconhecimento de conteúdo para recuperar o objeto (apenas o fundo permanece)
  • Use Gaussian Blur, 40 × 40 px
  • Redimensione a imagem para o tamanho original e copie-a novamente como camada para a imagem original

fundo

Etapa 4: modo de divisão

Defina o modo de camada como Divisão e reduza a opacidade um pouco, se desejado.

Imagem fixa

Simon A. Eugster
fonte
1

Este é o fórum de fotografia, portanto, adotarei uma abordagem fotográfica. Claro que, para um branco perfeito, você provavelmente ainda precisará de alguns ajustes de pós-produção.

Em vez de usar um flash, você pode tentar usar luz natural. Evite a luz solar direta, também não fique muito perto da janela, mas a 2 metros da janela. Isso é para reduzir a diferença de luz entre a parte mais próxima e mais distante do desenho. (Mas, como se trata de uma imagem pequena, a distância pode não ser tão importante.)

Você pode apontar um tripé para baixo e colocar seu desenho no chão.

Ou, se você não tiver um tripé, poderá organizar uma capa de livro ou uma caixa de cereal para manter a imagem verticalmente em uma mesa e colocar a câmera firmemente na mesma mesa. (Coloque uma folha de papel branca atrás do desenho para evitar ver as imagens ou texturas de fundo.)

A técnica do polarizador que você está mencionando é no caso de você ter o desenho atrás de um copo e quando você tiver objetos ou reflexos brilhantes. Mas se a fonte de luz estiver em um ângulo oblíquo, você provavelmente não precisará usar um filtro.

Rafael
fonte
Estou ciente da iluminação ambiente. Provavelmente produziria melhores resultados em relação ao gradiente, embora a essa distância a lente provavelmente já comece a projetar uma sombra no papel. O polarizador é realmente necessário aqui, porque a superfície do papel não é uniforme e a grafite surpreendentemente bem em refletir a luz quanto mais escura você deseja que a área seja;) Além disso, pressionar um pouco mais com o lápis pode criar recuos onde a luz ambiente pode refletir novamente .
Simon A. Eugster