PhotoScan: como tirar fotos sem ofuscar

Em 19 de abril de 2017, lançamos uma atualização para o PhotoScan , nosso aplicativo móvel para iOS e Android, que permite digitalizar fotos em papel com apenas um smartphone. Um dos principais recursos do PhotoScan é a capacidade de remover o brilho das fotos (geralmente são impressas em papel brilhante e altamente refletivo), bem como de páginas de álbuns de plástico ou fotos em vidro. Para fazer isso, desenvolvemos uma combinação única de visão computacional e tecnologia de processamento de imagem que pode combinar e combinar com precisão várias fotos ligeiramente diferentes da foto e separar o destaque da própria imagem na foto.

imagem

De uma foto, é muito difícil determinar automaticamente quais partes da imagem são a foto original e quais são o destaque. Além disso, o brilho pode iluminar áreas da foto, pelo que será impossível restaurar a parte dele que está oculta sob o brilho. Mas se você tirar várias fotos da foto movendo a câmera, o reflexo da lente muda - ela se move por diferentes partes da foto. Na maioria dos casos, cada pixel individual não será exibido pelo menos em uma das imagens. Embora nenhuma das fotos fique sem brilho, podemos combinar várias fotos da foto impressa tiradas em ângulos diferentes e, assim, remover o brilho. A dificuldade é que as imagens devem ser alinhadas com muita precisão para que sejam combinadas corretamente, e esse processamento deve ser realizado no smartphone com rapidez suficiente para obter o efeito de um resultado quase instantâneo.

Texto oculto


Nossa tecnologia foi inspirada em nosso trabalho anterior publicado no SIGGRAPH 2015 , que chamamos de “ fotografia sem obstruções ”. Ele usa princípios semelhantes para remover várias interferências do campo de visão. Mas o algoritmo original foi baseado em um modelo generativo no qual foram avaliados o movimento e a aparência da cena principal e a interferência. Os recursos desse modelo são ótimos e podem remover uma variedade de interferências - mas é muito caro em termos computacionais para ser usado em smartphones. Portanto, desenvolvemos um modelo simplificado que se refere ao alargamento como uma espécie de anomalia e tenta reconhecer a imagem abaixo dele. Embora o modelo seja simplificado, ainda é uma tarefa muito difícil - o reconhecimento deve ser preciso e confiável.

Como isso funciona


Começamos com um conjunto de instantâneos da fotografia tirada pelo usuário que moveu a câmera. O primeiro instantâneo - "quadro de referência" - determina a aparência final desejada do instantâneo. Recomenda-se ao usuário tirar quatro fotos adicionais. Em cada quadro, determinamos os pontos-chave (calculamos as propriedades dos ORBs nos ângulos determinados usando o algoritmo Harris ) e os usamos para determinar homógrafos que mapeiam cada quadro subsequente para o de referência.

Texto oculto


A tecnologia parece simples, mas tem uma pegada - os homógrafos podem apenas comparar imagens planas. Mas as fotografias em papel geralmente não são planas (como no exemplo acima). Utilizamos o fluxo óptico - uma representação fundamental do movimento na visão computacional, estabelecendo uma correspondência pixel por pixel entre duas imagens, corrigindo desvios do plano. Começamos com quadros alinhados usando homografia e contamos os "campos de fluxo" para endireitar as imagens e ajustar ainda mais. Observe que no exemplo abaixo, os cantos da foto esquerda "movem-se" um pouco depois de definir os quadros usando apenas homografia. À direita, você pode ver como a foto está melhor alinhada após a aplicação do fluxo óptico.

Texto oculto


A diferença não é muito marcante, mas afeta significativamente o resultado final. Preste atenção em como pequenas discrepâncias se manifestam na forma de fragmentos de imagem duplicados e em como essas falhas são eliminadas por refinamentos adicionais usando fluxos.



E, nesse caso, a dificuldade estava em fazer o algoritmo de fluxo óptico de trabalho lento trabalhar mais rápido em um smartphone. Em vez do cálculo tradicional do fluxo para cada pixel (o número de vetores é igual ao número de pixels), construímos o campo de fluxo usando um número menor de pontos de controle e registramos o movimento de cada pixel na imagem em função do movimento dos pontos de controle. Nomeadamente, dividimos cada imagem em células separadas que formam uma estrutura de granulação grossa e representam o fluxo de pixels em uma célula separada como uma combinação bilinear do fluxo e os quatro cantos da célula que o contém.





Resta então resolver um problema mais simples, já que o número de vetores de fluxo agora é igual ao número de pontos da rede, que geralmente são muito menores que os pixels. Esse processo é semelhante ao processamento de imagens splining . Com esse algoritmo, conseguimos reduzir o tempo de cálculo do fluxo óptico no telefone Pixel em cerca de 40 vezes!

Texto oculto


Por fim, para criar a imagem final sem brilho, para cada parte do quadro, pegamos os valores de pixel e calculamos o “mínimo mínimo” para encontrar a opção mais escura. Especificamente, calculamos o brilho mínimo esperado a partir dos quadros disponíveis e atribuímos pesos menores aos pixels mais próximos das bordas curvas das imagens. Utilizamos esse método em vez de calcular diretamente o mínimo devido ao fato de que os mesmos pixels em quadros diferentes podem ter um brilho diferente. O mínimo de pixel por pixel pode levar ao aparecimento de juntas visíveis devido a mudanças bruscas de intensidade nos limites das imagens sobrepostas.



O algoritmo é capaz de trabalhar em várias condições de digitalização - fotos foscas e brilhantes, fotos em álbuns e sem elas, capas de revistas.

Texto oculto







Para calcular o resultado final, nossa equipe desenvolveu um método que determina automaticamente os limites da imagem e o leva a uma visualização retangular. Devido à distorção da perspectiva, uma foto retangular digitalizada geralmente se transforma em um quadrilátero não retangular. O método analisa sinais, cores e bordas da imagem para descobrir para onde vão as bordas exatas da foto original e depois aplica transformações geométricas para endireitar a imagem. O resultado é uma versão digital de alta qualidade da fotografia em papel, sem brilho.



Em geral, muitas coisas estão acontecendo sob o capô, e tudo isso funciona quase instantaneamente no seu telefone! Você pode experimentar o PhotoScan baixando a versão do aplicativo para Android ou iOS .

Source: https://habr.com/ru/post/pt403389/


All Articles