Калибровка камеры
Калибровка камеры — это задача получения внутренних и внешних параметров камеры по имеющимся фотографиям или видео, отснятыми ею.
Калибровка камеры часто используется на начальном этапе решения многих задач компьютерного зрения и в особенности дополненной реальности. Кроме того, калибровка камеры помогает исправлять дисторсию на фотографиях и видео[1].
Параметры модели камеры
Как правило, для представления 2D-координат точки на плоскости используется вектор-столбец вида [math]\displaystyle{ [u\,v\,1]^\top }[/math], а для задания положения 3D-точки в мировых координатах — [math]\displaystyle{ [x_w\, y_w\, z_w\,1]^\top }[/math]. Нужно отметить, что эти выражения записаны в расширенной нотации однородных координат, которая является самой распространённой в робототехнике и задачах трансформации твёрдых тел. В частности, в модели камеры-обскуры матрица камеры используется для проецирования точек трёхмерного пространства на плоскость изображения:
- [math]\displaystyle{ z_{c}\begin{bmatrix}
u\\
v\\
1\end{bmatrix}=A \begin{bmatrix}
R & T\end{bmatrix}\begin{bmatrix}
x_{w}\\
y_{w}\\
z_{w}\\
1\end{bmatrix} }[/math]
где Zc - произвольный масштабный коэффициент
Параметры внутренней калибровки
- [math]\displaystyle{ A=\begin{bmatrix} \alpha_{x} & \gamma & u_{0}\\ 0 & \alpha_{y} & v_{0}\\ 0 & 0 & 1\end{bmatrix} }[/math]
Матрица внутренней калибровки A содержит 5 значимых параметров. Эти параметры соответствуют фокусному расстоянию, углу наклона пикселей и принципиальной точке (точка пересечения плоскости изображения с оптической осью, совпадающая с центром фотографии. В реальных камерах, как правило, бывает немного смещена из-за оптических искажений). В частности, [math]\displaystyle{ \alpha_{x} }[/math] и [math]\displaystyle{ \alpha_{y} }[/math] соответствуют фокусному расстоянию, измеренному в ширине и высоте пикселя, [math]\displaystyle{ u_{0} }[/math] и [math]\displaystyle{ v_{0} }[/math] — координатам принципиальной точки, а [math]\displaystyle{ \gamma = {\alpha _y}*\tan \varphi }[/math], где [math]\displaystyle{ \varphi }[/math] — угол наклона пикселя[2].
Нелинейные параметры внутренней калибровки, такие как коэффициенты дисторсии, также имеют важное значение, хотя и не могут быть включены в линейную модель, описываемую матрицей внутренней калибровки. Большинство современных алгоритмов калибровки камеры определяет их вместе с параметрами линейной части модели.
Параметры внутренней калибровки относятся только к камере, но не к сцене, поэтому они изменяются только в том случае, когда меняются соответствующие настройки камеры.
Параметры внешней калибровки
[math]\displaystyle{ \textbf R,T }[/math] (где [math]\displaystyle{ \textbf R }[/math] — вектор 1 × 3 или матрица 3 × 3 поворота, [math]\displaystyle{ \textbf T }[/math] — вектор 3 × 1 переноса) — параметры внешней калибровки, определяющие преобразование координат, переводящее координаты точек сцены из мировой системы координат в систему координат, связанную с камерой[2]. Или, что эквивалентно предыдущему определению, параметры внешней калибровки задают положение камеры в мировой системе координат.
Параметры внешней калибровки связаны непосредственно с фотографируемой сценой, поэтому (в отличие от параметров внутренней калибровки) каждой фотографии соответствует свой набор этих параметров.
Модель камеры
При использовании камеры свет из снимаемой сцены фокусируется и захватывается. Этот процесс уменьшает число измерений у данных, получаемых камерой, с трёх до двух (свет из трёхмерной сцены преобразуется в двухмерное изображение). Поэтому каждый пиксель на полученном изображении соответствует лучу света исходной сцены. Во время калибровки камеры происходит поиск соответствия между трёхмерными точками сцены и пикселями изображения.
В случае идеальной камеры-обскуры для задания такого соответствия достаточно одной матрицы проекции. Однако в случае более сложных камер искажения, вносимые линзами, могут сильно повлиять на результат. Таким образом, функция проецирования принимает более сложный вид и часто записывается как последовательность преобразований, например:
[math]\displaystyle{ x = I \times Dist(E \times X) }[/math], где
- [math]\displaystyle{ X = [x_w\, y_w\, z_w\,1]^\top }[/math] — координаты исходной точки сцены;
- [math]\displaystyle{ x = [u\,v\,1]^\top }[/math] — координаты пикселя на изображении;
- [math]\displaystyle{ E =\left[ {\begin{array}{*{20}{c}} R & T \\ {0_3^T} & 1 \\ \end{array}} \right] }[/math] — матрица внешней калибровки (где [math]\displaystyle{ R }[/math] — матрица поворота 3 × 3, [math]\displaystyle{ T }[/math] — вектор переноса 3 × 1);
- [math]\displaystyle{ Dist }[/math] — функция применения дисторсии;
- [math]\displaystyle{ I=\begin{bmatrix} \alpha_{x} & \gamma & u_{0}\\ 0 & \alpha_{y} & v_{0}\\ 0 & 0 & 1\end{bmatrix} }[/math] — матрица внутренней калибровки.
Алгоритмы калибровки камеры
Существует несколько различных подходов к решению задачи калибровки.
- Классический подход — алгоритм Roger Y. Tsai[3]. Он состоит из двух этапов, на первом из которых определяются параметры внешней калибровки, на втором — внутренней калибровки и дисторсии.
- «Новая гибкая технология калибровки камеры»[4], которая была разработана Zhengyou Zhang и основана на использовании плоского калибровочного объекта в виде шахматной доски.
- Автокалибровка — получение калибровочных данных непосредственно по изображениям, причём в сцене не требуется присутствие специальных калибровочных объектов.
Алгоритм калибровки одной камеры, а также алгоритм стереокалибровки реализован в библиотеке OpenCV.
Автокалибровка
Основные шаги данного метода:
- Поиск особых точек на всех изображениях. Для этой цели может использоваться, например, уголковый детектор Харриса.
- Поиск точечных соответствий между изображениями. Для этого можно, например, воспользоваться сравнением SIFT-дескрипторов найденных особых точек. В результате на каждом изображении находится набор пикселей, которые соответствуют одним и тем же трёхмерным точкам сцены.
- После этого с помощью алгоритма Bundle Adjustment на основе данных о точечных соответствиях производится одновременный поиск и параметров калибровки, и 3D-координат этих особых точек в сцене.
Примечания
- ↑ Бесплатная программа для устранения дисторсии . Дата обращения: 24 марта 2015. Архивировано 2 апреля 2015 года.
- ↑ 2,0 2,1 Антон Конушин. Геометрические свойства нескольких изображений // Компьютерная графика и мультимедиа (сетевой журнал). — 2006. — № 4(3). Архивировано 23 июля 2009 года.
- ↑ Алгоритм Roger Y. Tsai . Дата обращения: 17 мая 2010. Архивировано 5 ноября 2015 года.
- ↑ Z. Zhang, «A flexible new technique for camera calibration'» Архивная копия от 3 декабря 2015 на Wayback Machine, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol.22, No.11, pages 1330—1334, 2000