El 19 de abril de 2017, lanzamos una
actualización de PhotoScan , nuestra aplicación móvil para iOS y Android, que le permite digitalizar fotos en papel con solo un teléfono inteligente. Una de las características clave de PhotoScan es la capacidad de eliminar el resplandor de las fotos (a menudo se imprimen en papel brillante y altamente reflectante), así como de páginas de álbumes de plástico o fotos debajo del vidrio. Para hacer esto, hemos desarrollado una combinación única de visión por computadora y tecnología de procesamiento de imágenes que puede combinar con precisión y combinar varias imágenes ligeramente diferentes de la foto y separar el resaltado de la imagen en la foto.

A partir de una imagen, es muy difícil determinar automáticamente qué partes de la imagen son la foto original y cuáles son las más destacadas. Además, el resplandor puede iluminar áreas de la foto, por lo que será imposible restaurar esa parte que está oculta debajo del resplandor. Pero si toma varias fotos de la foto moviendo la cámara, el destello de la lente cambia: se mueve a través de diferentes partes de la foto. En la mayoría de los casos, cada píxel individual no será acampanado al menos en una de las imágenes. Aunque ninguna de las imágenes carecerá de reflejos, podemos combinar varias imágenes de la fotografía impresa tomada en diferentes ángulos y, por lo tanto, eliminar el reflejo. La dificultad es que las imágenes deben estar alineadas con mucha precisión para que se combinen correctamente, y este procesamiento debe realizarse en el teléfono inteligente lo suficientemente rápido como para obtener el efecto de un resultado casi instantáneo.
Nuestra tecnología se inspiró en nuestro trabajo anterior publicado en
SIGGRAPH 2015 , al que llamamos "
fotografía libre de obstrucciones ". Utiliza principios similares para eliminar diversas interferencias del campo de visión. Pero el algoritmo original se basó en un modelo generativo en el que se evaluaron el movimiento y la apariencia de la escena principal y la interferencia. Las capacidades de este modelo son excelentes, y es capaz de eliminar una variedad de interferencias, pero es demasiado costoso desde el punto de vista computacional para usarse en teléfonos inteligentes. Por lo tanto, hemos desarrollado un modelo simplificado que se refiere a la llamarada como un tipo de anomalía e intenta reconocer la imagen debajo de ella. Aunque el modelo está simplificado, sigue siendo una tarea muy difícil: el reconocimiento debe ser preciso y confiable.
Como funciona
Comenzamos con un conjunto de instantáneas de la fotografía tomada por el usuario que movió la cámara. La primera instantánea - "marco de referencia" - determina el aspecto final deseado de la instantánea. Se recomienda al usuario que tome cuatro fotos adicionales. En cada cuadro, determinamos los
puntos clave (calculamos las
propiedades de ORB en los ángulos determinados usando
el algoritmo de Harris ) y los usamos para determinar
homógrafos que mapean cada cuadro posterior al de referencia.
La tecnología parece sencilla, pero tiene un inconveniente: las homógrafos solo pueden comparar imágenes planas. Pero las fotografías en papel a menudo no son planas (como en el ejemplo anterior). Utilizamos
flujo óptico , una representación fundamental del movimiento en la visión por computadora, estableciendo una correspondencia píxel por píxel entre dos imágenes, corrigiendo las desviaciones del plano. Comenzamos con marcos alineados usando homografía y contamos los "campos de flujo" para enderezar las imágenes y ajustarlas aún más. Tenga en cuenta que en el ejemplo a continuación, las esquinas de la foto izquierda se "mueven" un poco después de definir los marcos utilizando solo la homografía. A la derecha, puede ver cómo se alinea mejor la foto después de aplicar el flujo óptico.
La diferencia no es muy sorprendente, pero afecta significativamente el resultado final. Preste atención a cómo las pequeñas discrepancias se manifiestan en forma de fragmentos de imagen duplicados, y cómo estos defectos se eliminan mediante el refinamiento adicional mediante transmisiones.

Y en este caso, la dificultad radicaba en hacer que el algoritmo de flujo óptico que funciona inicialmente lentamente funcione más rápido en un teléfono inteligente. En lugar del cálculo tradicional del flujo para cada píxel (el número de vectores es igual al número de píxeles), construimos el campo de flujo utilizando un número menor de puntos de control y registramos el movimiento de cada píxel en la imagen en función del movimiento de los puntos de control. Es decir, dividimos cada imagen en celdas disjuntas que forman una red de grano grueso, y representamos la corriente de píxeles en una celda separada como una
combinación bilineal de la corriente y las cuatro esquinas de la celda que la contiene.


Luego queda resolver un problema más simple, ya que el número de vectores de flujo ahora es igual al número de puntos de la red, que generalmente son mucho más pequeños que los píxeles. Este proceso es similar al
procesamiento de imágenes divididas . ¡Con este algoritmo, pudimos reducir el tiempo de cálculo del flujo óptico en el teléfono Pixel unas 40 veces!
Finalmente, para crear la imagen final sin deslumbramiento, para cada parte del marco tomamos los valores de píxel y calculamos el "mínimo suave" para encontrar la más oscura de las opciones. Específicamente, calculamos el brillo mínimo esperado de los fotogramas disponibles y asignamos pesos más pequeños a los píxeles que están más cerca de los bordes curvos de las imágenes. Utilizamos este método en lugar de calcular directamente el mínimo debido al hecho de que los mismos píxeles en diferentes cuadros pueden tener un brillo diferente. El mínimo píxel por píxel puede dar lugar a la aparición de juntas visibles debido a cambios bruscos de intensidad en los límites de las imágenes superpuestas.

El algoritmo puede funcionar en varias condiciones de escaneo: fotos mate y brillante, fotos en álbumes y sin ellas, portadas de revistas.
Para calcular el resultado final, nuestro equipo ha desarrollado un método que determina automáticamente los límites de la imagen y lo lleva a una vista rectangular. Debido a la distorsión de la perspectiva, una foto rectangular escaneada generalmente se convierte en un cuadrilátero no rectangular. El método analiza las señales de imagen, el color y los bordes para averiguar dónde van los bordes exactos de la foto original, y luego aplica transformaciones geométricas para enderezar la imagen. El resultado es una versión digital de alta calidad de fotografía en papel sin reflejos.

En general, están sucediendo muchas cosas debajo del capó, ¡y todo esto funciona casi instantáneamente en su teléfono! Puede probar PhotoScan descargando la versión de la aplicación para
Android o
iOS .