Тот же внутренний параметр для той же камеры?

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

Могу ли я предположить, что если я откалибрую свой Nexus 4, все Nexus будут иметь одинаковое фокусное расстояние, коэффициент перекоса и матрицу искажения?

Спасибо


person kakou    schedule 16.09.2013    source источник
comment
если предположить, что все устройства nexus 4 имеют точно такую ​​же камеру да! самое ценное слово здесь именно   -  person Engine    schedule 16.09.2013
comment
В реальной жизни у nexus4 точно такая же камера? Я думаю, нет...?   -  person kakou    schedule 16.09.2013
comment
Если вам не нужна действительно высокая точность, можно с уверенностью предположить одинаковую калибровку для всех этих телефонов.   -  person ChronoTrigger    schedule 16.09.2013


Ответы (3)


Что ж, ответ может быть как ДА, так и НЕТ. Как вы говорите, в реальной жизни ни одна камера не похожа на другую, даже если они произведены одним и тем же производителем. Но, дабы облегчить себе жизнь, да, мы используем это упрощение даже для проектов фотограмметрического/компьютерного зрения, где требования к точности довольно высоки.

person user_3849    schedule 16.09.2013

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

Кроме указанных вами параметров есть еще два для главных точек Cx, Cy (пересечение оптической оси с датчиком, часто близкое к w/2, h/2). Таким образом, всего у вас есть только 3 параметра: F, Cx, Cy, причем первый из них является самым изменчивым среди телефонов одной модели (по моему опыту). Если вы не используете свой телефон для определения относительного положения другой камеры, скорее всего, вам нужно точно знать только фокусное расстояние.

Очевидно, что когда вам нужно беспокоиться об одном параметре, есть более простые способы получить его, чем использовать шахматную доску и пытаться найти внешние параметры в дополнение к внутренним. Вы можете понять это даже без измерений - просто запросите поле зрения камеры (например, getHorizontalViewAngle()) и используйте

tan(fov) = image_width/2 / f

В качестве альтернативы вы можете провести простое измерение, удерживая телефон параллельно цели: для вертикальной цели размером H, которая создает изображение из h пикселей, вы получите f как

f/z = h/H
person Vlad    schedule 26.02.2014

Ну... если у этой камеры есть встроенный автофокус, фокусное расстояние будет все время меняться

person VideoProcessingResearcher    schedule 02.03.2018