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

Tengo una foto de un dibujo a lápiz hecho sobre 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 acercarnos al dibujo la iluminación se vuelve desigual ya que la lente proyecta una sombra sobre parte de la imagen. Esto crea un degradado 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 esto de modo que el fondo sea uniformemente blanco?

Imagen de origen con iluminación desigual

-Editar-

Resultados escaneados a continuación, sin corregir y corregidos. Si bien esto parece bastante prometedor al principio, desafortunadamente es una resolución completa lo 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 refleja una buena parte de la luz, a diferencia de la técnica de polarización cruzada.

Escanear sin corregir Escaneo con curva corregida

¿Hay alguna razón por la que estás tomando una foto de él en lugar de escanearlo?
Sí; el lienzo puede ser más grande que A4. Pero voy a comparar los resultados por la noche. Sospecho un poco sobre la reflexión que podría ocurrir en el grafito.
@ColeJohnson Scan agregado arriba.
Otra cosa que puedes intentar: consigue una mesa de luz , o simplemente cuelga tu dibujo y haz que brille una luz brillante desde la parte trasera, y fotografíalo con la luz brillando a través de él (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 para imágenes de lápiz, crayón, tinta o acuarela de un solo lado, puede valer la pena intentarlo.

Respuestas (4)

El método que he usado yo mismo es similar al tuyo , pero usa el complemento Resynthesizer (para GIMP) o Content-Aware Fill (para Photoshop) para reconstruir el degradado:

  1. Cree una selección que cubra completamente el dibujo. Puede hacerlo 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 crudamente el dibujo:

      Paso 1.1: Extraer dibujo con Diferencia de Gaussianas

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

      Paso 1.2: Ajuste 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 seleccionarlo:

      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 escaneada original y use Reparar 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: Curar selección para reconstruir 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, es posible que desee 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 gaussiana rellenada borrosa en 10 px 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: ajusta los niveles

(Sal. 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 ve arriba, a menudo da resultados bastante decentes.

Eso es genial y en realidad lo que quería hacer primero, ¡pero no encontré el Resynthesizer! Voy a probar esto mañana con algunos dibujos. Curioso por uno donde se cubren partes más grandes del dibujo. Tu resultado ya se ve muy bien.
Parece que no puedo registrar Heal Selection en Gimp, lamentablemente...
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 Curar selección no funcione, pero el filtro básico > Mapa > Resintetizar (que puede hacer todo lo que puede hacer Curar selección, incluso si la interfaz de usuario puede no ser tan conveniente) aún debería estar disponible.
Estoy en Linux y tuve que compilar el complemento yo mismo. Map > Resynthesize está disponible. ¿Cómo puedo verificar si Gimp encuentra la versión de Python requerida? Tengo 2.7.5 y 3.3.2 instalado.
No estoy realmente seguro; Yo mismo uso Ubuntu y dejo que APT se encargue de todo. ¿Te aparece el submenú Python-Fu ? De lo contrario, es posible que deba instalar GIMP-Python (si está disponible por separado de GIMP) y/o volver a compilar GIMP con la compatibilidad con Python habilitada. Por otra parte, realmente solo estoy adivinando aquí.
El soporte de Python parece estar disponible. Hice una pregunta en la pila ahora.
¡Lo tengo funcionando ahora! Los resultados son buenos, pero tuve problemas con algunos dibujos que contenían áreas uniformes que no producían bordes. Msking a mano fue más rápido y más confiable; después de todo, no se puede cubrir demasiado, solo demasiado poco. Y teniendo en cuenta que el comando Reparar tarda 11 minutos en 4 núcleos (imagen de 16 MP), medio minuto de enmascaramiento manual está bien, creo :). ¿Tal vez podamos dividir la pregunta en dos sobre el degradado lineal y el fondo no lineal?
@Simon: un truco que puede usar para acelerar la herramienta de "selección de curación" es reducir el escaneo, luego enmascarar y curar, y luego volver a escalarlo al tamaño original. De todos modos, no es necesario volver a sintetizar todos los detalles del grano del papel, especialmente si solo lo va a difuminar.
Podría haber pensado en esto yo mismo. Escribió otro guión. De esta manera se hace en 30 segundos. Muy genial.

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


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

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

    En Gimp: seleccione run rectángulo de arriba a abajo que contenga el 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 y 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 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[0,w] amplía el valor de la imagen de a [0,255](consulte los modos de capa de GIMP ) por píxel.

(Malo) Ejemplo usando curvas y gradiente lineal

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

Intento con un degradado 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 como especialmente en la parte izquierda del dibujo.

Usando la división

O simplemente cambie la configuración de niveles en Photoshop
Para obtener mejores resultados, especialmente en el caso de sombras no constantes/no lineales en ambas direcciones, puede funcionar para tomar una foto de una hoja de papel blanca, aplicar un ligero desenfoque para eliminar el ruido de la cámara y usar eso como base de la capa de ajuste.
@SaturnsEye Pruébelo con la imagen de entrada de arriba. No funciona ;) Si el papel fuera de un gris uniforme, como un 10 %, entonces sí, esa sería la forma más fácil.
@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. (Usamos diferentes tipos de papel con diferentes tonos de gris/marrón).
@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.
Ahh, tienes razón, casi lo consigo usando solo niveles, pero está mal. ¡Usted gana esta ronda, señor! :)
Usando Afinity Photo, usé el modo de mezcla "diferencia" y tuve que invertir el resultado. También puse capas encima de eso para oscurecer las sombras.

Esta respuesta describe el enfoque confiable más rápido que conozco atm, basado en la respuesta de Ilmari Kanoren . Es semiautomático; la máscara automática no funciona para imágenes duras como la de abajo 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, Quick Mask 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
  • Use Heal Selection o Content-aware fill para curar el objeto (solo queda el fondo)
  • Usar desenfoque gaussiano, 40×40 px
  • Vuelva a escalar la imagen al tamaño original y cópiela nuevamente 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

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

En lugar de usar un flash, puedes intentar usar luz natural. Evite la luz solar directa, tampoco se quede demasiado cerca de la ventana, sino a 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 suelo.

O si no tiene un trípode, puede colocar la cubierta de un libro o una caja de cereal para sostener la imagen verticalmente sobre una mesa y colocar la cámara de manera constante sobre 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 del polarizador que mencionas es en el caso de que tengas el dibujo detrás de un vidrio, y cuando tengas objetos brillantes o reflejos. Pero si su fuente de luz está en un ángulo oblicuo, probablemente no necesite usar un filtro.

Soy consciente de la iluminación ambiental. Probablemente produciría mejores resultados con respecto al gradiente, aunque a esta distancia la lente probablemente ya comenzaría a proyectar una sombra en el papel. En realidad, se requiere el polarizador aquí porque la superficie del papel no es uniforme, y el grafito refleja sorprendentemente bien la luz cuanto más oscura desea 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. .