2010-09-04 10 views
8

C'è un modo per scoprire o calcolare il campo visivo (FOV) che una videocamera iPhone ha attraverso le chiamate alle API? O è qualcosa che devi scoprire fisicamente e manualmente per te stesso?iPhone SDK - ottieni/calcola il campo visivo della telecamera (FOV) (Augmented Reality)

Se non può essere recuperato o calcolato con le API, ma deve invece essere codificato in un'app, qual è il modo migliore per scoprire su quale tipo di dispositivo è in esecuzione un'app? Dispositivi diversi hanno FOV diversi (iPhone 4 ha un FOV più grande rispetto alle versioni precedenti). Inoltre, quanto sono grandi i FOV di ciascun dispositivo, esattamente?

Chiedo perché sto pensando di creare un'app di realtà aumentata e conoscere il FOV è essenziale.

risposta

2

Questo answer utilizza alcune informazioni matematiche e sulla fotocamera per determinare un valore.

Guardando a ARKit hardcodes .7392 radianti (42,35 gradi). Quando stavo facendo ricerche su AR, ho tenuto in mano la fotocamera del telefono, ho allineato i bordi con alcuni punti di riferimento e poi ho misurato l'angolo. La mia stima su un 3GS era di 48 gradi in orizzontale e 39 gradi in verticale. La mia stima su un iPhone 4 è 58 in orizzontale e 48 in verticale.

Cercando in giro su Internet sembrano esserci affermazioni selvaggiamente diverse. Questo potrebbe essere spiegato da persone che hanno diversi modelli di telefono. Non ho trovato alcuna fonte ufficiale di informazioni su questo argomento da Apple.

Se dovessi farlo di nuovo, prenderei in prestito i vari modelli di telefono e utilizzerei un sistema di misurazione dei punti di riferimento all'orizzonte. Niente può battere i numeri difficili che ti sei misurato.

Il mio metodo per la stima è il seguente: Posizionare 10 piedi da un muro e guardare l'immagine sullo schermo. Notare i punti sul muro sul lato sinistro e destro dell'immagine e misurare la distanza. Quindi usa la trigonometria per calcolare l'angolo. Se a è la distanza dal muro e o è la lunghezza misurata lungo il muro, allora abbronza (A) = (o/2)/a, che è la metà dell'angolo.

AGGIORNAMENTO: Ho corretto alcuni calcoli errati e ho aggiunto l'iPhone 4 e il modo in cui ho misurato.

+0

Anche io ho notato le diverse affermazioni, e stavo pensando la stessa cosa, ma vorrei evitare il fastidio di procurarmi dispositivi se potessi. – quano

+1

I tuoi valori non sono corretti: .7392 rad! = 133 gradi ... è di circa 42 gradi. Come si configura con 95deg per 3GS?!Un fov di 95 significa che il dispositivo avrebbe un angolo incredibilmente ampio. – rockeye

+0

Hai ragione, ho fatto un errore nei miei calcoli di angolo. Ho corretto questi, incluso i miei metodi, e ho aggiunto i miei dati per l'iPhone 4. Grazie. –

4

Ho scattato una foto di un pezzo di carta che avevo misurato da una distanza che ho anche misurato. Ho quindi esaminato il rapporto tra la dimensione del pezzo di carta e la sua immagine nella foto.

miei valori erano a 56 cm è possibile fotografare completamente (cioè in modo che occupi esattamente la dimensione dello schermo) un oggetto che è circa 40 cm x 60

Utilizzando che ho fatto qualche semplice trig e arrivato a: FOV verticale: 2 * atan (58,5/2/56,5) -> ~ 55 gradi FOV orizzontale: 2 * atan (21,5/2 /56,5) -> 42 gradi

+0

Quale dispositivo hai usato? – quano

+0

Ho usato un iPhone 4 che ha una proporzione fotocamera di 4/3 che è abbastanza d'accordo con 55/42 – twerdster

+0

FOV verticale: 2 * atan (58,5/2/56,5) -> ~ 55 gradi ??? C'è qualcosa di sbagliato in questa matematica ... – SpaceDog

1

Ottengo 47.1539 gradi nella dimensione lunga su un iPhone 3gs.

0

Si può semplicemente chiedere:

AVCaptureDevice *device = [...] 
NSLog(@"FOV: %lf", device.activeFormat.videoFieldOfView); 

ricordare che questo è il FOV orizzontale e bene ora, per i nuovi arrivati, si ha l'Arkit.

Problemi correlati