¿Cómo arreglar la iluminación desigual / degradada en un lienzo con fondo blanco?

24

Tengo una foto de un dibujo a lápiz hecho en papel, tomado con un flash de zapata en la DSLR y dos filtros polarizadores ( técnica de polarización cruzada para fotografía de lienzo).

El problema ahora es que al acercarse al dibujo, la iluminación se vuelve desigual ya que la lente proyecta una sombra en parte de la imagen. Esto crea un gradiente sobre la imagen que es aproximadamente, pero no del todo, lineal.

A continuación se muestra una imagen de ejemplo; el original mide unos 3 cm de ancho.

¿Cómo se puede editar de modo que el fondo sea uniformemente blanco?

Fuente de imagen con iluminación desigual

-Editar-

Resultados escaneados a continuación, sin corregir y corregidos. Si bien esto parece bastante prometedor al principio, desafortunadamente es la resolución completa que ves aquí (600 px de ancho); el escáner puede hacer 300 ppp y el dibujo tiene aproximadamente una pulgada de ancho. Esto es un poco menos en comparación con los 5000 px de la cámara.

Además, el escaneo no corregido sugiere que el grafito de hecho refleja una buena parte de la luz, a diferencia de la técnica de polarización cruzada.

Escanear sin corregir Escanear con curva corregida

Simon A. Eugster
fuente
¿Hay alguna razón por la que le tomes una foto en lugar de escanearla?
Cole Johnson
Sí; El lienzo puede ser más grande que A4. Pero voy a comparar los resultados en la noche. Sospecho un poco sobre la reflexión que podría ocurrir en el grafito.
Simon A. Eugster
@ColeJohnson Scan agregado anteriormente.
Simon A. Eugster
Algo más que puede probar: obtenga una mesa de luz , o simplemente cuelgue su dibujo y brille una luz brillante desde la parte posterior, y fotografíelo con la luz que lo atraviesa (dejando que el papel mismo actúe como un difusor). Por supuesto, esto no funcionará con pinturas opacas, o si hay algo dibujado en el reverso, pero vale la pena intentarlo con imágenes a lápiz, crayón, tinta o acuarela de un solo lado.
Ilmari Karonen

Respuestas:

8

El método que utilicé yo mismo es similar al tuyo , pero usa el complemento Resynthesizer (para GIMP) o el relleno con reconocimiento de contenido (para Photoshop) para reconstruir el gradiente:

  1. Cree una selección que cubra completamente el dibujo. Puede hacer esto a mano, o puede usar el filtrado de paso alto para calcular una máscara de selección como esta:

    • Comience usando un filtro de detección de bordes como Diferencia de gaussianos en (una copia de) su escaneo para extraer el dibujo de manera cruda:

      Paso 1.1: Extraer dibujo con diferencia de gaussianos

    • Si el resultado carece de contraste, use la herramienta Niveles para oscurecerlo:

      Paso 1.2: ajustar los niveles

    • Aplique un poco de desenfoque gaussiano :

      Paso 1.3: aplicar desenfoque gaussiano

    • Use la herramienta Umbral para obtener una máscara que cubra todo el dibujo y use Seleccionar por color para seleccionarla:

      Paso 1.4: use la herramienta de umbral para obtener la máscara

  2. Una vez que tenga una selección que cubra el dibujo, haga una copia de la capa de escaneo original y use Curar selección / Relleno consciente del contenido para completarla. Idealmente, su capa copiada ahora debería verse como una imagen de una hoja de papel en blanco:

    Paso 2: cura la selección para reconstruir el papel en blanco

  3. Establezca el modo de la capa editada en Dividir, como en su propia respuesta. Si desea conservar parte de la textura y / o el sombreado del papel, puede reducir un poco la opacidad de la capa y tal vez aplicar una pequeña cantidad de desenfoque:

    Paso 3: dividir por capa de papel en blanco

    (La imagen de arriba tiene la capa rellena Gaussian borrosa por 10px, y la opacidad establecida en 95%).

  4. Opcionalmente, después de fusionar las capas, ajuste los niveles para establecer el punto negro (consejo: use la vista de histograma logarítmico) y aumente el contraste:

    Paso 4: ajuste los niveles

(Ps. Haga clic en las imágenes de tamaño medio para verlas en tamaño completo).

Lo bueno de este método es que puede funcionar bastante bien incluso para gradientes de sombreado bastante no lineales. Por supuesto, no es perfecto: si el papel tiene, por ejemplo, una mancha irregular cuyo límite se encuentra en parte debajo del dibujo, es poco probable que el relleno consciente del contenido lo reconstruya correctamente. Aún así, como se vio anteriormente, a menudo da resultados bastante decentes.

Ilmari Karonen
fuente
Eso es muy bueno y en realidad era lo que quería hacer primero, ¡pero no encontré el Resynthesizer! Voy a probar esto mañana con algunos dibujos. Curioso sobre uno donde se cubren partes más grandes del dibujo. Su resultado ya se ve muy bien.
Simon A. Eugster
Parece que no puedo registrar Heal Selection en Gimp, desafortunadamente ...
Simon A. Eugster
Eso es extraño. ¿Estás en Windows o Linux? Una posibilidad es que no tenga Python disponible o que GIMP no lo encuentre por algún motivo. En ese caso, es posible que la selección de curación no funcione, pero el filtro básico > Mapa> resintetizar (que puede hacer todo lo que puede hacer la selección de curación, incluso si la interfaz de usuario no es tan conveniente) todavía debería estar disponible.
Ilmari Karonen
Estoy en Linux y tuve que compilar el complemento yo mismo. Mapa> Resynthesize está disponible. ¿Cómo puedo verificar si Gimp encuentra la versión de Python requerida? Tengo 2.7.5 y 3.3.2 instalados.
Simon A. Eugster
No estoy realmente seguro; Yo mismo uso Ubuntu y dejo que APT se encargue de las cosas. ¿Te aparece el submenú Python-Fu ? De lo contrario, es posible que necesite instalar GIMP-Python (si está disponible por separado de GIMP) y / o volver a compilar GIMP con el soporte de Python habilitado. Por otra parte, realmente solo estoy adivinando aquí.
Ilmari Karonen
18

Editar: escribí un script de Gimp que hace los pasos a continuación, y otro para la respuesta de Ilmaris . Ambos scripts están disponibles para descargar en GitHub . El camino sugerido es este .


Estoy respondiendo esto aquí porque he estado buscando una solución durante bastante tiempo y encontré una solución simple y funcional. Vayamos al resultado de inmediato:

  1. Cree una capa de fondo copiando una franja vertical del fondo solamente y estirándola al tamaño de la imagen original.

    En Gimp: seleccione run rectángulo de arriba a abajo que contenga fondo, péguelo Shift+Ctrl+Ven una nueva imagen y amplíelo Filter > Map > Tileal tamaño de la imagen, ejecute un desenfoque gaussiano sobre él, luego cópielo nuevamente en la imagen como una nueva capa.

  2. Establezca el modo de capa en División .

  3. Reduzca la opacidad de la capa como desee, por ejemplo, al 90%. Mantenerlo encendido al 100% suele ser demasiado brillante.

Pasos de división

Lo que esto hace, en esencia, es que la capa de fondo define el valor RGB wde "blanco" en cada píxel. El modo de capa de división luego estira el valor de la imagen de [0,w]a [0,255](ver modos de capa GIMP ) por píxel.

(Malo) Ejemplo usando curvas y gradiente lineal

Los primeros intentos siempre consistieron en duplicar la capa, cambiar el brillo de manera que la parte más oscura en la parte inferior se iluminara correctamente y agregar una máscara de capa con un degradado lineal para aclarar solo las regiones más oscuras. Cuanto más fuerte era el gradiente, peor se veía.

Intento con un gradiente lineal

(Mejor) Ejemplo usando división

La división produce resultados mucho mejores; la iluminación se fija de manera uniforme, y no hay áreas quemadas, especialmente en la parte izquierda del dibujo.

Usando división

Simon A. Eugster
fuente
O simplemente cambie la configuración de niveles en photoshop
SaturnsEye
3
Para obtener resultados aún mejores, especialmente en el caso de sombras no constantes / no lineales en ambas direcciones, puede funcionar tomar una foto de una hoja de papel blanco, aplicar un poco de desenfoque para eliminar el ruido de la cámara y usar eso como una base de capa de ajuste.
PlasmaHH
1
@SaturnsEye Pruébelo con la imagen de entrada anterior. No funciona;) Si el papel fuera un gris uniforme, como el 10%, entonces sí, esa sería la forma más fácil.
Simon A. Eugster
@PlasmaHH Esto requeriría que use un trípode para obtener una distancia constante, pero es una buena solución, especialmente para fotografías muy pintadas. El reverso del papel suele ser blanco de todos modos, por lo que podría usarse para la capa de ajuste. (Utilizamos diferentes tipos de papel con diferentes tonos de gris / marrón).
Simon A. Eugster
@ SimonA.Eugster: Si tuviera que hacer estas cosas más de una vez, usaría un trípode y una configuración de luz recreable para obtener resultados consistentes de todos modos.
PlasmaHH
5

Esta respuesta describe el enfoque confiable más rápido que conozco, basado en la respuesta de Ilmari Kanoren . Es semiautomático; la máscara automática no funciona para imágenes duras como la siguiente porque no hay bordes en algunas partes del dibujo.

Este script de Gimp automatiza los pasos 3 y 4 (tenga en cuenta que se requiere Resynthesizer), por lo que el flujo de trabajo es solo: Crear selección, ejecutar script. El script tarda 6 segundos en completar una imagen de 15 MP en mi computadora portátil de 3 años.

ingrese la descripción de la imagen aquí

Paso 1 (opcional): ajuste las curvas para un negro profundo

Punto negro

Paso 2: selecciona el objeto

En Gimp, la máscara rápida Shift+Qes una forma rápida. Use el lápiz Ny pinte el objeto de blanco, presione Shift+Qnuevamente para convertir la máscara en una selección.

Objeto seleccionado

Paso 3: recrea el fondo

  • Duplica la imagen y escala a 400 × 400 px
  • El uso Heal Selección o Content-Aware Fill para curar el objeto de distancia (únicos restos fondo)
  • Utilice desenfoque gaussiano, 40 × 40 px
  • Vuelva a escalar la imagen al tamaño original y cópiela como capa a la imagen original

Fondo

Paso 4: modo de división

Establezca el modo de capa en División y reduzca un poco la opacidad, si lo desea.

Imagen fija

Simon A. Eugster
fuente
1

Este es el foro de fotografía, así que adoptaré un enfoque fotográfico. Por supuesto, para un blanco perfecto, probablemente todavía necesite algunos ajustes de postproducción.

En lugar de usar un flash, puede intentar usar luz natural. Evite la luz solar directa, tampoco se quede demasiado cerca de la ventana, sino a unos 2 metros de la ventana. Esto es para reducir la diferencia de luz entre la parte más cercana y la más alejada del dibujo. (Pero como esta es una imagen pequeña, la distancia puede no ser tan importante).

Puedes apuntar un trípode hacia abajo y poner tu dibujo en el piso.

O si no tiene un trípode, puede colocar una cubierta de libro o una caja de cereal para sostener la imagen verticalmente en una mesa y colocar su cámara de manera constante en la misma mesa. (Coloque una hoja de papel blanca detrás de su dibujo para evitar ver las imágenes o texturas de fondo).

La técnica de polarizador que está mencionando es en el caso de que tenga el dibujo detrás de un vidrio y cuando tenga objetos brillantes o reflejos. Pero si su fuente de luz está en un ángulo oblicuo, probablemente no necesite usar un filtro.

Rafael
fuente
Soy consciente de la iluminación ambiental. Es probable que produzca mejores resultados con respecto al gradiente, aunque a esta distancia la lente probablemente comenzará a proyectar una sombra sobre el papel. En realidad, aquí se necesita el polarizador porque la superficie del papel no es uniforme, y el grafito hace sorprendentemente bien el reflejo de la luz cuanto más oscura desee que sea el área;) Además, presionar un poco más con el lápiz puede crear hendiduras donde la luz ambiental puede reflejarse nuevamente .
Simon A. Eugster