book scanner

Raccogliamo info su sto scanner

Installazione

Installare chdk

La build per le differenti macchine fotografiche è reperibile a http://mighty-hoernsche.de/
Per installre seguire la guida chdk.wikia.com/wiki/Downloads

I repository

Archlinux

[boyska64]
Server = http://boyska.s.pt-labs.net/archrepo

Debian

wget deb.libreant.ga/insomnia.list -O /etc/apt/sources.list.d/insomnia.list && apt-get update && apt-get install chdkptp colorcut ppmrose

(nota: python-opencv ha MOLTE dipendenze, e colorcut dipende da esso. Quindi sappi che per installare colorcut ti tiri giu’ tante cose)

ppmunwarp

Per archlinux l’ho messo nel mio repository. Per debian sta nel repository deb.l38taz.ga (pacchetto ppmrose).
Per gli altri non so, pero’ compilarlo e’ facilissimo. Vedi ad esempio il pkgbuild

spreads

Installazione

installare spreads e’ un panico, perche’ la versione stabile non funziona, almeno a me
inoltre ha 500mila dipendenze non ben documentate. Ecco un report:

Per installare spreads in modo che poi funzioni, tocca fare

virtualenv -p python2 ve
./ve/bin/pip install git+git://github.com/jbaiter/spreads.git@master
./ve/bin/pip install cffi==0.8.6
./ve/bin/pip install Pillow==2.5.3 PyYAML==3.11 args==0.1.0 blinker==1.3 clint==0.3.7 colorama==0.3.1 futures==2.1.6 jpegtran-cffi==0.5 psutil==2.1.1 pycparser==2.10 pyusb==1.0.0b1 spreads==0.5dev wsgiref==0.1.2

bisogna poi avere installato sul sistema tesseract e djvubind.
Su archlinux,

pacman -S tesseract djvubind

dove djvubind è disponibile nei miei repository

Configurazione

Lo lanci con ./ve/bin/spread configure e lui ti fa partire un wizard, ma poi si lamenta perche’ ho una sola fotocamera.

chdkptp

Per installarlo, per archlinux e’ su AUR e su boyska64; c’e’ anche per raspbian

questo coso controlla la fotocamera. A una certa puo’ capitare che smetta di funzioanre. Se guardi in dmesg, si lamenta che ha finito gli id validi, qualcosa del genere. Si mette una toppa facendo (spero di non toppare il comando, vado a memoria)

rmmod xhci_hcd
sleep 5
modprobe xhci_hcd

Elaborazione immagine

Calibrazione e dewarping

Ci sono due calibrazioni da fare: una e’ per il dewarp, e l’altra e’ per split by color.

DeWarp: Usare il ps allegato: stamparlo A COLORI. Va poi passato a ppmunwarp.

Split By Color: anche qui c’e’ un pdf allegato ; nel pdf ogni ellisse e’ alto 5cm e largo 7,07 (il rapporto e’ sqrt(2)) in modo che visto in prospettiva venga tondo. Entrambi distano 1cm dal bordo. Questo vuol dire che i centri distano 24.7cm. Se la foto NON contiene un A2, allora si puo’ dire a colordetect che --min-dist 11%

Il primo provo

Abbiamo fatto una prova a cazzo di cane ed e’ venuta benone. Si ringrazia coccolino (pure Null eh!) che ha fatto tutti pallini gialli su un foglio a quadretti.

Prima si calibra con ppmunwarp. poi si scattono le foto al libro,

le si unwarpa, e questo ci ritaglia la pagina, circa.

Quindi si passa tutto a scantailor, che con pochissima fatica fa sta roba. cioe’ forte.

Dopo aver montato la struttura abbiamo fatto altre foto di configurazione, si rigrazia sally (pure giorgia eh!) che ha fatto tutti i pallini rossi.

Abbiamo scattato diverse foto in raw o dng (raw proprietario), io ne posterò in formati differenti, così chi si vuole divertire a fare prove può.

Io per ragioni di tempo stasera non ho provato a fare il dewarping su quelle immagini, ma l’altra volta non aveva funzionato!
Così ho ragionato, leggendo solo keystone effect, che non faccia il dewarping di entrambe le pagine in contemporanea, in tal caso si potrebbe prendere l’immagine, tagliarla a metà con pamdice(prossima sezione) e deprospettivarle una alla volta.
Credo che con un po di lavoro potremmo anche integrare in spread sta cosa, così da avere 2 foto anziche 2 macchinette.

Regà, tanto non funziona un cazzo. Proviamo a fare la calibrazione della threshold e dell unwarp con questa immagine

we.riseup.net/assets/224733/IMG%201640.raw

(ATTENZIONE: del link sopra non si vede l’anteprima perché è un .raw e la wiki non li visualizza. Scaricatela per fare le prove,
con la l’anteprima è sotto)

NUOVA IMMAGINE PER LA CALIBRAZIONE DI splitbycolor e ppunwarp (occhio che è in jpg, va convertita in ppm)

Elaborazione immagine

La prima cosa da fare e’ dividere l’immagine in due. Questo viene fatto grazie a split by color. Questa e’ la command line tarata per un foglio coi pallini blu di 2cm di raggio e la nostra fotocamera:

colordetect --hue 120 small/IMG_0009.JPG --min-saturation 80 --min-dist 25% --min-radius 2% --max-radius 5% --param2 5 --hue-radius 20 --hue 120 --cut-left 40% --cut-right 40% --blur 11 --coordinates -|imagecut - small/IMG_0009.JPG --outfile nuovo.png

e generera’ due file: nuovo.L.png e nuovo.R.png

queste due immagini vanno entrambe unwarpate. Come si fa? si deve usare ppmunwarp, ma il foglio di calibrazione deve essere anch esso spezzato. Quindi si avra’ un profilo left.unwarp e uno right.unwarp, creati a partire da matrice.L.png e matrice.R.png, creati da splitbycolor a partire da una command line come quella sopra, ma partendo dalla foto alla matrice coi pallini rossi.

Quanto prima si dovrebbe fare uno scriptino user-friendly,
-scattare fotografia a seguito della pressione di un tasto, a fine ciclo (?) convertire tutte le raw in ppm con rawtoppm e quindi tagliare le pagine (permette di definre 2 outputname) e passarle per ppmunwarp.
Si potrebbe fare un elaborazione sequeziale per destre e sinistre dando 2 file di calibrazione differenti a ppmunwarp.
poi il resto…

Script di automazione in bash

Per ora c’e’ un insieme di script non ancora integrati tra di loro; questi tool non fanno niente di speciale, ma automatizzano chdkptp, colordetect, imagecut, ppmunwarp

  • shoot: acquisisce immagine con chdkptp, con configurazione standardizzata sulle dimensioni dello scanner e qualità della foto, non siamo per il momento riusciti ad eseguire tutti i comandi Lua che volevamo (ad esempio il flash). Le foto vengono salvate con il timestamp nella dir corrente.
  • splitall: splitta l’immagine (vedi allegato scriptfoto.tar.gz): si lancia come splitall $directory_foto, la prima foto (ordinando numericamente) della cartella è la split_calibration (vedi sopra) da cui viene creato il file cut.txt che contiene le coordinate., la seconda la unwarp_calibration, tutto automatizzato tutto bello, lo script esegue colordetect sulla prima foto e salva in split.txt, esegue poi colorcut e si blocca se non trova le immagini giuste, salva tutto $directory_foto/split.
  • unwarpall: dovrebbe essere “coerente” con lo stile di splitall cioe’ prendere 000.L.jpg e 000.R.png e farne i profili di unwarping che poi deve applicare a tutte le altre immagini.

Rimane da fare uno scriptino che possa mettere tutto insieme in un’"interfaccia utente" piu’ comoda possibile per un sistema headless. Questo scriptino dovrebbe anche permettere di usare un altro programma al posto di shoot. In questo modo si potrebbe avere uno mock-shoot che legge da una dir e si limita a copiare i file in modo crescente. Questo sarebbe ottimo per poter testare tutto senza avere una fotocamera: prima si fa la foto a tutta la sequenza e poi si sviluppa il modo di mettere tutto insieme.

Hardware

Dritte furbe

  • La fotocamera usata per queste prove ha una focale molto stretta. Tutte le robe piu’ nuove hanno una focale grandangolare e quindi la casetta puo’ essere piu’ “bassa”.
  • La focale dichiarata non sempre corrisponde alla reale capacita’ di inquadrare gli oggetti. Fate delle prove e misurate quanto riuscite ad inquadrare!

Lista

Servono subito

  • 3 pannelli di plexiglass 30×35cm: 25 euro
  • striscia di led (su amazon le vedo sotto ai 10 euro per 5 metri)
  • Legno (daje cassonetto)
  • canon A2600

Servono poi

  • alimentatore (10 euri)
  • supporto, con ruote e’ meglio (I<3 carrello della spesa)

Alcune immagini

Progetto

Preventivo legno

In base al preventivo della falegnameria consultata avremmo bisogno di 5 pannelli di legno. Ci suggerivano di usare, al posto del truciolato, fogli di MDF da 1cm. Costa poco di più ma si lavora meglio perché più solido. Comunque possiamo discuterne. Il loro totale era di 14eur per il legno e altri 4eur per gli altrettanti tagli a 90° (vedi figura).
In totale avremmo:

  • 1 pannello di cm 42×37
  • 2 pannelli di cm 40×71
  • 2 pannelli di cm 33×50

nota: rispetto al progetto ci sono alcuni cm di differenza dovuti agli incastri. E qualcosa in più sul pannello di base per migliorare la solidità.

Led

  • luce fredda, 5 metri. La bobina ha già uno spinotto per l’alimentazione (rimovibile).

Ferramenta

Materiali necessari:

Sulla base, 8 elle (2 per lato), con le relative 32 viti
Tra le pareti verticali, altre 8 elle e 32 viti.
Per fissare il “timpano” alla base, 4 piattine (2 per lato) e relative 8 viti.

Totale:

  • 16 elle
  • 4 piattine
  • 72 viti da legno, 10mm

Materiale necessario:

  • Una matita da muratore
  • Seghetto alternativo (lo prenderemo al forte)
  • Trapano avvitatore e punte pozidriv

Cose ancora da fare

  • alimentare la fotocamera con la corrente diretta, altrimenti e’ un delirio con la batteria
  • migliorare illuminazione: fare un diffusore migliore

Risorse utili

Altri progetti

Calafou

Funziona bene, un po’ complesso, problema: quando il libro si alza e “tocca” il plexiglass a volte la pagina si muove e fa una piccola piega, che compromette la qualità dello scatto; inoltre, se ne accorgono solo alla fine, quindi scattarne una nuova non è un’opzione.

Link vari

Questo coso è pieno di spunti (non completamente implementati) su come raddrizzare le pagine o trovare i bordi
www.danreetz.com/blog/2011/01/05/some-n.../
Il metodo del laser (2euri) prosegue qui www.diybookscanner.org/forum/viewtopic....

 

I led posso prenderli io da amazon usando prime. Questi qui a luce fredda: http://www.amazon.it/STRISCIA-300LED-BOBINA-STRIPT-IMPERMEABILE/dp/B009VJ49LW/ref=sr_1_4?rps=1&ie=UTF8&qid=undefined&sr=8-4&keywords=led+strip+fredda

 
 

ma su amazon.com non costano molto meno?

 
 

ci facevano dei problemi sullo spettro luminoso, sarebbe bello averlo piu o meno completo! Questa cosa banalmente si ottiene usando led di diversi colori (REd Green Blue) insieme a quelli bianchi.

 
 

mh, perche’ da questi 3 led dovresti ottenere lo spettro completo in modo uniforme?
secondo me quello che ottieni e’ che avrai delle zone piu’ rosse, alcune piu’ verdi, altre piu’ blu.

e chi e’ che ci faceva dei problemi?

 
 

su amazon.com devi aggiungere la spedizione e i tempi sono più lunghi (7gg o più) oltre al fatto che spesso, se non sono libri, qui in Europa non spediscono. Insomma non è conveniente.
da amazon.it ordinando ora ci arriverebbero martedì.

 
 

mi pare ok, a meno che qualcuno non abbia voglia di passare da pastorelli a vedere come sono e quanto costano.

 
 

Riguardo Spread ci sarebbe anche, in ottica di usare un raspberry, questo progetto qui: github.com/DIYBookScanner/spreadpi/wiki

 
 

buono (anche se poi a farlo non e’ che ci voleva molto eh…) comunque ok :)

 
 

mi chiedevo, ma l’alimentatore in lista è per la camera o per i led?

 
   

l’alimentatore penso sia per i led, anche se farebbe comodo alimentare anche la macchina fotografica, no?

Per quanto riguarda il dewarping delle immagini raw scrive Nabla in mailing list:
"
Invece de rawtoppm basta usà dcraw:
dcraw file.raw e restituisce il ppm
"