Come correggere l'illuminazione irregolare / gradiente su una tela con sfondo bianco?


24

Ho una foto di un disegno a matita fatto su carta, scattata con un flash di hotshoe sulla DSLR e due filtri polarizzatori ( tecnica del polarizzatore incrociato per la fotografia su tela).

Il problema ora è che quando ci si avvicina al disegno, l'illuminazione diventa irregolare poiché l'obiettivo proietta un'ombra su una parte dell'immagine. Questo crea un gradiente sull'immagine che è approssimativamente, ma non del tutto, lineare.

Di seguito è riportata un'immagine di esempio; l'originale è largo circa 3 cm.

Come può essere modificato in modo tale che lo sfondo sia uniformemente bianco?

Immagine sorgente con illuminazione irregolare

-Modificare-

Risultati scansionati di seguito, non corretti e corretti. Anche se all'inizio sembra abbastanza promettente, sfortunatamente è la piena risoluzione di ciò che vedi qui (larghezza di 600 px); lo scanner può fare 300 dpi e il disegno è largo circa un pollice. Questo è un po 'meno rispetto ai 5000 px della fotocamera.

Inoltre, la scansione non corretta suggerisce che la grafite riflette davvero una buona parte della luce, al contrario della tecnica del polarizzatore incrociato.

Scansione non corretta Scansione con curva corretta


C'è qualche motivo per cui stai scattando una foto invece di scansionarla?
Cole Johnson,

Sì; la tela può essere più grande di A4. Ma confronterò i risultati la sera. Sono un po 'sospettoso riguardo alla riflessione che potrebbe verificarsi sulla grafite.
Simon A. Eugster,

@ColeJohnson Scan aggiunta sopra.
Simon A. Eugster,

Qualcos'altro da provare: prendi un tavolo luminoso , o semplicemente appendi il tuo disegno e illumina una luce brillante dal lato posteriore, e fotografalo con la luce che splende attraverso di esso (lasciando che la carta stessa funga da diffusore). Naturalmente, questo non funzionerà con le vernici opache o se c'è qualcosa disegnato sul retro, ma per le foto a matita a un lato, a pastello, a inchiostro o ad acquerello potrebbe valere la pena provare.
Ilmari Karonen,

Risposte:


8

Il metodo che ho usato da solo è simile al tuo , ma utilizza il plug-in Resynthesizer (per GIMP) o Fill Content-Aware (per Photoshop) per ricostruire il gradiente:

  1. Crea una selezione che copra completamente il disegno. Puoi farlo a mano, oppure puoi utilizzare il filtro passa-alto per calcolare una maschera di selezione come questa:

    • Inizia utilizzando un filtro di rilevamento dei bordi come Differenza di gaussiani sulla (una copia di) della tua scansione per estrarre grossolanamente il disegno:

      Step 1.1: Estrai il disegno con Differenza di gaussiani

    • Se il risultato è privo di contrasto, utilizzare lo strumento Livelli per scurirlo:

      Passaggio 1.2: regolare i livelli

    • Applica un po 'di sfocatura gaussiana :

      Passaggio 1.3: applicare la sfocatura gaussiana

    • Utilizzare lo strumento Soglia per ottenere una maschera che copre l'intero disegno e selezionare Seleziona per colore per selezionarlo:

      Passaggio 1.4: utilizzare lo strumento soglia per ottenere la maschera

  2. Una volta che hai una selezione che copre il disegno, crea una copia del livello di scansione originale e usa Riempi selezione selezione / Riempimento consapevole per riempirlo. Idealmente, il tuo livello copiato dovrebbe ora apparire come l'immagine di un foglio di carta bianco:

    Passaggio 2: cura la selezione per ricostruire la carta bianca

  3. Imposta la modalità del livello modificato su Dividi, come nella tua risposta. Se si desidera conservare parte della trama e / o dell'ombreggiatura della carta, è possibile ridurre leggermente l'opacità del livello e applicare una piccola quantità di sfocatura:

    Passaggio 3: Dividi per strato di carta bianco

    (L'immagine sopra ha il livello riempito gaussiano sfocato di 10px e l'opacità è impostata al 95%.)

  4. Facoltativamente, dopo aver unito i livelli, regola i livelli per impostare il punto nero (punta: usa la vista dell'istogramma logaritmico) e aumenta il contrasto:

    Passaggio 4: regolare i livelli

(Ps. Fai clic sulle immagini a mezzo formato per visualizzarle a tutto schermo.)

La cosa bella di questo metodo è che può funzionare abbastanza bene anche per gradienti di ombreggiatura non lineari. Certo, non è perfetto - se la carta ha, diciamo, una macchia irregolare il cui confine è parzialmente sotto il disegno, è improbabile che il riempimento consapevole del contenuto lo ricostruisca correttamente. Tuttavia, come visto sopra, spesso dà risultati abbastanza decenti.


È molto bello e in realtà quello che volevo fare per primo, ma non ho trovato Resynthesizer! Andiamo a provare questo domani con alcuni disegni. Curioso di uno in cui sono coperte parti più grandi del disegno. Il tuo risultato è già ottimo.
Simon A. Eugster,

Sembra che non riesca a far registrare Heal Selection su Gimp, sfortunatamente ...
Simon A. Eugster,

È strano. Sei su Windows o Linux? Una possibilità è che potresti non avere Python disponibile o GIMP potrebbe non trovarlo per qualche motivo. In tal caso, la selezione delle cure potrebbe non funzionare, ma il filtro di base > Mappa> Resynthesize (che può fare tutto ciò che la selezione delle cure può fare, anche se l'interfaccia utente potrebbe non essere così conveniente) dovrebbe essere comunque disponibile.
Ilmari Karonen,

Sono su Linux e ho dovuto compilare il plugin da solo. Mappa> Resynthesize è effettivamente disponibile. Come posso verificare se Gimp trova la versione di Python richiesta? Ho installato 2.7.5 e 3.3.2.
Simon A. Eugster,

Non sono veramente sicuro; Uso Ubuntu da solo e lascio che APT si occupi delle cose. Il sottomenu Python-Fu appare per te? In caso contrario, potrebbe essere necessario installare GIMP-Python (se disponibile separatamente da GIMP stesso) e / o ricompilare GIMP con il supporto Python abilitato. Poi di nuovo, sto solo indovinando qui.
Ilmari Karonen,

18

Modifica: ho scritto uno script Gimp che esegue i passaggi seguenti e un altro per la risposta di Ilmaris . Entrambi gli script sono disponibili per il download su GitHub . Il modo suggerito di andare è questo .


Sto rispondendo proprio qui perché sto cercando una soluzione da un po 'di tempo e ne ho trovata una semplice e funzionante. Andiamo subito al risultato:

  1. Crea un livello di sfondo copiando solo una striscia verticale dello sfondo e allungandola alla dimensione dell'immagine originale.

    In Gimp: selezionare run rettangolo dall'alto verso il basso contenente lo sfondo, incollarlo Shift+Ctrl+Vin una nuova immagine ed espanderlo Filter > Map > Tilealla dimensione dell'immagine, eseguire una sfocatura gaussiana su di esso, quindi copiarlo nuovamente sull'immagine come nuovo livello.

  2. Imposta la modalità livello su Divisione .

  3. Ridurre l'opacità del livello come desiderato, ad esempio al 90%. Mantenerlo al 100% è di solito un po 'troppo luminoso.

Passaggi di divisione

Ciò che fa, in sostanza, è che il livello di sfondo definisce il valore RGB wdi "bianco" su ciascun pixel. La modalità del livello di divisione allunga quindi il valore sull'immagine da [0,w]a [0,255](vedere Modalità del livello GIMP ) per pixel.

(Bad) Esempio usando curve e gradiente lineare

I primi tentativi riguardavano sempre la duplicazione del livello, cambiando la luminosità in modo che la parte più scura sul fondo fosse illuminata correttamente e aggiungendo una maschera di livello con un gradiente lineare per schiarire solo le regioni più scure. Più forte è il gradiente, peggio sembrava.

Tentativo con un gradiente lineare

(Migliore) Esempio usando la divisione

La divisione produce risultati molto migliori; l'illuminazione è fissa in modo uniforme e non ci sono aree bruciate come specialmente nella parte sinistra del disegno.

Usando la divisione


O semplicemente cambia l'impostazione dei livelli in Photoshop
SaturnsEye

3
Per risultati ancora migliori, specialmente nel caso di ombre non costanti / non lineari in entrambe le direzioni, può funzionare per scattare una foto di un foglio di carta bianco, applicare una leggera sfocatura per eliminare il rumore della fotocamera e utilizzare quello come base del livello di regolazione.
PlasmaHH,

1
@SaturnsEye Provalo con l'immagine di input sopra. Non funziona;) Se la carta fosse grigia, come il 10%, allora sì, sarebbe il modo più semplice.
Simon A. Eugster,

@PlasmaHH Questo mi richiederebbe di usare un treppiede per ottenere una distanza costante, ma è una buona soluzione soprattutto per le fotografie pesantemente dipinte. Il retro della carta di solito è comunque bianco, quindi potrebbe essere utilizzato per il livello di regolazione. (Utilizziamo diversi tipi di carta con diverse tonalità di grigio / marrone).
Simon A. Eugster,

@ SimonA.Eugster: se dovessi fare queste cose più di una volta ogni tanto userei un treppiede e un'impostazione della luce ricreabile per risultati coerenti comunque.
PlasmaHH,

5

Questa risposta descrive l'approccio più veloce e affidabile che conosco, basato sulla risposta di Ilmari Kanoren . È semi-automatico; la maschera automatica non funziona per immagini dure come quella qui sotto perché non ci sono bordi in alcune parti del disegno.

Questo script Gimp automatizza i passaggi 3 e 4 (nota che è richiesto Resynthesizer), quindi il flusso di lavoro è solo: Crea selezione, esegui script. Sono necessari 6 secondi affinché lo script completi un'immagine di 15 MP sul mio laptop di 3 anni.

inserisci qui la descrizione dell'immagine

Passaggio 1 (opzionale): regolare le curve per il nero profondo

Punto nero

Passaggio 2: selezionare l'oggetto

In Gimp, la maschera veloce Shift+Qè un modo rapido. Usa la matita Ne dipingi l'oggetto bianco, premi di Shift+Qnuovo per convertire la maschera in una selezione.

Oggetto selezionato

Passaggio 3: ricrea lo sfondo

  • Duplica l'immagine e ridimensionala a 400 × 400 px
  • Usa la selezione Guarisci o Riempimento consapevole del contenuto per curare l'oggetto (rimane solo lo sfondo)
  • Usa Sfocatura gaussiana, 40 × 40 px
  • Ridimensionare l'immagine alle dimensioni originali e copiarla nuovamente come livello sull'immagine originale

sfondo

Passaggio 4: modalità divisione

Impostare la modalità livello su Divisione e ridurre leggermente l'opacità, se lo si desidera.

Immagine fissa


1

Questo è il forum di fotografia, quindi adotterò un approccio fotografico. Naturalmente per un bianco perfetto probabilmente hai ancora bisogno di alcune modifiche post-produzione.

Invece di usare un flash puoi provare a usare la luce naturale. Evita la luce solare diretta, non stare troppo vicino alla finestra, ma a 2 metri di distanza dalla finestra. Questo per ridurre la differenza di luce tra la parte più vicina e più lontana del disegno. (Ma poiché questa è una piccola immagine, la distanza potrebbe non essere così importante.)

È possibile puntare un treppiede rivolto verso il basso e posizionare il disegno sul pavimento.

Oppure, se non si dispone di un treppiede, è possibile disporre una copertina del libro o una scatola di cereali per tenere l'immagine verticalmente su un tavolo e posizionare la fotocamera costantemente sullo stesso tavolo. (Metti un foglio di carta bianco dietro il disegno per evitare di vedere le immagini di sfondo o le trame.)

La tecnica del polarizzatore che stai citando è nel caso tu abbia il disegno dietro un vetro e quando hai oggetti luminosi o riflessi. Ma se la tua sorgente luminosa è in un angolo obliquo, probabilmente non hai bisogno di usare un filtro.


Sono a conoscenza dell'illuminazione ambientale. Probabilmente produrrebbe risultati migliori per quanto riguarda il gradiente, anche se a questa distanza l'obiettivo molto probabilmente inizierebbe già a proiettare un'ombra sulla carta. Il polarizzatore è effettivamente richiesto qui perché la superficie della carta non è uniforme e la grafite fa sorprendentemente bene a riflettere la luce più scura si desidera che l'area sia;) Inoltre, premendo un po 'più forte con la matita si possono creare rientranze in cui la luce ambientale può riflettere di nuovo .
Simon A. Eugster,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.