Salta al contenuto
Cento millisecondi garantiti: dove finisce la posa lunga sul telefono (Immagine generata con IA)
Immagine generata con IA

Cento millisecondi garantiti: dove finisce la posa lunga sul telefono

Aprite un’app manuale, cercate il tempo di posa, e la ghiera si ferma. Sul vostro telefono arriva a mezzo secondo. Su quello dell’amico che vi ha convinto a comprare il treppiede arriva a trenta, e su un terzo modello il comando resta proprio grigio. Quel numero sta molto più in basso, in una caratteristica che il sistema operativo legge dall’hardware e consegna a chiunque la chieda, e le due piattaforme la raccontano in modi abbastanza diversi da giustificare mezz’ora passata sulla documentazione.

Cento millisecondi, e nient’altro di promesso

Su Android il valore si chiama SENSOR_INFO_EXPOSURE_TIME_RANGE, e la documentazione di Camera2 lo presenta come «l’intervallo di tempi di esposizione per android.sensor.exposureTime supportati da questo dispositivo fotocamera». Unità di misura: nanosecondi. Fin qui è ordinaria amministrazione. Poi arriva la riga sui valori ammessi, e conviene leggerla due volte: «il tempo di esposizione minimo sarà inferiore a 100 us. Per i dispositivi con capacità FULL (android.info.supportedHardwareLevel == FULL), il tempo di esposizione massimo sarà superiore a 100 ms».

Il massimo che la piattaforma garantisce è un decimo di secondo. Vale soltanto per le fotocamere che dichiarano il livello FULL, e tutto quello che avete oltre quel decimo (i due secondi, i dieci, i trenta) ve lo regala il produttore del telefono, non lo standard. La chiave è per giunta marcata «Optional», con la postilla che «il valore per questa chiave può essere null su alcuni dispositivi». Dove è null, il tempo di posa non è una cosa che si possa chiedere: è una cosa che si subisce.

A decidere chi può chiedere è la capacità MANUAL_SENSOR, quella che secondo la documentazione garantisce «il controllo manuale dell’esposizione», della sensibilità e della durata del fotogramma. I dispositivi FULL la dichiarano sempre. Quelli di livello LIMITED possono dichiararla oppure no, mentre per i LEGACY la faccenda è chiusa in partenza, perché «un dispositivo LEGACY non supporta il controllo per fotogramma, il controllo manuale del sensore, l’elaborazione manuale». Google aggiunge una consolazione datata: «i dispositivi usciti inizialmente con Android Q o successivo non includeranno alcun dispositivo di livello LEGACY». Il problema, semmai, si è spostato di lato. Sul telefono la fotocamera principale e le altre sono dispositivi distinti, ciascuno con il proprio livello dichiarato e il proprio intervallo di tempi, e che l’ultragrandangolare arrivi dove arriva la principale è una cosa da verificare prima di uscire. Vale la pena farlo insieme all’altra verifica sulle ottiche, quella su quale obiettivo lavora davvero al buio.

Su iOS il tetto è una proprietà del formato

AVFoundation colloca lo stesso limite in un altro punto dell’albero. Non sta sul dispositivo: sta dentro ogni singolo AVCaptureDevice.Format, l’oggetto che descrive una combinazione di risoluzione, frequenza e modo di funzionamento del sensore. Le due proprietà si chiamano minExposureDuration e maxExposureDuration, e Apple le definisce in una riga ciascuna: «un valore di tempo che indica la durata di esposizione minima supportata», e lo stesso per la massima. Un iPhone espone decine di formati. Ognuno porta con sé il proprio tetto.

Sul campo la conseguenza si tocca con mano: cambiare risoluzione può cambiare il tempo massimo di posa. Se l’app vi lascia scegliere fra il formato binnato e quello a piena risoluzione, la decisione che di notte conviene già prendere in un certo modo si porta dietro anche una ghiera dei tempi potenzialmente diversa. Non è un capriccio del software. Un formato è una modalità di lettura del sensore, e modalità diverse hanno tempi diversi.

Esiste poi activeMaxExposureDuration, che viene scambiata per il tetto vero e riguarda un’altra faccenda. Apple la definisce «la durata massima di esposizione, in secondi, definita nell’algoritmo di autoesposizione»: quando l’esposizione è automatica, il sistema «sceglie una durata massima di esposizione predefinita, tarata sulla configurazione corrente, che bilancia la qualità dell’immagine in scarsa luminosità con la conservazione del movimento». Potete alzarla fino al maxExposureDuration del formato. Conviene però sapere che si rimette a posto da sola, perché «quando cambiano l’activeFormat del dispositivo o il sessionPreset della sessione di acquisizione, questa proprietà torna alla durata massima di esposizione predefinita per il nuovo formato o preset». Chi alza il tetto e poi tocca la risoluzione ricomincia da capo, spesso senza accorgersene.

Il tempo che avete scelto può esservi revocato a metà

La riga più utile di tutta la documentazione sta nel metodo setExposureModeCustom, quello con cui un’app blocca posa e ISO a valori espliciti. Apple avverte: «quando si usa AVCapturePhotoOutput per scattare foto, la proprietà photoQualityPrioritization di AVCapturePhotoSettings ha come valore predefinito balanced, che consente allo scatto di sovrascrivere temporaneamente la durata di esposizione e l’ISO del dispositivo di acquisizione se la scena è abbastanza buia da richiedere la fusione di più immagini per migliorare la qualità».

Rileggetela pensando a voi, al buio, con il treppiede già montato. Avete impostato otto secondi a un guadagno scelto con criterio, e la scena è scura per definizione: la condizione che autorizza il sistema a scavalcarvi è soddisfatta ogni singola volta. Il rimedio esiste ed è uno solo, scritto nella frase successiva: «per garantire che il sistema rispetti i valori di durata di esposizione e ISO del dispositivo in modalità custom o locked, si deve impostare la priorità di qualità della foto su speed». Un’app pensata per l’astrofotografia lo fa. Un’app fotografica generalista che ha aggiunto una modalità manuale può benissimo non farlo, e allora vi ritrovate una serie in cui i fotogrammi non pesano più tutti uguale, che è il modo più silenzioso di rovinare uno stack.

La modalità notte non entra in questa discussione

Viene naturale obiettare che la fotocamera di serie, in modalità notte, tiene aperto dieci secondi senza chiedere il permesso a nessuno. Quella è un’altra macchina. Android la sistema fra le estensioni, un ramo delle API separato dai controlli del sensore, e EXTENSION_NIGHT è definita come «implementazione di un’estensione specifica del dispositivo che mira a sopprimere il rumore e a migliorare la qualità complessiva dell’immagine in condizioni di scarsa illuminazione». Guardate che cosa manca in quella frase. Un tempo. L’estensione promette un risultato e tiene per sé il procedimento, che può essere una raffica sommata o una posa singola, e che può cambiare fra due aggiornamenti del firmware senza che nessuno ve lo dica.

Su iOS la leva pubblica corrispondente si chiama photoQualityPrioritization, e sceglie fra qualità e velocità di consegna. La documentazione elenca le tecniche coinvolte, «ridurre il rumore, preservare il dettaglio in poca luce, congelare il movimento», e non promette mai una durata. Chi sviluppa può chiedere qualità. Quanto resterà aperto l’otturatore lo scoprirà a cose fatte.

Dieci minuti per sapere quanto vi concede il vostro

La prova è banale e si fa in casa, con la luce accesa. Aprite l’app manuale che usate di solito e annotate dove si ferma la ghiera dei tempi, poi ripetete per ogni obiettivo e per ogni risoluzione selezionabile. Vi resta in mano una tabellina di quattro o cinque numeri che descrive il vostro telefono meglio di qualunque scheda tecnica.

Poi verificate che quei numeri vengano rispettati. Scattate una serie di dieci fotogrammi al tempo massimo, aprite gli EXIF di tutti e dieci e confrontate il campo dell’esposizione. Se i valori non coincidono, qualcuno a monte sta decidendo al posto vostro, e adesso sapete anche chi.

Perché il tetto brucia meno di quanto sembri

C’è un motivo per cui questa storia fa meno male di quanto sembri, e sta in un altro limite, più basso, che avete già addosso. Il cielo scorre, e su un grandangolo da 24 mm equivalenti vi concede una manciata di secondi prima che le stelle diventino virgole: quanti esattamente, dipende dalla focale e dalla declinazione del bersaglio. Se il vostro telefono si ferma a trenta secondi, il tetto delle API non lo toccherete mai. Se si ferma a due, siete voi a essere in gabbia, e la gabbia è di silicio.

In mezzo c’è la fascia dove si gioca la partita vera, ed è il motivo per cui su un telefono la strada percorribile resta accumulare fotogrammi più che allungarli. Conviene stare il più vicino possibile al tetto che il vostro telefono concede davvero, invece di inseguire un numero che l’app mostra e il sensore non onora. Il resto lo fa la somma, e su questo il live stacking ha già detto la sua. Chi conosce a memoria il proprio massimo esce di casa con una decisione in meno da prendere al freddo, e al freddo le decisioni si prendono male.

#astrofotografia#smartphone#esposizione#tecnica#sensore

Redazione 3SIGNUM, a cura di Stefano Monticciolo. Come lavoriamo →

Continua a leggere