Foto raw con Linux e Dcraw
Ho ancora addosso il profumo del mare di Hvar e sono assorto nei ricordi della vacanza appena trascorsa, ma ecco che all’improvviso irrompe nel mio ufficio Carlos (un ragazzo argentino che tutti vorrebbero come amico perché è ricco… di neuroni), che mi dice: “su Linux Magazine c’è qualcosa che ti riguarda”. Carlos è felice quando mi vede (gli ho fatto conoscere Linux e lui me ne è grato) ed anch’io sono contento di rivederlo perché lui è sempre… allegro (l’unico problema è che non riesco a capire quando è incazzato). Io non so a cosa si riferisca Carlos, per cui corro a comprare Linux Magazine di agosto e cerco un indizio, ma niente, quindi dopo inutili e sterili ricerche mi decido a chiedere spiegazioni… in effetti qualcosa c’era, ed a Carlos non era sfuggita, mentre a me si… e questo non è bene Carlos non si è fermato allo strato superficiale – è riuscito a guardare oltre – in puro stile hacker. Io all’inizio pensavo si trattasse di qualche mio screenshot (come già accaduto in passato), invece questa volta era qualcosa di molto più subliminale… in pratica sia in copertina che all’interno appare per ben 3 volte il disegno di un omino dallo stile vacanziero con una bella macchina fotografica al collo, ebbene Carlos mi ha fatto notare che quella quasi impercettibile riga bianca sulla fotocamera è la scritta: “Toonik”… a questo punto ho scansionato la rivista ed ho potuto appurare che la scritta in realtà è Tonik e non Toonik, comunque il senso non cambia e considerando la mia passione per la fotografia, ne approfitto per scrivere un piccolo articolo su come gestire il formato raw delle fotocamere digitali con Linux.
Innanzitutto spieghiamo brevemente cos’è il formato raw, esso è un particolare metodo di memorizzazione dei dati descrittori di un’immagine che permette di non avere nessuna perdita di qualità rispetto ai segnali catturati dall’apparato. Quindi un file raw, contiene informazioni grezze provenienti direttamente dal sensore della fotocamera, senza subire nessuna elaborazione all’interno della stessa, ed è per questo che può essere equiparato al negativo delle classiche macchine fotografiche a pellicola. Inoltre in una foto raw i colori sono rappresentati da 12 o 14 bit invece che dagli 8 bit del formato jpg, quindi si avranno a disposizione ben 16.000 sfumature di Red, Green e Blue invece delle 256 del jpg. Tutto ciò consente ai fotografi professionisti di avere una più efficace gestione del colore ed un controllo totale sull’immagine, anche se bisogna tener conto del fatto che la maggior quantità di informazioni contenute in un file raw si traduce anche in una dimensione maggiore rispetto ad un jpg. Prima di iniziare è importante ricordare che i produttori di fotocamere (e non solo) identificano i propri file raw ognuno in modo diverso, dando origine ad un numero considerevole di estensioni. Ovviamente nell’eseguire gli script sottostanti ricordate di sostituire l’estensione raw con quella giusta… in caso di dubbi consultate questa tabella:
Formato | Produttore |
a r w | S o n y |
c r 2 | C a n o n |
c r w | C a n o n |
d c r | K o d a k |
d n g | A d o b e |
e r f | E p s o n |
k d c | K o d a k |
m r w | M i n o l t a |
n e f | N i k o n |
o r f | O l y m p u s |
p e f | P e n t a x |
p t x | P e n t a x |
r a f | F u j i |
r a w | P a n a s o n i c |
s r f | S o n y |
x 3 f | S i g m a |
Sotto Linux è possibile gestire questo tipo di file con dcraw, un potentissimo tool a riga di comando (ma che strano). Per pura combinazione… ehm ehm, nel post precedente “Modificare immagini dalla riga di comando” avevamo provveduto a dare questo comando:
# apt-get install imagemagick libjpeg-progs netpbm dcraw [invio]
quindi dovreste aver già installato tutto il necessario (se così non fosse il comando sopracitato è sempre valido). Il numero delle fotocamere supportate da questo software è considerevole, per cui se la vostra è tra queste, possiamo iniziare, tenendo bene in mente che l’utilizzo di base di dcraw è semplicissimo… mentre l’utilizzo avanzato è difficilissimo… noi seguiremo la prima via!
Di default dcraw produce un file ppm (Portable PixMap) lasciando inalterato il raw originale, per cui il comando seguente creerà il file foto.ppm nella stessa cartella contenente il file foto.raw
$ dcraw foto.raw [invio]
il comportamento di default può essere cambiato con l’opzione T che produrrà un file tiff con metadati
$ dcraw -T foto.raw [invio]
l’opzione -e estrae la miniatura (solitamente una jpg) generata dalla fotocamera… attenzione non elabora l’immagine grezza:
$ dcraw -e foto.raw [invio]
usando l’opzione -h generiamo un’immagine a colori con dimensioni dimezzate:
$ dcraw -h foto.raw [invio]
mentre -a calcola il bilanciamento del bianco dalla media dell’intera immagine:
$ dcraw -a foto.raw [invio]
l’opzione -c scrive sullo standard output le immagini decodificate:
$ dcraw -c foto.raw [invio]
quest’ultima opzione è necessaria nel caso volessimo usare una pipe per estrarre la foto e convertirla al volo in jpg con ppmtojpeg:
$ dcraw -c foto.raw | ppmtojpeg > foto.jpg [invio]
nel caso volessimo processare molte foto in batch possiamo eseguire questo scriptino:
$ for i in *.raw; do dcraw -c -a -h $i | ppmtojpeg > `basename $i raw`jpg; echo $i " Conversione riuscita"; done [invio]
Attenzione – il comando precedente dovete eseguirlo all’interno della cartella contenente le foto, o in alternativa aggiungete il $PATH completo in questo modo:
$ for i in ~/cartella_delle_foto/*.raw; do dcraw -c -a -h $i | ppmtojpeg > `basename $i raw`jpg; echo $i " Conversione riuscita"; done [invio]
considerando la lunghezza del comando, potrebbe essere conveniente inserirlo in uno script da tenere sempre a portata di… tastiera.
Un’altro esempio di script è il seguente:
if (for f in ~/cartella_delle_foto/*.raw
do
dcraw -c "$f" | pnmtojpeg > "${f/.raw/.jpg}"
done
)
then
echo "Conversione raw eseguita con successo"
else
echo "Errore... conversione non riuscita"
fi
dimenticavo… negli script bash inserite sempre lo shabang
Ovviamente con dcraw si possono fare molte più cose di quante viste in questo contesto e per chi volesse approfondire l’argomento segnalo questo manuale
Bene… visto che ci siamo divertiti abbastanza, vi confesso che per elaborare foto raw con linux esistono anche software interattivi e soprattutto… ad interfaccia grafica… ora direte qualche parolaccia, ma poi vi passa e sarete felici di aver appreso le basi di dcraw… comunque se proprio volete usare un programma grafico, eccovi una lista (non esaustiva) di quelli disponibili per GNU/Linux.
Fonte toonik