2010-09-04 8 views
8

Gibt es eine Möglichkeit, das Sichtfeld (FOV) einer iPhone-Kamera durch Aufrufe der APIs herauszufinden oder zu berechnen? Oder ist es etwas, das Sie physisch und manuell für sich selbst herausfinden müssen?iPhone SDK - Kamera-Sichtfeld (FOV) (Augmented Reality) berechnen/berechnen

Wenn es nicht mit den APIs abgerufen oder berechnet werden kann, sondern in einer App fest codiert werden muss, was ist dann der beste Weg herauszufinden, auf welcher Art von Gerät eine App läuft? Verschiedene Geräte haben ein unterschiedliches Sichtfeld (iPhone 4 hat ein größeres Sichtfeld als frühere Versionen). Wie groß sind die Sichtfelder jedes Geräts genau?

Ich frage, weil ich darüber nachdenke, eine Augmented Reality App zu machen, und das FOV zu kennen ist essentiell.

Antwort

2

Diese answer verwendet einige mathematische und Kamera-Informationen, um einen Wert zu bestimmen.

Mit Blick auf ARKit hardcodes .7392 Radianten (42,35 Grad). Als ich AR untersuchte, hielt ich einfach die Telefonkamera hoch und ordnete die Ränder mit einigen Orientierungspunkten an und maß dann den Winkel. Meine Schätzung auf einem 3GS war 48 Grad im Querformat und 39 Grad im Hochformat. Meine Schätzung auf einem iPhone 4 ist 58 im Querformat und 48 Grad im Hochformat.

Suche im Internet scheint es sehr unterschiedliche Ansprüche. Dies könnte durch Menschen mit verschiedenen Modellen des Telefons erklärt werden. Ich habe von Apple keine offizielle Informationsquelle zu diesem Thema gefunden.

Wenn ich das noch einmal machen würde, würde ich mir die verschiedenen Telefonmodelle ausleihen und ein Messsystem gegen die Orientierungspunkte am Horizont verwenden. Nichts kann harte Zahlen schlagen, die du selbst gemessen hast.

Meine Methode zur Schätzung ist wie folgt: Stellen Sie 10 Fuß von einer Wand und schauen Sie sich das Bild auf dem Bildschirm. Notieren Sie die Punkte an der Wand links und rechts des Bildes und messen Sie die Entfernung. Verwenden Sie dann die Trigonometrie, um den Winkel zu berechnen. Wenn a der Abstand von der Wand und o die Länge entlang der Wand ist, dann tan (A) = (o/2)/a, was die Hälfte des Winkels ist.

UPDATE: Ich habe einige falsche Berechnungen korrigiert und das iPhone 4 hinzugefügt und wie ich gemessen habe.

+0

Auch ich habe die verschiedenen Ansprüche bemerkt, und ich dachte das gleiche, aber ich möchte den Aufwand vermeiden, Geräte zu bekommen, wenn ich könnte. – quano

+1

Ihre Werte sind falsch: .7392 rad! = 133 Grad ... es ist ungefähr 42 Grad. Wie kommst du mit 95deg für 3GS?Ein fov von 95 bedeutet, dass das Gerät einen unglaublich weiten Winkel haben würde. – rockeye

+0

Sie haben Recht, ich habe bei meinen Winkelberechnungen einen Fehler gemacht. Ich habe diese korrigiert, meine Methoden eingeschlossen und meine Daten für das iPhone 4 hinzugefügt. Danke. –

4

Ich habe ein Foto von einem Stück Papier gemacht, das ich aus einer Entfernung gemessen habe, die ich auch gemessen habe. Ich schaute dann auf das Verhältnis der Größe des Blattes Papier zu seinem Bild auf dem Foto.

Meine Werte waren auf 56 cm können Sie sich voll fotografieren (dh so, dass es genau die Bildschirmgröße in Anspruch nimmt) ein Objekt, das ca. 40cm x 60cm

ist, dass ich einige einfache trigonometrische tat und kam zu: Vertikales Sichtfeld: 2 * atan (58.5/2/56.5) -> ~ 55 Grad Horizontales Sichtfeld: 2 * Atan (21.5/2 /56.5) -> 42 Grad

+0

Welches Gerät haben Sie benutzt? – quano

+0

Ich benutzte ein iPhone 4, das ein Kamera-Seitenverhältnis von 4/3 hat, was ziemlich gut mit 55/42 – twerdster

+0

übereinstimmt. Vertikales Sichtfeld: 2 * Atan (58,5/2/56,5) -> ~ 55 Grad ??? Es ist etwas falsch mit dieser Mathematik ... – SpaceDog

1

Ich bekomme 47.1539 Grad in der langen Dimension auf einem Iphone 3 g s.

0

Sie können einfach fragen:

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

Denken Sie daran, dies die horizontale FOV ist und auch jetzt, für Einsteiger, haben Sie die Arkit.