12.04.09 17:26 Età: 9 yrs

L'utilizzo del programma raw2lum per la valutazione della luminanza

Per conto di un Comune ticinese ho dovuto effettuare recentemente un rapporto sullo stato dell’inquinamento luminoso. Oltre ai consigli soggettivi elaborati sulla base di un sopralluogo effettuato tra le vie del Comune, ho pensato di completare il rapporto con delle misure oggettive della luminanza di alcuni stabili. Queste misure risultano quindi confrontabili con i limiti di luminanza definiti nelle linee guida Cantonali.

Esempio immagine in falsi colori

Scala luminanza in candele / mq

Rappresentazione della sequenza di utilizzo dei programmi

Per eseguire le misure di luminanza ho utilizzato il programma raw2lum, scritto da Jenik Hollan (Dark-Sky Republica Ceca). Ho conosciuto Jenik durante un simposio europeo di Dark-Sky, in quell’occasione mi ero lasciato affascinare dal suo incredibile lavoro. Il programma in questione permette di trasformare delle foto raw in una foto in falsi colori, dove i colori rappresentano le diverse luminanze. Purtroppo però l’utilizzo del programma in questione non è del tutto triviale. Infatti il programma funziona in linea di comando e ha tante opzioni poco documentate. Per l’utilizzo del programma, ho dovuto accontentarmi di consultare alcuni esempi ed avere qualche scarno scambio di email con l’autore del programma.

Di fatto bisogna eseguire le foto in formato raw, per poi convertirle in .jpg (tramite camera raw o altro) e in .pgm tramite dcraw (programma free). L’immagine .jpg serve unicamente per estrarre le informazioni inerenti l’esposizione tramite programma jhead (altro programma free). Mentre l’immagine .pgm (Portable Gray Map) generata è un’immagine a 16 bit in scala di grigi, che serve come base al programma raw2lum insieme alle informazioni riguardanti l’esposizione estratte precedentemente, per generare due ulteriori file: un .eps e un .ppm. Il primo file (eps: Encapsulated PostScript) contiene una griglia con i dati riguardanti la luminanza media di ogni quadratino dell’immagine, il secondo file (ppm: Portable PixMap) invece è l’immagine in falsi colori dove vengono rappresentate le luminanze.

Per ottenere dei risultati precisi è importante generare anche i “dark” (scatti con gli stessi parametri di esposizione ma con l’obbiettivo coperto).

Questo per quanto riguarda la procedura di produzione delle immagini, poi risulta determinante definire con accuratezza il parametro t, che è il parametro di calibrazione della fotocamera utilizzato da raw2lum.

Per tarare questo parametro bisogna fotografare una superficie di luminanza conosciuta per poi cercare di variare il parametro t (che viene passato al programma raw2lum), in modo che, nell’immagine risultante, la luminanza rappresentata rispecchi la luminanza misurata.

Per fare ciò ho fotografato una superficie bianca della quale ho misurato la luminanza approssimativa con una Sky Quality Meter (SQM). Infatti lo SQM permette la misura della luminanza, che viene rappresentata in magnitudini per secondo d’arco al quadrato (mag/arcsec2). Questo valore può venir facilmente trasformato in luminanza in candele per metro quadro (cd/m2) tramite un convertitore messo a disposizione sul sito http://www.unihedron.com/projects/darksky/magconv.php.

Per la mia fotocamera (Canon 450D) ho calcolato un valore t=96, questo valore l’ho appunto calcolato eseguendo alcuni scatti di diverse luminanze.

Per semplificarmi il lavoro di trasformazione delle foto ho creato alcuni script in perl. Quindi per eseguire questi script è necessario installare il linguaggio di scripting perl, per Windows scaricare ActivePerl dal sito http://www.activestate.com/activeperl.

Mettere i tre script (all-head.pl, head2csv.pl, convert-all.pl) in una cartella (per esempio “e:\bin”).

Nella stessa cartella (per esempio “e:\bin”) bisogna scaricare i programmi jhead, dcraw e raw2lum.

Risulta quindi necessario editare i tre script per parametrizzarli.

Nei tre script bisogna definire la variabile $bin con il percorso della cartella bin e nello script convert-all.pl bisogna parametrizzare la variabile $divider (valore t) e ulteriori altri parametri $params (per esempio "-sm50:5 -s64:64": -sm serve per lisciare le zone di rumore mentre -s definisce il numero di pixel in ogni quadretto della) e $rawtype con il tipo di file raw (esempio $rawtype="cr2" per i file raw Canon).

A questo punto bisogna riporre tutte le immagini in raw e .jpg (trasformate precedentemente con il programma preferito, l’importante è che i file .jpg contengano i valori di esposizione) in una cartella. Nella stessa cartella bisogna definire una sottocartella dark dove vengono riposti i dark (raw e .jpg) riferiti alle foto precedenti. Quindi bisogna eseguire (da cmd) dalla cartella degli scatti e poi da quella dei dark i due script all-head.pl e poi head2csv.pl. Dopo di che bisogna eseguire lo script convert-all.pl dalla cartella contenenti gli scatti.

Al termine si otterranno due file per ogni scatto: uno in formato .ppm ed uno in formato .eps.

Il primo file è un’immagine in falsi colori rappresentanti le luminanze, che a sua volta può venire convertito nel formato desiderato tramite Photoshop (o altri programmi di elaborazione di immagine). Il secondo contiene la griglia con le luminanze medie, essa può per esempio venire sovrapposta all’immagine di partenza per mostrare direttamente le luminanze medie.

Nota:

il programma raw2lum può gestire fotografie con al massimo 3998 pixel in larghezza (non so se c’è un limite anche in lunghezza). Questo limite crea problemi con le nuove fotocamere DSLR, infatti <personname productid="la Canon" w:st="on">la Canon</personname> 450D ha un CCD con una matrice di 4272 x <metricconverter productid="2848, ha" w:st="on">2848, ha</metricconverter> una larghezza maggiore di quella supportata dal programma. Per far fronte a questa difficoltà ho inserito nello script il parametro $dcrawparams="-t 90", che in fase di conversione dcraw ruota il file .pgm di 90°, questo permette l’utilizzo del programma senza alcuna modifica anche se si utilizza fotocamere con una matrice di dimensione elevata, chiaramente questo produrrà delle immagine ruotate di 90° che possono in seguito venir ruotate tramite PhotoShop (o altri programmi di elaborazione di immagine).

È chiaro che si sarebbe potuto modificare le sorgenti (in Pascal) permettendo l’utilizzo di una griglia di maggiori dimensioni, ma questo avrebbe significato uno sforzo maggiore (installazione di un ambiente di compilazione Pascal), quindi lascio questo compito a qualcun’altro.