2010-09-04 12 views
8

¿Hay alguna forma de averiguar o calcular el campo de visión (FOV) que tiene una cámara iPhone mediante llamadas a las API? ¿O es algo que tienes que descubrir física y manualmente por ti mismo?iPhone SDK - obtener/calcular el campo de visión de la cámara (FOV) (Realidad Aumentada)

Si no se puede recuperar o calcular con las API, sino que debe codificarse en una aplicación, ¿cuál es la mejor forma de averiguar en qué tipo de dispositivo se está ejecutando una aplicación? Diferentes dispositivos tienen diferentes FOV (iPhone 4 tiene FOV más grande que las versiones anteriores). Además, ¿qué tan grandes son los FOV de cada dispositivo, exactamente?

Pregunto porque estoy pensando en hacer una aplicación de realidad aumentada, y conocer el campo de visión es esencial.

Respuesta

2

Este answer utiliza cierta información matemática y de la cámara para determinar un valor.

En cuanto a ARKit se hardcodes .7392 radianes (42,35 grados). Cuando estaba investigando AR, simplemente levanté la cámara del teléfono y alineé los bordes con algunos puntos de referencia y luego medí el ángulo. Mi estimación en un 3GS fue de 48 grados en paisaje y 39 grados en retrato. Mi estimación en un iPhone 4 es 58 en el paisaje y 48 grados en el retrato.

Buscando en Internet parece que hay muchas diferencias. Esto podría ser explicado por personas que tienen diferentes modelos del teléfono. No he encontrado ninguna fuente oficial de información sobre este tema de Apple.

Si fuera a hacer esto de nuevo, tomaría prestados los diferentes modelos de teléfono y usaría un sistema de medición contra hitos en el horizonte. Nada puede vencer los números duros que midió usted mismo.

Mi método de estimación es el siguiente: Párese a 10 pies de una pared y mire la imagen en la pantalla. Observe los puntos en la pared en el lado izquierdo y derecho de la imagen y mida la distancia. Luego use la trigonometría para calcular el ángulo. Si a es la distancia desde la pared y o es la longitud medida a lo largo de la pared, entonces tan (A) = (o/2)/a, que es la mitad del ángulo.

ACTUALIZACIÓN: He reparado algunos cálculos incorrectos y he agregado el iPhone 4 y cómo he medido.

+0

Yo también he notado las diferentes afirmaciones, y estaba pensando lo mismo, pero me gustaría evitar la molestia de conseguir dispositivos si pudiera. – quano

+1

Sus valores son incorrectos: .7392 rad! = 133 grados ... es alrededor de 42 grados. ¿Cómo se comporta con 95deg para 3GS?Un índice de 95 significa que el dispositivo tendría un ángulo increíblemente amplio. – rockeye

+0

Tiene razón, cometí un error en mis cálculos de ángulos. Los corrigí, incluí mis métodos y agregué mis datos para el iPhone 4. Gracias. –

4

Tomé una foto de una hoja de papel que había medido desde lejos y que también he medido. Luego miré la relación entre el tamaño del papel y su imagen en la foto.

Mis valores fueron de 56 cm se puede fotografiar por completo (es decir, por lo que ocupa exactamente el tamaño de la pantalla) un objeto que está cerca de 40cm x 60cm

Usando que he hecho un poco de trigonometría simple y llegué a: Vertical FOV: 2 * atan (58.5/2/56.5) -> ~ 55 grados FOV horizontal: 2 * atan (21.5/2 /56.5) -> 42 grados

+0

¿Qué dispositivo usaste? – quano

+0

Usé un iPhone 4 que tiene una relación de aspecto de cámara de 4/3 que está bastante bien con 55/42 – twerdster

+0

FOV vertical: 2 * atan (58.5/2/56.5) -> ~ 55 degrees ??? Hay algo mal con esta matemática ... – SpaceDog

1

Obtengo 47.1539 grados en la dimensión larga en una iphone 3gs.

0

Simplemente puede preguntar:

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

Recuerde que este es el campo de visión horizontal y así ahora, para los recién llegados, que tienen la Arkit.

Cuestiones relacionadas