iPhone SDK - получить / рассчитать поле зрения камеры (FOV) (дополненная реальность) - PullRequest
8 голосов
/ 04 сентября 2010

Есть ли способ узнать или рассчитать поле обзора (FOV) камеры iPhone через вызовы API?Или это что-то, что вы должны физически и вручную выяснить для себя?

Если его нельзя получить или рассчитать с помощью API, а вместо этого нужно жестко запрограммировать в приложении, то каков лучший способузнать, на каком устройстве запущено приложение?Разные устройства имеют разные поля зрения (iPhone 4 имеет большие поля зрения, чем предыдущие версии.) Кроме того, насколько велики поля зрения каждого устройства, точно?

Я спрашиваю, потому что думаю о создании приложения дополненной реальностии знание поля зрения очень важно.

Ответы [ 4 ]

4 голосов
/ 05 октября 2010

Я сфотографировал кусок бумаги, который я измерил с расстояния, которое я тоже измерил.Затем я посмотрел на отношение размера куска бумаги к его изображению на фотографии.

Мои значения были при 56 см. Вы можете полностью сфотографировать (то есть, чтобы он занимал точно размер экрана) иобъект размером примерно 40 см x 60 см

Используя это, я сделал несколько простых действий и достиг: Вертикальное поле зрения: 2 * атан (58,5 / 2 / 56,5) -> ~ 55 градусов Горизонтальное поле зрения: 2 * атан (21,5/ 2 /56,5) -> 42 градуса

2 голосов
/ 05 сентября 2010

Этот ответ использует некоторую информацию по математике и камере для определения значения.

Глядя на ARKit , он жестко кодирует 0,7392 радиана (42,35 градуса). Когда я исследовал AR, я просто поднял телефонную камеру и выровнял края с некоторыми ориентирами, а затем измерил угол. Моя оценка на 3GS была 48 градусов в альбомной и 39 градусов в портретной. Моя оценка для iPhone 4 - 58 в альбомной ориентации и 48 градусов в портретной.

Поиски в интернете, кажется, дико меняются. Это может объясняться людьми, имеющими разные модели телефона. Я не нашел официального источника информации на эту тему от Apple.

Если бы я сделал это снова, я бы позаимствовал различные модели телефонов и использовал бы систему измерения по ориентирам на горизонте. Ничто не может побить жесткие цифры, которые вы сами измерили.

Мой метод оценки следующий: встаньте на 10 футов от стены и посмотрите на изображение на экране. Отметьте точки на стене с левой и правой стороны изображения и измерьте расстояние. Затем используйте тригонометрию для расчета угла. Если a - это расстояние от стены, а o - длина, измеренная вдоль стены, то tan (A) = (o / 2) / a, что составляет половину угла.

ОБНОВЛЕНИЕ: я исправил некоторые неправильные вычисления и добавил iPhone 4 и то, как я измерил.

1 голос
/ 18 сентября 2017

Вы можете просто спросить:

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

Помните, что это горизонтальное поле зрения, и теперь для новичков у вас есть ARKit.

1 голос
/ 19 июля 2012

Я получаю 47,1539 градусов в длинном измерении на iPhone 3gs.

...