Come conoscere o calcolare la profondità di campo di una foto dai tag EXIF?
-
22-07-2019 - |
Domanda
Voglio conoscere la profondità di campo di una foto, preferibilmente in cm o m.
So che possiamo conoscere le impostazioni della fotocamera leggendo i tag EXIF, ma esiste un tag che ci dice direttamente la profondità di campo? O come possiamo calcolarlo da alcuni tag EXIF?
Gli esempi sarebbero apprezzati. Grazie!
Soluzione
Calcolo della profondità di campo:
t = A * (S / 1440) * (D - F) / F ^ 2
La distanza di messa a fuoco vicina = D / (1 + t)
Distanza focale lontana = D / (1-t)
E la profondità di campo è la differenza tra questi.
Le variabili sono:
A = apertura dell'obiettivo (numero F)
S = diagonale del sensore della videocamera o del piano della pellicola in mm
D = distanza di messa a fuoco in mm
F = lunghezza focale dell'obiettivo in mm
Naturalmente, la nitidezza della messa a fuoco è soggettiva e viene regolata modificando la costante nel calcolo del cerchio di confusione (CoC). Qui, ho usato CoC = S / 1440 che è un valore comunemente usato.
Altri suggerimenti
Sto indovinando qui, quindi apprezzerei se qualcun altro possa confermarlo:
Credo che non sia possibile determinare a livello di programmazione la profondità di campo dai dati EXIF ??disponibili: è necessario conoscere la f-stop, la lunghezza focale e questo è fondamentale: la distanza del soggetto.
I campi FNumber
e Focal
ti daranno i primi due. Il terzo non sarebbe normalmente possibile determinare con la fotocamera. Avresti bisogno di un meccanismo per la gamma: alcune attrezzature extra per la fotocamera o alcuni valori noti per la triangolazione.
Questa pagina web http://www.dofmaster.com/dofjs.html ha una spiegazione diretta di ciò che è coinvolto nei calcoli della profondità di campo:
Mi sono imbattuto nelle formule sopra mentre cercavo i calcoli di dof e li ho trovati.
Solo un paio di punti:
-
I valori di t devono essere controllati nel programma. Se
t = 1
, le distanze focali sonoD / 2
e l'infinito nel qual caso D è in realtà la distanza iperfocale(hfd)
. Questo è facilmente dimostrato e fornisce l'hfd come(f ** 2) / (coc * Fnumber)
approssimativamente. -
Se t è maggiore di 1 le tue risposte saranno negative e questo è un risultato insignificante