Danilo Poccia - Tecnologia et al.

martedì gen 16, 2007

Calcolare la profondità di campo di una fotografia sul proprio cellulare

Per chi come me vuole (poter) verificare la profondità di campo prima di scattare una foto, ho preparato una semplice applicazione Java ME, utilizzabile con un telefono cellulare, che effettua tutti i calcoli necessari per ottenere la distanza iperfocale ad una determinata focale ed apertura e, indicando anche la distanza effettiva di messa a fuoco, le distanze minime e massime in cui tale messa a fuoco è "accettabile".

 

L'applicazione è in inglese e la si può scaricare ed installare sul proprio telefono cellulare (se predisposto per applicazioni Java, lo sono quasi tutti) dal seguente link:

Per distanza iperfocale (in inglese hyperfocal distance) si intende la distanza minima in cui mettendo a fuoco un obiettivo all'infinito si ha ancora un livello di dettaglio accettabile. Tale distanza dipende dalla focale (17mm, 50mm, 105mm, ...) e dall'apertura (f/2.8, f/4, f/8, ...) utilizzate. Una proprietà interessante della distanza iperfocale è che mettendo a fuoco un obiettico a tale distanza si massimizza la profondità di campo, in quando la distanza minima di messa a fuoco accettabile è uguale alla metà della distanza iperfocale e la distanza massima di messa a fuoco accettabile rimane all'infinito.

Per dare un senso alla precedente definizione è importante definire cosa si intende per messa a fuoco "accettabile": è una stima soggettiva che dipende dal tipo di strumento utilizzato per scattare la foto e dal mezzo con cui si la si guarda (e quindi ad esempio dalla dimensione della stampa, dall'ingrandimento della foto sullo schermo, ...). Difatti si definisce, prendendolo in prestito dall'ottica, il "cerchio di confusione" (in inglese circle of confusion o "CoC") come l'area coperta sulla pellicola (o sul sensore nella fotografia digitale) da un cono di raggi luminosi non perfettamente a fuoco. Se tale dimensione è minore di quella percepibile allora l'immagine è considerata a fuoco.

Utilizzando le seguenti formule (reperibili qui) è possibile stimare tali distanze:

  • distanza iperfocale
    H = (f 2/Nc) + f
  • distanza minima di messa a fuoco accettabile
    Dmin = s(H - f)/(H + s - 2f)
  • distanza massima di messa a fuoco accettabile
    Dmax = s(H - f)/(H - s)

dove:

  • H è la distanza iperfocale, in mm
  • f è la lunghezza focale delle lenti , in mm
  • s è la distanza di messa a fuoco, in mm
  • Dmin è la minima distanza di messa a fuoco accetabile, in mm
  • Dmax è la massima distanza di messa a fuoco accettabile, in mm
  • N è l'apertura (ad esempio per f/4 si ha N=4)
  • c è la dimensione del massimo cerchio di confusione accettabile, in mm

Per le fotocamere reflex 35mm solitamente si sceglie un valore di c compreso tra 0.025 e 0.030 mm. Per i sistemi digitali con sensore 1.5-1.6 volte più piccolo di una 35mm (ad esempio la maggior parte delle fotocamere digitali reflex Canon e Nikon di tipo consumer) è corretto un valore di c compreso tra 0.015 e 0.020. Si possono comunque fare delle prove ed eventualmente scegliere un valore ancora minore (e quindi più cautelativo dal punto di vista della qualità della messa a fuoco) considerando comunque che al di sotto di un certo valore non si noteranno differenze nelle foto.

 

Comments:

ciao, dopo tante ricerche su internet ho trovato la tua pagina con questo utilissimo programmino (mobileDOF). il problema che sembra non voler funzionare sul mio nokia 6600. puoi spiegarmi cortesemente come installarlo? grazie in anticipo. Matteo

Posted by Matteo on giugno 14, 2007 at 08:30 AM CEST #

Io ho testato l'applicazione solo sul mio cellulare (Nokia E70) e funziona. Per l'installazione è sufficiente dare in pasto il file con estensione "jar" al "Nokia Installer" che è incluso nella "Nokia PC Suite". Fammi sapere se hai problemi! Saluti, Danilo.

Posted by Danilo Poccia on giugno 15, 2007 at 10:09 AM CEST #

...mi sa che nel compilare la midlet con Netbeans ho specificato "MIDP 2.0", anche se non è necessario. Puoi verificare se il tuo device non lo supporta (e si ferma a "MIDP 1.x"). In tal caso posso produrre un nuovo JAR che dovrebbe risolvere il problema. Fammi sapere... Saluti, Danilo.

Posted by Danilo Poccia on giugno 15, 2007 at 04:58 PM CEST #

come lo si installa sul cellulare??? rispondi pure via mail grazie

Posted by marco on luglio 06, 2007 at 11:02 AM CEST #

Strumento utilissimo.
Non mi trovo con il CoC indicato per la mia fotocamera, Canon 30D, in 0.019.
C'e' molta differenza di calcolo utilizzando il valore 0.020 proposto dall'interfaccia ?
Complimenti, Aonio

Posted by Aonio Paleario on ottobre 02, 2007 at 02:30 PM CEST #

Con un valore di CoC di 0.020 la differenza è minima... se però utilizzi spesso ingrandimenti e/o crop ti consiglio un valore di 0.015 (disponibile dall'interfaccia) così vai sul sicuro.

Posted by Danilo Poccia on ottobre 02, 2007 at 07:17 PM CEST #

Grande applicazione, Proprio quello che cercavo! L'ho installata sul mio Nokia 6234 senza problemi. Grazie!

Posted by Christian on febbraio 09, 2008 at 10:58 AM CET #

potresti condividere la tua applicazione su sharejar.com? Così hai anche la possibilità di farla scaricare via wap.
Ciao e complimenti.

Posted by Simone on marzo 09, 2008 at 06:24 PM CET #

Idea molto intelligente e utile... io ho installato l'applicazione sul mio Samsung, ma c'è un problema: sul mio modello (SGH-F330), così come del resto sugli ultimi modelli nokia, non esiste un vero e proprio tasto di cancellazione (tipo "clear" o "c")... sono i tasti in alto a destra e sinistra che di volta in volta assumono quella ed altre funzioni, a seconda dell'ambiente in cui ci si trova... quindi la conclusione è che non si riescono a cancellare i valori di default della focale (17mm) e della distanza di messa a fuoco (1m) per inserirne di nuovi...peccato, per il resto funziona bene... vorrei avere un po' di tempo per provare a vedere se riesco a modificare il programma, ma non sono molto pratico di JAVA ME... spero di essere stato comprensibile... grazie comunque per il tuo impegno! Ciao!

PS: ...oppure sono io che non ho capito qualcosa e c'è comunque il modo di cancellare i valori... ma non mi sembra...

Posted by scarlett on giugno 11, 2008 at 02:41 PM CEST #

...problema risolto... ho modificato un po' il programma a intuito e ora funziona anche sul mio cellulare...
ti segnalo anche un baco che ho corretto: se inserisci ad esempio focale=300mm e distanza=60m con f/8 o maggiore, si genera un'exception: è dovuto al fatto che il risultato delle operazioni è senza decimali e al modo in cui hai deciso di eseguire il troncamento al secondo decimale lavorando sulle stringhe...
se ti interessa la mia versione modificata del tuo programma contattami!
ciao e grazie ancora per la tua MIDlet!

Posted by scarlett on giugno 16, 2008 at 05:21 PM CEST #

Ottima applicazione, testata con successo su un Ericsson K550i, un solo dubbio, x una fotocamera come la 30d, devo mettere la lunghezza focale cosi come indicata sull'obiettivo o dvo moltiplicare x 1,6?
grazie

Posted by Enrico on settembre 27, 2008 at 10:03 PM CEST #

Ciao Enrico, devi utilizzare la lunghezza focale così come indicata sull'obiettivo. Il fatto che tu stia utilizzando un sensore più piccolo di 35mm lo indichi con il valore di c scelto (v. utimo paragrafo del post). Saluti,
Danilo.

Posted by 192.9.112.196 on settembre 29, 2008 at 11:32 AM CEST #

Davvero complimenti...Molto utile...Testato sul BlackBerry Storm 8500 e funziona molto bene...Unica pecca e' il layout che viene adattato al modo di visualizzazione del telefono per cui e' un po' bruttino da vedere...Ma in fondo...Chissene... ;)

Posted by David on giugno 02, 2009 at 10:53 PM CEST #

testato su Nokia Navigator, funziona benissimo ... semplice ed estremamente funzionale. Un grazie vivissimo anche da parte mia

Posted by mauro on agosto 11, 2009 at 03:02 PM CEST #

ciao,ottima applicazione,perfetta su nokia n80!
senti,questo è un pò off topic,usando una vecchia lubitel 166u ed essendo sprovvisto di esposimetro mi trovo un pò in difficoltà ad esporre correttamente visto che ormai con le macchine moderne i conti non li fai più..non è che per caso avresti la possibilità di fare un programmino anche per calcolare l'esposizione?una volta davano le tabelline coi rullini con i vari scenari(neve,sole,nuvoloso..)ma non riesco a trovarle ne a casa ne online..grazie in anticipo!

Posted by Vi on novembre 22, 2009 at 05:00 PM CET #

Una regola empirica dice che in una giornata di sole con apertura f/16 si può usare una esposizione che è il reciproco della sensibilità della pellicola in ISO. Quindi ad esempio con 100 ISO si espone per 1/100 di secondo. Puoi estrapolare i tempi per altre aperture mantenendo costante il prodotto apertura * esposizione. Nell'esempio precedente se si imposta una apertura f/8 con 100 ISO allora i tempi di esposizione si dimezzano (1/200 di secondo). Per altre condizioni climatiche ti consiglio di ridurre di un paio di stop o più, in base all'esperienza o con un esposimetro esterno.

Posted by Danilo Poccia on novembre 23, 2009 at 09:36 AM CET #

Post a Comment:
  • HTML Syntax: NOT allowed





    follow me on Twitter

    Calendar

    Feeds

    Search

    Blogroll

    Navigation

    Referrers

    Recent Entries