Video time lapse

Questa sezione è dedicata ad articoli sulle tecniche di time lapse, preferibilmente con sistemi GNU/Linux.

Se avete domande o richieste di argomenti specifici, aggiungete un commento a questa pagina!

Fotografia time lapse con linux

Il timelapse è una tecnica per ottenere video che mostrino, a velocità superiore a quella normale, alcuni fenomeni o eventi, per mostrare fenomeni lenti come una pianta che cresce o un fiore che sboccia, o per creare effetti divertenti. Ma un video time lapse non è solo un video normale accelerato: poiché può essere realizzato con macchine fotografiche programmate appositamente, può mostrare cose invisibili alle telecamere, come il cielo stellato.
Dopo aver visto degli straordinari lavori realizzati da alcuni amici, ho voluto provare anche io a cimentarmi con questa tecnica, usando la mia digicam Nikon Coolpix 8800 e, naturalmente, il mio sistema gnu/linux!
In questo articolo mostro come realizzare un timelapse, usando una digicam, gphoto2, ffmpeg e un po' di magia nera della shell. ;-)

In cosa consiste il time lapse? Non è altro che una sequenza di scatti ripresi a intervalli più distanziati dei tradizionali ventesimi di secondo dei video normali, riassemblati insieme in modo che ogni scatto sia un fotogramma del video che metteremo insieme.
Ad esempio, se assembliamo insieme un set di fotogrammi ripresi ogni 2 secondi possiamo mostrare in 36 secondi di video un fenomeno durato mezz'ora, come un cubetto di ghiaccio che si scioglie. Il risultato potrebbe somigliare a questo:
http://www.youtube.com/watch?v=7L1MexrXMuI

Un modo "elementare" per far questo è prendere un video normale, estrarre un fotogramma ogni 100, e poi riassemblare questi fotogrammi in un nuovo video.
Un altro modo per ottenere lo stesso risultato, ma con molta più flessibilità, è usare una macchina fotografica programmata a scattare una foto ogni 2 secondi. Il vantaggi sono molteplici: fotogrammi a risoluzione superiore e quindi contenenti più dettagli e meno rumore, la possibilità avere più controllo sui parametri della ripresa, oltre al fatto che le macchine fotografiche hanno una dinamica molto più estesa delle telecamere, e che consentono tempi di esposizione molto più lenti (e se vogliamo mostrare il moto notturno delle stelle ci serviranno esposizioni di diversi secondi).

Ok, come si fa?
Raccogliamo quel che ci serve per cominciare: un treppiedi e una macchina fotografica digitale che consenta di fare foto intervallate o che possa essere pilotata tramite computer, ed eventualmente un software adeguato per pilotarla (ne parliamo tra poco).
Poi ci vuole il soggetto: cosa vogliamo fotografare? Serve della pianificazione, e una certa conoscenza del fenomeno che vogliamo documentare. Dobbiamo chiederci:

  • Quanto dura il fenomeno?
  • Quanto è veloce? Quanto tempo ci vuole perché sia visibile una variazione "interessante"?
  • Quanto deve durare il nostro video?
  • Su che supporto o formato lo vogliamo riportare?

Alcuni di questi parametri sono dipendenti l'uno dall'altro. Ad esempio, se scegliamo come formato finale il DVD PAL, allora saremo vincolati a video a 25 fotogrammi al secondo (fps, si misurano in Hz) se non vogliamo fare interpolazione in fase di encoding, e dovremo fare più attenzione ad usare un intervallo corretto tra uno scatto e il successivo. Se al contrario vogliamo fare un video mpeg4, formato che non ha un fps fissato, avremo un po' più di libertà sull'intervallo tra uno scatto e l'altro e sulla velocità del video, che potremo controllare anche cambiando, a posteriori, i fps.

Per esempio, se voglio mostrare il tramonto e il movimento delle nuvole, un evento che dura un paio d'ore, se considero il crepuscolo, in un video di un minuto che andrà su un DVD PAL, in cui vengono presentati 25 fotogrammi al secondo, allora dovrò dividere il tempo del fenomeno (2 ore = 7200 secondi) per il numero di fotogrammi del video finale (25 * 600 secondi, cioè 1500 fotogrammi), ottenendo 4,8, che sarà il tempo che dovrà intercorrere tra uno scatto e il successivo per campionare correttamente il fenomeno.

Allora monterò la mia macchina fotografica su un solito treppiedi (non si deve muovere durante le riprese!), misurerò la luce e regolerò tutto (anche se spesso è vantaggioso lasciare l'esposizione automatica) e la programmerò per fare uno scatto ogni 5 secondi (ci accontenteremo di una velocità un po' diversa da quella desiderata, la differenza è appena il 10%), facendo attenzione che le batterie siano cariche, o collegando la camera a una fonte di energia più duratura.

Molte macchine fotografiche hanno integrata una funzione che consente di scattare foto intervallate, e quindi non avremo bisogno d'altro in fase di ripresa (a me piace aggiungere un filtro polarizzatore per avere panorami più saturi e cieli dal blu più profondo), anche se gli intervalli di tempo predefiniti sono piuttosto limitati.
La mia Nikon Coolpix 8800, ad esempio, è in grado di riprendere automaticamente uno scatto ogni 30 secondi, ogni minuto, ogni 3 minuti ogni 5 minuti, e così via. Per la vostra macchina, cercate nella documentazione o nei menù.

Per ottenere intervalli di tempo arbitrari tra uno scatto e l'altro, è necessario collegare la digicam al pc e pilotarla con un software specifico, a volte dato in dotazione, a volte venduto a parte dalle case produttrici.
Noi utenti gnu/linux da questo punto di vista siamo piuttosto fortunati: le distribuzioni ci forniscono già gphoto2 che fa quel che ci serve, e non abbiamo bisogno di comprare nulla!
gphoto2, che di solito utilizziamo senza accorgercene quando scarichiamo foto dalla digicam sul pc, ci permette di controllare a distanza la macchina fotografica, modificare diverse impostazioni della machcina e fare scatti ad intervalli di tempo arbitrari.
Per vedere se la vostra digicam è supportata, visitate questa pagina:
http://www.gphoto.org/doc/remote/
In realtà, la vostra digicam potrebbe funzionare con gphoto2 anche se non elencata, dunque non perdetevi d'animo e provate! Neanche la mia Nikon Coolpix 8800 è elencata, eppure funziona!

Collegate la digicam al pc con il cavo fornito in dotazione, accendetala e provate ad interrogarla con il comando
gphoto2 -a
La vostra distribuzione potrebbe non aver preinstallato l'eseguibile gphoto2, ma solo le librerie (capita spesso, visto che vengono utilizzate da molti programmi), in tal caso provvedete ad installare gphoto2 tramite il vostro gestore di pacchetti.
Anche gtkam permette di gestire la machcina fotografica, tramite interfaccia grafica, ma dopo poche prove l'ho trovato scomodo da usare, e alla fine sono tornato a gphoto2.

Il comando precedente dovrebbe avervi detto cosa può fare gphoto2 con la macchina fotografica. Per conoscere il parametri che potete modificare, usate il comando:
gphoto2 --list-config

Se sembra che la macchina fotografica faccia i capricci, e non voglia parlare con gphoto2, provate a modificare il protocollo di comunicazione dai menù di configurazione della digicam. La mia Nikon, ad esempio, mi mostra due protocolli, "USB Storage" e "PTP", ma è possibile controllarla solo quando è in modalità "PTP".

Ecco l'output del comando precedente con la mia macchina fotografica:
$ gphoto2 --list-config
/main/settings/fastfs
/main/settings/capturetarget
/main/imgsettings/imgquality
/main/imgsettings/imgsize
/main/capturesettings/autofocusmode
/main/capturesettings/focallength
/main/capturesettings/focusmode
/main/capturesettings/flashmode
/main/wifiprofiles/new/name
/main/wifiprofiles/new/essid
/main/wifiprofiles/new/ipaddr
/main/wifiprofiles/new/netmask
/main/wifiprofiles/new/gw
/main/wifiprofiles/new/accessmode
/main/wifiprofiles/new/channel
/main/wifiprofiles/new/encryption
/main/wifiprofiles/new/key
/main/wifiprofiles/new/write

I parametri disponibili variano da modello a modello, e dipendono in parte anche da gphoto2.

Per vedere il valore di un parametro usate il comando:
gphoto2 --get-config nome
Dove nome è il nome del parametro che vi interessa. Ad esempio, io voglio vedere il parametro imgsize:
$ gphoto2 --get-config imgsize
Label: Dimensioni immagine
Type: RADIO
Current: 3264x2448
Choice: 0 640x480
Choice: 1 1024x768
Choice: 2 1280x960
Choice: 3 1600x1200
Choice: 4 2048x1536
Choice: 5 2592x1944
Choice: 6 3264x2448
Choice: 7 3264x2176

Come vedete, la risposta è pure in italiano!

Per modificare il valore di un parametro, usate l'opzione --set-config, in questo modo:
gphoto2 --set-config imgsize=1600x1200
In alternativa potete usare anche la forma --set-config imgsize=3, gphoto2 farà riferimento ai numeri della risposta precedente per variare adeguatamente il parametro.

Per scattare una fotografia usate:
gphoto2 --capture-image
Attenzione al tipo di memoria utilizzata, se la RAM interna della camera o se la scheda di memoria: se viene utilizzata la scheda, potrete scaricare la foto in un secondo tempo, mentre se viene usata la RAM dovrete scaricare la foto subito prima di terminare il comando. Questo è configurabile tramite i comandi di prima.
Io preferisco usare la RAM, e scaricare direttamente le foto sul PC, e dunque uso il comando:
gphoto2 --capture-image --get-all-files

OK, è divertente giocare con gphoto2, ma noi volevamo scattare foto intervallate, no? Come si fa?
Usando le opzioni --interval SECONDI che determina l'intervallo tra uno scatto e il successivo e --frames NUM che determina il numero di foto da scattare. Le versioni abbreviate di queste opzioni sono -F e -I.
Perciò tornando all'esempio di prima, se voglio fare una foto ogni 5 secondi, per un totale di 1500 foto (occhio di avere spazio sufficiente sul pc!) userò il comando:
gphoto2 -I 5 -F 1500 --capture-image --get-all-files

Ora, abbiamo le foto sul nostro computer, non vediamo l'ora di vedere il nostro video time lapse!
Ci sono molti programmi che possiamo usare per creare un video a partire da una sequenza di immagini jpeg. I più gettonati sono mencoder e ffmpeg. Io ho usato ffmpeg, e vi dico come usarlo.

Credo si possano usare anche programmi con interfaccia grafica, ma personalmente trovo molto più efficiente lavorare con la riga di comando: una volta che si è messo a punto il metodo, basta fare uno script (o un menù di servizio di konqueror in KDE) per replicare le stesse operazioni senza alcuna fatica. Per questo nel seguito userò quasi esclusivamente strumenti da riga di comando.

Prima di tutto assicuriamoci che le nostre immagini abbiano nomi contenenti numeri progressivi (tipo "dscn0001.jpg") che partano da 1 e continuino senza salti fino alla fine. Se ffmpeg arriva alla foto 212 e non trova la 213 non salta alla 214, ma interrompe la codifica.
Per questo la cosa più furba da fare è rinominare tutte le foto in modo che abbiano un numero progressivo corretto. Usando la shell bash useremo il comando (i file saranno rinominati con nomi tipo "00001.jpg", "0002.jpg", e così via):
ls *.jpg | nl -nrz -w5 | while read newname oldname; do mv "$oldname" $newname.jpg; done
(per nl vedi: http://www.linuxmanpages.com/man1/nl.1.php )
In alternativa, usiamo krename, un programma che ci fa fare la stessa cosa usando una comoda interfaccia grafica. Se scaricate le foto con digkam, potete chiedergli di rinominare secondo un modello fornito da voi le foto scaricate.

Creiamo allora il nostro video! Il modo più semplice per averen video da mettere su DVD è usare il comando:
ffmpeg -i '%05d.jpg' -target pal-dvd -y video.mpg
Analizziamo il comando.

  • L'opzione -i indica il video di ingresso, che nel nostro caso è una sequenza di immagini identificata da un'espressione regolare, protetta tra apici per non farla interpretare alla shell. %05d.jpg vuol dire "cerca tutti i file il cui nome comincia con una sequenza di numeri da 5 cifre e termina con la stringa .jpg". Se le nostre immagini avevano nome tipo dscn1234.jpg allra l'espressione regolare sarebbe stata dscn%04.jpg.
  • L'opzione -target pal-dvd imposta automaticamente tutti i parametri necessari per creare un video finale conforme allo standard DVD PAL.
  • video.mpg sarà il nome del video codificato. L'opzione -y fa sì che il file venga sovrascritto se già presente (in questo modo possiamo fare diverse prove)

Sul mio pc Pentium IV da 2.6 GHz ffmpeg impiega poco più di un minuto per eseguire la codifica a partire da circa 300 foto a 8 mega pixel.

Per vedere il video possiamo usare un player qualsiasi, come mplayer, xine, vlc o totem. Io uso ffplay o totem.

Queste le basi. Scegliamo il fenomeno da riprendere, facciamo i calcoli necessari, approntiamo la fotocamera per fare le riprese, usando le funzioni integrate o pilotandola via pc (usando gphoto2), prepariamo le immagini e codifichiamo il video (con ffmpeg).

Spesso però vogliamo più controllo sul risultato, e vogliamo fare qualcosa in più. Ad esempio, potremmo voler creare un video a risoluzione più alta del tradizionale DVD, per mostrare più dettagli, oppure usare un codec differente (per ottimizzare l'ingombro o per vedere il video su dispositivi particolari), oppure cambiare il numero di fotogrammi al secondo, per rallentare o accelerare il video, oppure cambiare il formato da 4:3 in 16:9, ad esempio.
Sicuramente vorremo aggiungere una colonna sonora, qualche sottotitolo e possibilmente dei metadati.

Ho trovato alcuni modi per fare queste cose, ve li mostro. Se trovate modi migliori, o avete suggerimenti da proporre, non esitate a lasciare un commento.

Innanzi tutto, cominciamo parlando di fps, fotogrammi al secondo. Supponiamo che avete scattato con una frequenza troppo alta, e avete più fotografie di quelle che ve ne servivano, o, equivalentemente, il video è troppo lento. Se scartiamo una foto ogni due raddoppiamo la velocità del video. Lo possiamo fare con un semplice script bash:
#!/bin/bash
min=1
max=400
mkdir selezione
for i in `seq -w $min 2 $max`
do
cp dscn0$i.jpg selezione
done
exit

Questo script crea una nuova directory, genera una sequenza di numeri da $min a $max (cambiamo queste variabili in relazione al nostro set di foto) con passo 2 (dunque avrò una sequenza tipo 1, 3, 5 ... oppure 4, 6, 8, ...) e poi copia nella directory "selezione" le fotografie che seddisfano quell'espressione regolare.
Successivamente, per creare il video con ffmpeg dovremo rinominare queste foto in modo che i numeri siano sequenziali, come abbiamo detto prima.

Se al contrario il video è troppo lento, o se vogliamo cambiare la velocità di poco, ci sono due modi. Uno usando un video di destinazione che non abbia un fps fissato (dunque NON DVD PAL, che è fissato a 25 fps), impostando un valore arbitrario. L'altro definendo esplicitamente la frequenza nel file di ingresso (se non diciamo nulla, ffmpeg suppone che la sequenza di foto abbiano la stessa frequenza del video di uscita).

Facciamo un esempio: il codec mpeg4 non ci impone nessun frame rate fissato, dunque posso scegliere di impostare il frame rate a 15 Hz:
ffmpeg -i '%05d.jpg' -r 15 -s vga -vcodec mpeg4 -qscale 1 -y video.mp4
Tralasciate le altre opzioni, ne parliamo dopo, e guardate solo l'opzione "-r 15", che imposta il frame rate di uscita a 15 fps. ffmpeg considera le opzioni che precedono "-i " come opzioni che riguardano il video di ingresso, mentre le opzioni che precedono il nome del video di uscita influenzeranno il video di uscita.

In questo modo possiamo regolare la velocità anche di un video DVD PAL, imponendo al video di ingresso una frequenza arbitraria:
ffmpeg -r 15 -i '%05d.jpg' -target pal-dvd -y video.mpg
Poiché abbiamo usato "-target pal-dvd", ffmpeg imposta l'opzione -r del file di uscita a 25 fps, come da specifica DVD PAL, ma regolando il valore di -r PRIMA del file di ingresso, possiamo controllare la velocità del video finale: se è minore di 25, rallentiamo il video, se è maggiore di 25 lo acceleriamo.
Lo svantaggio di questa tecnica è che ffmpeg andrà a interpolare i fotogrammi mancanti, con un minimo scadimento di qualità.

Vediamo un esempio più completo, così da analizzare un po' di opzioni interessanti. Guardate questo comando:
ffmpeg -r 20 -i '%05d.jpg' -r 25 -s xga -vcodec mpeg4 -qscale 1 -aspect 4:3 -f mp4 -y video.mp4

  1. La prima opzione -r dice a ffmpeg che il video iniziale è a 20 fps
  2. l'opzione -i '%05d.jpg' gli dice qual è il "video" iniziale (la nostra sequenza di foto)
  3. la seconda -r gli dice che il video finale deve essere a 25 fps
  4. l'opzione -s specifica la risoluzione (xga = 1024x768)
  5. -vcodec gli dice di usare il codec mpeg4 per il video
  6. -qscale 1 gli dice di privilegiare la qualità a costo di un più alto bitrate (1 = migliore qualità, alto bitrate, file grande, 31 peggiore qualità, basso bitrate, file piccolo)
  7. -aspect 4:3 gli dice che il video avrà proporzioni 4:3. È piuttosto superfluo in questo caso, ma andrebbe indicato per i video PAL o NTSC, visto che in quel caso i pixel non sono quadrati.
  8. -f mp4 gli dice che formato contenitore usare. Se assente, ffmpeg decide guardando l'estensione del file di uscita.
  9. -y sovrascrive il file indicato se esistente, senza chiedere conferma

Per i formati contenitore che supportano i metadati, potete usare anche le opzioni -title "titolo video", -author "autore video", -copyright "testo copyright", -comment "commento al video", -year 2008 per aggiungere informazioni al vostro video.

Vi raccomando di consultare la lista delle opzioni supportate da ffmpeg, con alcuni esempi commentati, nella pagina man di ffmpeg oppure a questo indirizzo:
http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html

Per sapere i formati, i codec e i contenitori supportati sul vostro sistema, usate il comando:
ffmpeg -formats
Se qualche formato o qualche codec non compare nella lista, potreste dover installare delle librerie aggiuntive, fate riferimento al gestore pacchetti della vostra distribuzione gnu/linux.

Per un tutorial dettagliato su come usare altre funzioni di ffmpeg (ad esempio per fare il crop del video), vedete:
http://howto-pages.org/ffmpeg/

Per aggiungere titoli, o comunque testo ai nostri video, possiamo aggiungerli alle foto usando le funzioni di manipolazione del testo di image magick. Io non ho ancora provato, ma ho trovato diversi spunti interessanti qui:
http://www.imagemagick.org/Usage/annotating/
http://www.imagemagick.org/Usage/text/

In alternativa, si può usare l'ottimo editor video Kino, come spiegato qui:
http://www.linux.com/feature/114240

Tra l'altro, imagemagick può essere molto utile se le fotografie richiedono una qualche elaborazione prima di essere assemblate, come una correzione dei colori o del contrasto: è facile scrivere uno script che applichi queste correzioni a tutte le foto. Anche in questo caso, esistono alternative da interfaccia grafica, come cinepaint, realizzato proprio per questi scopi.

Prima di terminare questa lunga parte su ffmpeg, vi mostro come aggiungere l'audio ad un video, e come creare un video con musica di sottofondo, che potremmo aver preparato prima con altri strumenti, come sox o audacity.

Se avete già un video "muto", usate un comando del tipo:
ffmpeg -i video_muto.mp4 -i musica.mp3 -vcodec copy -acodec libmp3lame video_musica.mp4
In pratica abbiamo aggiunto un file mp3 tra i file sorgente, con lo speciale codec "copy" abbiamo detto di copiare lo stream video originale, mentre con l'opzione "-acodec libmp3lame" (su alcuni sistemi basta -acodec mp3) abbiamo detto che vogliamo che il l'audio di uscita sia codificato in MP3 (anche qui, per risparmiare tempo di codifica avremmo potuto usare -acodec copy).

Se conosciamo già la durata del video finale, possiamo fare tutto insieme, creare il video e aggiungere la musica:
ffmpeg -r 20 -i '%05d.jpg' -i musica.mp3 -r 25 -vcodec mpeg4 -s xga -acodec libfaac -qscale 4 -aspect 4:3 -y -f mp4 video_musica.mp4

La quantità di cose che si possono fare con ffmpeg è impressionante, consultate la documentazione e interrogate google per soluzioni specifiche.

Vediamo invece un paio di esempi realizzati dal sottoscritto con la tecnica descritta sopra.
Il primo è realizzato a partire da un set di foto scattate ogni 30 secondi dalle 16:16 alle 17:53, impostando l'esposizione automatica sulla macchina fotografica, ed aggiungendo un filtro polarizzatore per aumentare il contrasto tra cielo e nuvole.
Il comando utilizzato per creare il video è:
ffmpeg -r 15 -i '%05d.jpg' -i musica.mp3 -vcodec mpeg4 -s xga -acodec libfaac -qscale 1 -aspect 4:3 \
-author "gerlos" -title "Tramonto time lapse" -comment "primo esperimento time lapse" \
-y -f mp4 video_musica.mp4

Vedete subito che l'esposizione automatica "simula" l'adattamento dell'occhio umano all'oscurità, e rende più lungo e graduale il tramonto.


Il secondo esempio è stato realizzato il giorno dopo, a partire dalle 14:42 fino alle 17:20, stesse impostazioni, ossia polarizzatore e scatti ogni 30 secondi, ma stavolta ho fissato l'apertura a f/5 e l'esposizione a 1/250 s.
Il comando usato è:
ffmpeg -i 'dscn%04d.jpg' -i music.ogg -r 20 -vcodec mpeg4 -s xga -acodec libfaac -qscale 1 -aspect 4:3 \
-author "gerlos" -title "Tramonto time lapse 2" -comment "primo esperimento time lapse, esposizione fissa"\
-y -f mp4 time_lapse2_20fps_xga_audio.mp4

Vedete bene che, sebbene la sequenza finisca ad un orario precedente rispetto al giorno prima, il fatto che abbiamo fissato l'esposizione fa scurire prima il cielo, insomma, fa buio prima (inoltre youtube ha tagliato i 13 secondi finali, non so bene perchè... comunque era tutto uguale...).


Infine, ecco i meravigliosi video realizzati da un amico di Ragusa:
http://www.youtube.com/user/giannitumino

Un ottimo esempio di cosa si può fare con questa tecnica!
Come sempre, se avete domande, critiche o suggerimenti da proporre, non esitate a lasciare un commento!

Time lapse astronomici con GNU/Linux e una DSLR Canon 20DA (parte prima)

In questo articolo mostro come ho realizzato il mio primo video time lapse (che vedete qui sotto) con l'aiuto di Gianni Passalacqua dell'AIDA di Ragusa. Di solito questi video sono realizzati con hardware dedicato e soprattutto con software impegnativo e costoso, esistente solo per Windows (per esempio, il popolare Sony Vegas).

Quello che intendo mostrarvi è che si possono ottenere più o meno gli stessi risultati usando software libero in ambiente GNU/Linux, senza spendere un centesimo e anzi guadagnando una maggiore flessibilità e automazione grazie alle possibilità di scripting del sistema. E no, non è difficile come pensate, anzi forse dopo aver iniziato è anche più facile!

Il video time lapse, realizzato a partire da 251 scatti ripresi tra le 23:43 del 12 giugno e le 3:51 del 13, mostra la levata ad Est delle stelle dell'Aquila, del Delfino, del Capricorno, del Pegaso e dei Pesci, insieme a Giove. Durante le riprese, inoltre, ho avuto la fortuna di catturare anche una meteora, come si vede nell'immagine di apertura.

Hardware usato e preparativi

L'equipaggiamento usato per la ripresa è stato:

  • Reflex DSLR Canon 20D senza filtro infrarosso, dell'O.R.S.A., con l'obiettivo zoom 18-55 di corredo, impostato alla focale minima. La macchina era in modalità "M".
  • Treppiedi stabile (per aumentare la stabilità, abbiamo incastrato i piedi nel terreno ed abbiamo accorciato le gambe).
  • Computer portatile con Kubuntu 10.04 (va bene qualsiasi pc su cui possa essere installata una qualsiasi recente distribuzione GNU/Linux, io ho usato un MacBook Pro).
  • Cavo USB mini-B per collegare la macchina fotografica al computer.
  • Coppia di batterie cariche per la reflex.
  • Scheda di memoria di capacità adeguata (noi abbiamo ne usata una da 512 MB).

Essendo piuttosto difficile trovare il fuoco osservando nel mirino di notte, abbiamo impostato il fuoco in manuale e l'abbiamo regolato di giorno, prima del tramonto, sul profilo lontano delle montagne, senza toccarlo fino al termine delle riprese.

Abbiamo fissato il diaframma a f/ 5.6, per limitare aberrazioni e guadagnare un po' di profondità di campo, che limitasse eventuali piccoli errori di messa a fuoco. La sensibilità era (forse esagerando) a 1600 ISO; probabilmente avremmo ripreso le stesse stelle ottenendo meno rumore se avessimo lavorato a 800 ISO.

Il tempo di esposizione scelto era di 20 secondi (così che non fosse evidente alcun mosso), con l'intenzione di scattare foto ogni 30 secondi (vedremo nel seguito che per un errore alla fine abbiamo fatto scatti ogni 56 sec circa). Volevamo riprendere immagini per almeno 4 ore, e abbiamo calcolato che con il passo temporale scelto (30 sec) ci serviva riprendere circa 500 scatti.

Inizialmente abbiamo anche deciso che il video time lapse finale avrebbe avuto il formato 702p (1280x720), per cui abbiamo impostato sulla reflex la risoluzione minima possibile (JPEG 1728x1152). File più grandi avrebbero soltanto riempito inutilmente la scheda di memoria e rallentato l'elaborazione successiva, almeno per quelle che erano le nostre intenzioni iniziali.

Software usato

Tutto il software usato è disponibile "di serie" nei depositi predefiniti di tutte le maggiori distribuzioni GNU/Linux. In quanto segue, io farò riferimento a Ubuntu/Kubuntu.

Questo è il software strettamente necessario per creare video time lapse:

  • gphoto2 per pilotare in remoto la reflex e per scaricare le foto dalla reflex.
  • imagemagick per ritoccare in blocco le immagini (useremo il comando convert).
  • ffmpeg per combinare le immaigni in un video. Come vedete, i programmi più importanti sono da riga di comando, e si prestano facilmente ad essere automatizzati tramite "ricette" o script, riutilizzabili in più e più occasioni.

Utili e molto comodi, anche se non essenziali, sono stati:

  • Un visualizzatore di immagini veloce, per sfogliare le foto scaricate e controllare i risultati; io ho usato Gwenview.
  • Gimp per elaborare in modo interattivo le immagini; ci permette di stabilire facilmente quali saranno le modifiche che dovremo applicare a tutte le immagini usando imagemagick.
  • Kdenlive per montare il video in modo gradevole, aggiungendo musica, transizioni, ed altro; qualcuno preferisce PiTiVi.
  • VLC o un qualsiasi altro media player per visualizzare il video time lapse risultante.

Acquisizione dei frame

Scattare una foto ogni 30 secondi manualmente, per 500 volte, non è cosa proponibile ad alcun essere umano sano di mente. Per queste cose sono molto più brave le macchine ed i computer, con il vantaggio che ci lasciano liberi di fare altre cose nel frattempo. gphoto2 ci permette di controllare in remoto la macchina fotografica, ed è facile automatizzare i comandi necessari (per un tutorial di base su come usare gphoto2 per questi scopi vedete Fotografia time lapse con Linux).

Per questo abbiamo realizzato un semplice script bash per scattare 500 esposizioni da 20 secondi (come impostato nella macchina fotografica), con intervalli di 30 secondi, e per stampare a video l'ora della ripresa (utile per rilevare anomalie, per esempio scatti persi a causa di batterie scariche):

#!/bin/bash
# cattura-sequenza.sh - versione provvisoria
# data: 12/06/2010
# autore: gerlos - [email protected]
#   Questo script cattura una foto dalla Canon 20DA ogni 30 secondi,
# per un totale di 500 scatti
#
#   Richiede: gphoto2
for i in `seq 1 500`
do
    # stampa la data e l'ora
    echo ' **** ' `date` ' **** '
    # si ferma per 30 secondi
    sleep 30s
    # esegue uno scatto
    gphoto2 --capture-image
done
echo
echo ACQUISIZIONE COMPLETETATA, SCARICO LE FOTO
# scarica tutte le foto sulla scheda di memoria
gphoto2 --get-all-files
echo TUTTO COMPLETATO
exit

Quando ho scritto questo script mi sono convinto che avrebbe acquisito una foto ogni trenta secondi... solo il giorno dopo mi sono accorto di essermi sbagliato: la pausa tra uno scatto e l'altro è sì di 30 secondi, ma la distanza di tempo tra l'inizio di una foto e l'inizio della successiva è di almeno 50 secondi (30 di pausa + 20 di esposizione)! Se a questo tempo si aggiunge il tempo necessario a gphoto2 e alla reflex per comunicare (~7 sec), ci ritroviamo con un intervallo di tempo medio di circa 57 sec, che è l'intervallo medio tra uno scatto e l'altro nella sequenza che abbiamo acquisito.

Lo script corretto è questo, che effettivamente esegue uno scatto da 20 sec ogni 30 sec (visto il tempo necessario alla reflex, consiglio di prevedere sempre un "tempo morto" di almeno 10 sec):

#!/bin/bash
# cattura-sequenza.sh - versione definitiva
# data: 13/06/2010
# autore: gerlos - [email protected]
#   Questo script cattura una foto dalla Canon 20DA ogni 30 secondi,
# per un totale di 500 scatti
#
#   Richiede: gphoto2
echo COMINCIAMO
for i in `seq 1 500`
do
    # aspetta per 30 secondi
    sleep 30s
    # stampa la data e l'ora
    echo ' **** ' `date` ' **** '
    # esegue uno scatto in background
    gphoto2 --capture-image &
done
echo
echo ACQUISIZIONE COMPLETETATA, SCARICO LE FOTO
# scarica tutte le foto dalla scheda di memoria
gphoto2 --get-all-files
echo TUTTO COMPLETATO
exit

È consigliabile infine riprendere una decina di dark frame. Potete farlo coprendo l'obiettivo con il tappo e dando il comando:

gphoto2 --interval 30 --frames 10

Possibili problemi in fase di ripresa

Per essere pilotabile da gphoto2 la Canon 20D deve essere in modalità di comunicazione "Normale", e non deve essere attivo nulla sul display (revisione foto, menu di configurazione, nulla). Inoltre il tempo morto di ~7 sec che ho misurato potrebbe essere più lungo se salvate immagini in formati più grandi (in RAW ci sono tempi molto più lunghi di salvataggio). Notate infine che nello script non c'è alcun comando che dica alla macchina la durata dell'espozione: questo parametro dobbiamo averlo impostato in precedenza sulla reflex.

Oltre a controllare che sul PC funzioni tutto correttamente, sorvegliate anche la reflex, soprattutto se è alimentata a batteria. In caso di problemi di comunicazione, gphoto2 ci restituirà sempre lo stesso messaggio generico, a prescindere dal problema specifico (batteria scarica, scheda di memoria piena, display attivo...):

Individuata una "Canon:EOS 20D (normal mode)".

*** Errore ***
Errore nella cattura dell'immagine
ERRORE: Impossibile catturare.
*** Errore (-113: "La fotocamera non ha potuto completare l'operazione") ***

Per ottenere messaggi di debug, usare l'opzione --debug.
I messaggi di debug possono aiutare a risolvere i problemi incontrati.
Se si ha intenzione di inviare errori o messaggi alla mailing list degli
sviluppatori di gphoto <[email protected]>, eseguire
gphoto2 come segue:

    env LANG=C gphoto2 --debug --debug-logfile=my-logfile.txt --capture-image

Please make sure there is sufficient quoting around the arguments.

Fate prima qualche prova a casa, per verificare quanti scatti riuscite a fare con una batteria carica con il vostro setup. Io sono rimasto stupito quando ho constatato che dopo appena 180 scatti l'energia era finita! Se ne avete la possiblità, montate un pacco batterie più grande o collegate la macchina fotografica alla corrente elettrica. Se dovete cambiare le batterie durante una ripresa, fatelo senza spostare la macchina e il treppiedi!

È possibile che di tanto in tanto la comunicazione tra il PC e la relfex fallisca, anche se non ci sono problemi di batterie o di memoria piena. Onestamente non ho capito perché questo accada, ho notato che si verifica nel 1-2% degli scatti, e per questo invece di tenere aperta la connessione con la Canon 20D, il mio script apre una nuova connessione per ogni scatto. Il più delle volte il problema è innocuo, e non si presenta allo scatto successivo; in ogni caso si può risolvere spegnendo e riaccendendo la camera.

Fate sempre un po' di prove con gphoto2 e la vostra reflex, per cercare di rendervi conto di cosa potete controllare. gphoto2 supporta moltissime camere e non tutte allo stesso livello, le vostre possibilità potrebbero variare (anche se io ho avuto sempre molta fortuna con le SLR Canon e Nikon).

Questo articolo continua con la seconda parte

Time lapse con GNU/Linux e una DSLR Canon 20DA (parte seconda)

Proseguiamo con questo articolo la discussione su come ho realizzato il video time lapse astronomico che trovate in questa pagina. Nella prima parte abbiamo visto i preparativi e i passaggi necessari per l'acquisizione, in questa parte parleremo delle tecniche per l'elaborazione delle immagini, per il montaggio e per la postproduzione del video, tutto rigorosamente realizzato con GNU/Linux e software libero, naturalmente!

Elaborazione e creazione del video e della "strisciata"

Per l'errore che avevo fatto nel mio script, le riprese sarebbero dovute finire dopo un tempo circa doppio (8h) di quanto mi aspettavo (4h), per cui verso le 4 meno dieci ho interrotto manualmente lo script digitando Ctrl-C sul terminale.

Adesso che abbiamo le foto, dobbiamo controllarle, eventualmente regolarle e assemblarle nel nostro video. Per riuscire senza troppi mal di testa, è fondamentale essere ordinati. Io ho creato una cartella chiamata sequenza, dentro la quale ho creato tre sotto-cartelle: light per le immagini acquisite, dark per i dark frame acquisiti ed elaborate per i frame ritoccati.

Come prima cosa controllo le foto, sfogliandole con Gwenview. Si può scorrere le immagini in sequenza premendo la barra spaziatrice, ed tornare indietro premendo backspace. Come vedete dal video, abbiamo beccato le ombre di qualche curioso, un satellite artificiale, visibile in tre fotogrammi, e una stella cadente, più luminosa di Giove, che vedete nell'immagine di apertura.


Gimp per la preparazione delle immagini in time lapse

Ho poi preso un'immagine rappresentativa, e l'ho aperta con Gimp, per vedere se c'era qualche regolazione che potesse migliorarla un po'. Ho preferito fare solo piccole modifiche, per rendere più visibili le stelle e per regolare il bilanciamento del bianco. Per far questo, ho usato lo strumento livelli, modificando il punto di bianco e il gamma. Mi sono annotato i valori di regolazione usati. Poi sono tornato alla finestra livelli, ed ho regolato il bilanciamento del bianco cliccando sul "contagocce" grigio e poi cliccando su un punto del cielo che mi aspettavo fosse di colore neutro. In questo caso, il canale principale ("valore") rimane invariato, mentre i canali dei singoli colori cambiano il loro valore di gamma. Mi sono annotato questi valori di gamma per i canali RGB.

Ad ogni immagine dovrò sottrarre il dark frame e andranno fatte le stesse regolazioni che ho appena visto.

Calcoliamo dunque il master dark frame come media dei singoli frame con il comando:

convert dark/*.JPG -average master-dark.png

Correggiamo per il dark frame e i livelli di ogni immagine con il comando:

convert master-dark.png light/immagine.jpg -compose minus -composite -level 0%,94%,1.2 -gamma 0.98,1.00,1.13  elaborate/immagine.png

I parametri usati per l'opzione level sono quelli trovati prima per i livelli in Gimp, mentre i parametri usati per l'opzione -gamma sono quelli trovati quando abbiamo regolato il bilanciamento del bianco. Come vedete, le immagini corrette vengono salvate nella cartella elaborate.

Per montare le immagini in un video useremo ffmpeg. ffmpeg richiede che i frame da montare abbiano un numero progressivo del tipo 0001.png, 0002.png, 0003.png, ... Per farlo contento dobbiamo rinominare i file elaborati, in modo che i nomi soddisfino questo modello. Lo si può fare in vari modi, anche tramite interfacce grafiche come krename (anche l'ottimo digikam include uno strumento per rinominare file), ma visto che è un'operazione che dobbiamo ripetere ogni volta, la cosa più comoda è farlo con un comando che possiamo mettere dentro uno script:


ls *.png | nl -nrz -w5 | while read newname oldname
do
   mv "$oldname" $newname.png
done

Spostiamoci infine nella cartella elaborate. il comando per creare un video 720p a 25 fps è:

ffmpeg -r 10 -i '%05d.png' -r 25 -s hd720 -vcodec mpeg4 -qscale 1 -y ../video-timelapse.mp4

Non aggiungerò troppi dettagli su questo argomento, ne ho già parlato nell'articolo Fotografia time lapse con Linux; l'unica cosa che penso sia importante ricordare è che regolando il valore del parametro che segue il primo "-r" si può controllare la velocità del video: se lo si diminuisce il video rallenta, se aumenta il video accelera. Sì, è vero, con questa conversione i fotogrammi vengono un poco deformati: forse sarebbe stato meglio ritagliarli prima in modo che il formato di ingresso avesse le stesse proporzioni di quello di uscita...

Ovviamente non comporremo questi comandi a mano ogni volta, ma li useremo in automatico inserendoli in uno script come questo:

#!/bin/bash
# data: 14/06/2010
# autore: gerlos - [email protected]
#   Prepara le immagini della sequenza per il montaggio nel video, applicando il
# dark frame e regolando i livelli di colore. Poi li mette insieme in un video.
#   Assume che le immagini originali siano nella dir "light", che i dark frame
# siano nella dir "dark", e che ci sia una dir "elaborate" per le immagini
# ritoccate.
#   Usa il formato PNG nei passi intermedi perché lossless
#   Richiede: imagemagick, ffmpeg

# fa la media dei dark dark frame
convert dark/*.JPG -average master-dark.png
# per ogni immagine nella cartella light, sottrae il master dark frame e
# corregge i livelli (questa e` la fase piu` lunga)
for i in `ls light`
do
  echo "elaboro l'immagine $i..."
  convert master-dark.png light/$i -compose minus -composite \
                      -level 0%,94%,1.2 -gamma 0.98,1.00,1.13  elaborate/$i.png
done

# ci spostiamo nella dir che contiene le immagini elaborate e le rinominiamo con
# numeri consecutivi, per ffmpeg
cd elaborate
ls *.png | nl -nrz -w5 | while read newname oldname
do
  mv "$oldname" $newname.png
done

# Uniamo le immagini per creiare una "strisciata"
# Cominciamo creando una immagine di sfondo, nera e grande quanto le altre foto
# Impostiamo l'estensione in lettere maiuscole, cosi` questo file non viene
# elencato nel prossimo ciclo e non viene usato da ffmpeg.
convert -size 1728x1152 xc:black 00000.PNG

# aggiungiamo in modalita` "illumina" ogni immagine della sequenza all'immagine
# di sfondo, inizialmente nera (illumina aggiunge un pixel della seconda
# immagine all'immagine composta solo se e` piu` luminoso di quello della prima
# immagine, così non saturiamo il fondo cielo, pur aggiungendo le stelle)
for i in `ls *.png`
  do convert 00000.PNG $i -compose lighten -composite 00000.PNG
done

#   Crea un video per DVD PAL (bassa qualita`, massima compatibilita`)
# ffmpeg -i '%05d.png' -target pal-dvd -y ../video-timelapse.mpg

#   Creiamo un video MPEG4 HD 720p (1280x720), ma a 25 Hz (non a 50 Hz) (alta
# qualita`).
#   Cambiando il valore del primo -r si rallenta (se minore del secondo) o si
# accelera (se maggiore del secondo) il video.
#   L'opzione -s hd720 imposta il formato del video (deformiamo un pochino le
# immagini, forse e` meglio fare un crop prima?).
#  L'opzione -vcodec mpeg4 imposta il codec di compressione
ffmpeg -r 10 -i '%05d.png' -r 25 -s hd720 -vcodec mpeg4 -qscale 1 \
                                                      -y ../video-timelapse.mp4
exit

I commenti generosi dovrebbero chiarire ogni dubbio. Al termine dell'esecuzione dello script (sul mio MacBook Pro ha impiegato circa un quarto d'ora) dovrei trovarmi con le immagini elaborate e il video video-timelapse.mp4 nella cartella corrente.

Nello script ho aggiunto anche un comando per generare una "strisciata", unendo tutte le immagini in un singolo fotogramma. Ecco il risultato:

Le traiettorie delle stelle sono tratteggiate perché c'è quel tempo morto di circa 30 sec tra uno scatto e l'altro; ci sono inoltre due interruzioni dovute a un problema di comunicazione che ha richiesto lo spegnimento della reflex e alla batteria scarica, che è stata sostituita.

Postproduzione

Ok, abbiamo il nostro video, abbiamo avuto la fortuna di fotografare una spettacolare meteora, e abbiamo fatto una bella strisciata. Vogliamo montare il tutto in un video con titoli, musica e tutto, da mostrare agli amici e caricare su youtube!

Per far questo ho usato kdenlive, molto utile e semplice da usare.



Postproduzione di Kdenlive

Non vi annoierò su come usarlo: è piuttosto intuitivo, sul sito ci sono numerosi video tutorial in inglese e in rete c'è anche della documentazione in italiano su wikibooks.

Prima di chiudere parliamo dell'annoso problema della colonna sonora: quando aggiungiamo musica ai nostri video, spesso lo facciamo in violazione dei diriti d'autore, che spesso (ma non sempre) proibiscono l'uso di brani musicali per scopi diversi dall'ascolto privato. Qualcuno pensa di evitare il problema inserendo brani di musica classica (visto che gli autori sono spesso morti da più di 80 anni), ma a volte viene considerata comunque una violazione del diritto d'autore, visto che esistono diritti anche sull'interpretazione o arrangiamento che può aver fatto un musicista.

Anche a me sembra un'idiozia, ma penso che le regole vanno comunque rispettate. Come fare? Esistono comunità online dove musicisti indipendenti (spesso molto in gamba) pubblicano i propri lavori con licenze libere, che permettono a me, a te e a tutti di usare la loro musica per i nostri lavori. Non che questi autori rinuncino interamente al diritto d'autore: semplicemente ci danno il permesso di usare la loro musica, fintanto che rispettiamo alcune regole, come citare l'autore originale, ad esempio.


Jamendo, aprite le orecchie Jamendo è una di queste comunità: possiamo scoprire nuovi autori e nuova musica, scaricarla gratuitamente, e riutilizzarla per i nostri lavori, purché nel rispetto delle licenze Creative Commons scelte di volta in volta dagli autori. Per esempio, il brano ambient "Lagoon", che fa da colonna sonora al mio video time lapse, è composto da David Schombert, che ci dà il permesso di usare la sua musica, purché si riconosca la sua paternità, non si modifichi il brano e non lo si usi per scopi commerciali.

Ed ecco il risultato del nostro lavoro!

Cieli Scuri a tutti!


Questo articolo ed i contenuti ad esso associati (fatta esclusione per il logo di Jamendo) sono rilasciati con licenza Creative Commons Attribuzione-Condividi allo stesso modo. Tutto il materiale dovrebbe essere disponibile anche all'indirizzo http://gerlos.altervista.org/pinguino-fotografo/video-time-lapse/time-lapse-canon-20da-2

Un trucco per riprese time lapse ancora più semplici

La volta scorsa vi ho raccontato come ho pilotato la reflex Canon 20D dell'ORSA tramite un MacBook Pro con Ubuntu e gphoto2, per riprendere un set di immagini ogni 60 secondi, per realizzare un video time lapse del cielo in movimento.

Ho sempre pensato che per fare questo tipo di riprese, visto che serve fare scatti ad intervalli regolari, fosse necessario pilotare la reflex dal pc o usare un aggeggio apposito, un intervallometro. Ho scoperto però un trucco per fare queste riprese, almeno in campo astronomico, anche senza questi "accessori" addizionali, risparmiando energia e denaro. In più il tutto comporta un setup più semplice, che è sempre meglio (ci sono meno cose che possono andare storte!).

E' semplicissimo, non so com'è che non l'ho pensato prima. Qualcuno direbbe che è un hack o che è hacking.

le impostazioni per la ripresa time lapse sul display della reflex

Semplicemente, mettiamo la reflex in modalità "scatto continuo". In questa modalità la macchina riprende scatti "a raffica". Cominciamo a scattare, e blocchiamo il pulsante di scatto. E' più semplice se usiamo un comando a distanza con cavo che consente il blocco dello scatto, come quello che vedete nella prossima foto (modello RS-80N3).

Facciamo uno scatto e blocchiamo il pulsante di scatto, usando il blocco del comando a distanza o usando un elastico spesso e una gomma sul pulsante di scatto. La macchina comincerà a fare un'esposizione, e non appena avrà finito la prima, comincerà subito la successiva esposizione.
Se impostiamo tempi di esposizione abbastanza lunghi (come è comune in astronomia), tra l'inizio di uno scatto e il successivo la reflex ha tutto il tempo di memorizzare la foto precedente.

Così se per esempio impostiamo un tempo di esposizione di 30 secondi (come facciamo quasi sempre per mostrare la rotazione del Cielo e la Via Lattea), e blocchiamo lo scatto, avremo effettivamente una foto ogni trenta secondi più qualche secondo (l'ho misurato, sono 2,5 secondi) necessario alla macchina per chiudere e riaprire l'otturatore tra uno scatto e l'altro.

I nostri video time lapse saranno continui, e cattureremo quasi sicuramente tutte le meteore, satelliti e aerei che passeranno nel campo visivo del nostro obiettivo. Chiaramente, saremo limitati solo dalla durata della batteria e dalla capacità della scheda di memoria.

Ho verificato che con una Canon 20D e una scheda compact flash tipica, si può anche impostare una esposizione di 1 secondo e una "Qualità di registrazione dell'immagine" (insomma, il formato e la compressione) L o "Grande fine" (dovrebbero picchiare quelli che traducono così i manuali, si tratta semplicemente di immagini JPEG da 8 megapixel a bassa compressione). Ovviamente formati e qualità inferiori non creano problemi.

Lo so che non vi passava per la testa, ma qualsiasi modalità di ripresa RAW va evitata in questo caso, a meno che non impostiate tempi di almeno 20 secondi. Ma siete sicuri che volete lavorare con così tanti file enormi, ammesso che ci entrino nella scheda di memoria?

o scatto a distanza con cavo RS-80N3, per Canon 20D e Canon 350D

A proposito: ho notato che se si accende la retro-illuminazione del display vicino al pulsante di scatto e si avvia la sequenza prima che si sia spento automaticamente, esso non si spegne più. Per risparmiare batteria vi consiglio di spegnerlo manualmente, premendo il tasto della retro-illuminazione, vicino al display.

Non ho ancora provato questa tecnica "sul campo", ma solo "in laboratorio" (scattando, senza problemi, circa 700 foto), e non ho ancora nessun video da mostrarvi (tra l'altro è da alcuni giorni che piove), ma non preoccupatevi, non dovrete aspettare a lungo... rimanete in ascolto! ;-)

Spero che questo suggerimento per fare riprese in modo più semplice e con meno hardware vi incoraggi a fare prove e spettacolari time lapse della volta celeste!

Prima di chiudere l'articolo, ecco una letturina in più sulle foto di tracce stellari:
Lets Go Streaking, a Guide to Star Trails

Star Trail e strisciate animate

Nei precedenti articoli abbiamo visto come realizzare video time-lapse usando una reflex e gli strumenti liberi del nostro sistema GNU/Linux. Abbiamo visto come realizzare una immagine "strisciata" dalla somma dei frame scattati nelle ore di ripresa, ma non abbiamo visto come fare un effetto animato come questo:

Ottenere un video di questo genere a partire da un set di immagini time lapse è piuttosto semplice, con qualche piccola modifica possiamo adattare il nostro script elabora.sh a questo scopo. Eccolo qui:

#!/bin/bash
# strisciata.sh
# data: 16/06/2010
# autore: gerlos - [email protected]
# Fa una strisciata animata a partire dai fotogrammi ripresi
# salva anche una immagine strisciata completa
#   Richiede: imagemagick, ffmpeg
#   Assume che nella cartella "elaborate" ci siano già le immagini PNG ritoccate
# e numerate per essere elaborate con `ffmpeg`.

# prepariamo una directory dove mettere le immagini della nuova sequenza da montare
mkdir strisciata
# Cominciamo creando una immagine di sfondo, nera e grande quanto le altre foto
# Impostiamo l'estensione in lettere maiuscole, cosi` questo file non viene
# elencato nel prossimo ciclo e non viene usato da ffmpeg.
convert -size 1728x1152 xc:black 00000.PNG
# aggiungiamo in modalita` "illumina" ogni immagine della sequenza all'immagine
# di sfondo, inizialmente nera (illumina aggiunge un pixel della seconda
# immagine all'immagine composta solo se e` piu` luminoso di quello della prima
# immagine, così non saturiamo il fondo cielo, pur aggiungendo le stelle)
# ad ogni passo della somma copiamo l'immagine intermedia, per l'animazione
for i in `ls elaborate/*.png`
do
  convert 00000.PNG $i -compose lighten -composite 00000.PNG
  cp 00000.PNG strisciata/`basename $i`
done
# conserviamo l'immagine con la strisciata completa
mv 00000.PNG strisciata.png
# ci spostiamo nella cartella che contiene le immagini e le uniamo in un video
cd strisciata
ffmpeg -r 25 -i '%05d.png' -r 25 -s hd720 -vcodec mpeg4 -qscale 1 \
                                                      -y ../video-strisciata.mp4
exit

Eseguendo questo script nella struttura di cartelle descritta nel mio precedente articolo, possiamo ottenere il risultato voluto. Ecco infatti una nuova versione del video time lapse realizzato nei precedenti articoli, con l'effetto appena creato.

Star Trails at X Star Party Madonie AstrofiliSiciliani.org from gerlos on Vimeo.

Le costellazioni e Giove sorgono dall'orizzonte Est a Piano Battaglia. Il mio primo video time lapse astronomico, ricavato da 4 ore di riprese con una Canon 20D collegata al MacBook Pro con Kubuntu e gphoto2. E
laborazione con imagemagick, ffmpeg e kdenlive.

Per approfondire la tecnica: http://gerlos.altervista.org/pinguino-fotografo/video-time-lapse/time-lapse-canon-20da-1
Grazie a Gianni P. dell'AIDA di Ragusa per l'aiuto in fase di acquisizione.

Cieli sereni a tutti