2010-09-04 3 views
8

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

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

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

ответ

2

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

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

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

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

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

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

+0

Я тоже заметил разные претензии, и я думал об одном и том же, но хотел бы избежать хлопот, когда хватаюсь за устройства. – quano

+1

Ваши значения неверны: .7392 рад! = 133 градуса ... это около 42 градусов. Как вы общаетесь с 95deg для 3GS?!A fov 95 означает, что устройство будет иметь невероятно широкий угол. – rockeye

+0

Вы правы, я допустил ошибку в моих расчетах угла. Я исправил их, включил свои методы и добавил свои данные для iPhone 4. Спасибо. –

4

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

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

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

+0

Какое устройство вы использовали? – quano

+0

Я использовал iPhone 4, который имеет соотношение сторон камеры 4/3, которое хорошо согласуется с 55/42 – twerdster

+0

Вертикальное FOV: 2 * atan (58.5/2/56.5) -> ~ 55 градусов ??? В этой математике что-то не так ... – SpaceDog

1

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

0

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

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

Помните, что это горизонтальная FOV и хорошо сейчас, для новичков, у вас есть Аркыт.