domenica 24 aprile 2011

Digitalizzare libri (anche antichi)

Questa è stata proprio una settimanaccia: dovrei essere in vacanza ma non ho avuto tempo per riposarmi, per leggere, per andare a mercatini...
Vabbè... ma non mi piace l'idea di lasciare a bocc'asciutta i miei lettori (si, ogni tanto un po' di schizofrenia ci vuole) e quindi ho deciso di scrivere un piccolo articolo su un progetto che sto sviluppando per utile personale e universitario: un tool per aiutarmi a digitalizzare libri.

 Un paio di mesi fa, durante un safari nella savana di Piazzola sul Brenta mi imbattei in una copia del Supplemento al Compendio Historico (scritto dal Borsetti): è un libro poco comune, per non dire raro, non presente in forma digitale tramite Google Books e disponibile in poche biblioteche italiane. Di conseguenza mi è parsa una buona idea impegnarmi a digitalizzare e a rendere pubblica quest'opera (direi che per i diritti d'autore posso fare a meno di preoccuparmi).

Problema: non ho a disposizione nessuno dei mezzi professionali di digitalizzazione in mano a biblioteche o a collezionisti seri, solo una macchina fotografica, tanta pazienza e le mie capacità di programmatore. Una opzione sarebbe stata quella di fotografare ogni pagina, correggere la prospettiva utilizzando un software per il ritocco fotografico (come il famosissimo Photoshop, o Gimp), aggiustare il contrasto, trasformare in bianco/nero e passare allo scatto successivo: tempo totale, circa sette/otto minuti per pagina... inaccettabile. Una seconda opzione era quella di sviluppare un tool per aiutarmi nel lavoro e automatizzare parte del processo: un approccio che generalmente richiede un dispendio di tempo maggiore nelle prime fasi ma che semplifica la vita in momenti successivi.
Naturalmente ho scelto la seconda strada... e ho creato Anastizer (pessimo nome, ma non mi è uscito di meglio).
Anastizer all'opera su uno scatto di Storia del Regno di Scozia, 1828
Anastizer attualmente è un semplice tool che permette di effettuare correzioni prospettiche su immagini, fornisce una preview in realtime, salva il risultato in alta risoluzione ed effettua una conversione automatica in bianco/nero applicando procedure e filtri (alcuni standard, come l'adaptive thresholding, altri sviluppati appositamente) per la riduzione del disturbo e delle macchie.
In futuro conto di automatizzare almeno parzialmente la procedura di scatto delle fotografie, utilizzando una macchina digitale pilotata in remoto dal software (tramite libgphoto, ad esempio) per fotografare un libro appoggiato ad un ripiano.

L'utilizzo del mio tool è molto semplice: si muovono i cerchietti rossi sull'immagine originale in modo da allinearli con la pagina da digitalizzare, si seleziona quale canale colore (Blu, Verde o Rosso) contiene il migliore rapporto tra informazione e disturbo (alcune macchie o impurità della carta possono essere meno accentuate in uno specifico canale), si osserva che l'anteprima mostri un risultato accettabile, e con un doppio click si ottiene un file di output con la pagina "corretta" prospetticamente e un file con la versione in bianco e nero.

Ecco un esempio dell'output:
Conversione della pagina nella foto precedente
Anastizer utilizza le librerie grafiche OpenCV ed è sviluppato in ambiente GNU/Linux (Ubuntu).
I sorgenti sono disponibili qui.