В данной статье содержатся базовые сведения о математическом аппарате, используемом в стерео зрении. Идея ее написания появилась после того как я начал работать с методами стерео зрения, в частности использовать алгоритмы реализованные в OpenCV. Эти алгоритмы зачастую ссылаются на различные понятия, такие как "фундаментальная матрица", "эпиполярная геометрия", "триангуляция". Существуют очень хорошие книжки по компьютерному зрению, в которых описывается, в том числе и стерео зрение и все необходимые понятия, но в них, нередко, бывает представлено слишком много информации для новичка. Здесь же, в краткой форме изложены базовые сведения о том, как работает стерео зрение и основные связанные с ним необходимые понятия:
Для понимания содержимого статьи достаточно иметь общее представление об аналитической геометрии и линейной алгебре: знать, что такое матрица, вектор, скалярное и векторное произведение.
Для дальнейшего изложения в основном понадобиться понимание аналитического подхода к проективной геометрии, и именно он и изложен ниже.
Точки проективной плоскости. Рассмотрим двухмерное проективное пространство (которое еще называется проективной плоскостью). В то время как на обычной Евклидовой плоскости точки описываются парой координат (x,y)T, на проективной плоскости точки описываются трехкомпонентным вектором (x,y,w)T. При этом для любого ненулевого числа a, векторы (x,y,w)T и (ax, ay, aw)T соответствуют одной и той же точке. А нулевой вектор (0,0,0)T не соответствует никакой точке и выкидывается из рассмотрения. Такое описание точек плоскости называется однородными координатами (homogeneous coordinates).
Точкам проективной плоскости можно сопоставить точки обычной Евклидовой плоскости. Координатному вектору (x,y,w)T при w 0 сопоставим точку Евклидовой плоскости с координатами (x/w, y/w)T. Если же w = 0, т.е. координатный вектор имеет вид (x, y, 0T), то будем говорить, что эта точка в бесконечности. Таким образом, проективную плоскость можно рассматривать как Евклидовую плоскость, дополненную точками из бесконечности.
Перейти от однородных координат (x, y, w)T к обычным Евклидовым можно путем деления координатного вектора на последнюю компоненту и последующего ее отбрасывания (x,y,w)T (x/w,y/w)T. А от Евклидовых координат (x,y)T перейти к однородным можно за счет дополнения координатного вектора единичкой: (x,y)T (x,y,1)T
Прямые на проективной плоскости. Любая прямая на проективной плоскости описывается, подобно точке, трехкомпонентным вектором l = (a,b,c)T. Опять же вектор, описывающий прямую, определен с точностью до ненулевого множителя. При этом уравнение прямой будет иметь вид: lT x = 0.
В случае, когда a2 + b2 0 мы имеем аналог обычной прямой ax + by + c = 0. А вектор (0,0,w) соответствует прямой лежащей в бесконечности.
Трехмерное проективное пространство. По аналогии с проективной плоскостью, точки трехмерного проективного пространства определяются четырехкомпонентным вектором однородных координат (x,y,z,w)T. Опять же для любого ненулевого числа a, координатные вектора (x,y,z,w)T и (ax,ay,az,aw)T соответствуют одной и той же точке.
Как в случае проективной плоскости, между точками трехмерного Евклидова пространства и трехмерного проективного пространства можно установить соответствие. Вектору однородных координат (x,y,z,w)T при w 0 соответствует точка Евклодова пространства с координатами (x/w,y/w,z/w)T. А про точку с вектором однородных координат вида (x,y,z,0)T говорят, что она лежит в бесконечности.
Проективное преобразование. Еще одна вещь, которая потребуется для дальнейшего изложения — это проективные преобразования (homography, projective transformation — в англ. литературе). С геометрической точки зрения, проективное преобразование — это обратимое преобразование проективной плоскости (или пространства), которое переводит прямые в прямые. В координатах, проективное преобразование выражается в виде невырожденной квадратной матрицы H, при этом координатный вектор x переходит в координатный вектор x' по следующей формуле: x' = H x.
Формула проецирования имеет простую математическую запись в однородных координатах:
Матрица P выражается следующим образом P = KR[ I | -c] = K[R|t], где K — верхняя треугольная матрица внутренних параметров камеры размера 3 3 (конкретный вид приведен ниже), R — ортогональная матрица размера 3 3, определяющая поворот камеры относительно глобальной системы координат, I — единичная матрица размера 3 3, вектор c — координаты центра камеры, а t = Rc.
Стоит отметить, что матрица камеры определена с точностью до постоянного ненулевого множителя, который не изменит результатов проецирования точек по формуле x = P X. Однако этот постоянный множитель обычно выбирается так, что бы матрица камеры имела вышеописанный вид.
В самом простейшем случае, когда центр камеры лежит в начале координат, главная ось камеры сонаправлена оси Cz, оси координат на плоскости камеры имеют одинаковый масштаб (что эквивалентно квадратным пикселям), а центр изображения имеет нулевые координаты, матрица камеры будет равна P = K[I|0], где
Помимо этого, в силу неидеальности оптики, на изображениях, полученных с камер, присутствуют искажения-дисторсии (distortion). Данные искажения имеют нелинейную математическую запись:
- проективная геометрия и однородные координаты
- модель камеры
- эпиполярная геометрия (epiporal geomerty), фундаментальная и существенная матрицы (fundamental matrix, essential matrix)
- триангуляция стереопары точек
- карта глубины(depth map), карта смещений(disparity map) и идея, лежащая в основе ее вычисления
Для понимания содержимого статьи достаточно иметь общее представление об аналитической геометрии и линейной алгебре: знать, что такое матрица, вектор, скалярное и векторное произведение.
1 Проективная геометрия и однородные координаты
В геометрии стерео зрения значительную роль играет проективная геометрия. К проективной геометрии есть несколько подходов: геометрический (подобно Евклидовой геометрии ввести понятие геометрических объектов, аксиом и из этого выводить все свойства проективного пространства), аналитический (рассматривать все в координатах, как в аналитическом подходе к Евклидовой геометрии), алгебраический.Для дальнейшего изложения в основном понадобиться понимание аналитического подхода к проективной геометрии, и именно он и изложен ниже.
Точки проективной плоскости. Рассмотрим двухмерное проективное пространство (которое еще называется проективной плоскостью). В то время как на обычной Евклидовой плоскости точки описываются парой координат (x,y)T, на проективной плоскости точки описываются трехкомпонентным вектором (x,y,w)T. При этом для любого ненулевого числа a, векторы (x,y,w)T и (ax, ay, aw)T соответствуют одной и той же точке. А нулевой вектор (0,0,0)T не соответствует никакой точке и выкидывается из рассмотрения. Такое описание точек плоскости называется однородными координатами (homogeneous coordinates).
Точкам проективной плоскости можно сопоставить точки обычной Евклидовой плоскости. Координатному вектору (x,y,w)T при w 0 сопоставим точку Евклидовой плоскости с координатами (x/w, y/w)T. Если же w = 0, т.е. координатный вектор имеет вид (x, y, 0T), то будем говорить, что эта точка в бесконечности. Таким образом, проективную плоскость можно рассматривать как Евклидовую плоскость, дополненную точками из бесконечности.
Перейти от однородных координат (x, y, w)T к обычным Евклидовым можно путем деления координатного вектора на последнюю компоненту и последующего ее отбрасывания (x,y,w)T (x/w,y/w)T. А от Евклидовых координат (x,y)T перейти к однородным можно за счет дополнения координатного вектора единичкой: (x,y)T (x,y,1)T
Прямые на проективной плоскости. Любая прямая на проективной плоскости описывается, подобно точке, трехкомпонентным вектором l = (a,b,c)T. Опять же вектор, описывающий прямую, определен с точностью до ненулевого множителя. При этом уравнение прямой будет иметь вид: lT x = 0.
В случае, когда a2 + b2 0 мы имеем аналог обычной прямой ax + by + c = 0. А вектор (0,0,w) соответствует прямой лежащей в бесконечности.
Трехмерное проективное пространство. По аналогии с проективной плоскостью, точки трехмерного проективного пространства определяются четырехкомпонентным вектором однородных координат (x,y,z,w)T. Опять же для любого ненулевого числа a, координатные вектора (x,y,z,w)T и (ax,ay,az,aw)T соответствуют одной и той же точке.
Как в случае проективной плоскости, между точками трехмерного Евклидова пространства и трехмерного проективного пространства можно установить соответствие. Вектору однородных координат (x,y,z,w)T при w 0 соответствует точка Евклодова пространства с координатами (x/w,y/w,z/w)T. А про точку с вектором однородных координат вида (x,y,z,0)T говорят, что она лежит в бесконечности.
Проективное преобразование. Еще одна вещь, которая потребуется для дальнейшего изложения — это проективные преобразования (homography, projective transformation — в англ. литературе). С геометрической точки зрения, проективное преобразование — это обратимое преобразование проективной плоскости (или пространства), которое переводит прямые в прямые. В координатах, проективное преобразование выражается в виде невырожденной квадратной матрицы H, при этом координатный вектор x переходит в координатный вектор x' по следующей формуле: x' = H x.
2 Модель проективной камеры
Современные CCD-камеры хорошо описываются с помощью следующей модели, называемой проективной камерой (projective camera, pinhole camera). Проективная камера определяется центром камеры, главной осью — лучом начинающимся в центре камеры и направленным туда, куда камера смотрит, плоскостью изображения — плоскостью на которую выполняется проецирование точек, и системой координат на этой плоскости. В такой модели, произвольная точка пространства X проецируется на плоскость изображения в точку x лежащую на отрезке CX, который соединяет центр камеры C с исходной точкой X (см. рис. 1).
Рисунок 1: Модель камеры. C — центр камеры, Cp — главная ось камеры. Точка X трехмерного пространства проецируется в точку x — на плоскости изображения.
Формула проецирования имеет простую математическую запись в однородных координатах:
где X — однородные координаты точки пространства, x — однородные координаты точки плоскости, P — матрица камеры размера 3 4.
x = P X
Матрица P выражается следующим образом P = KR[ I | -c] = K[R|t], где K — верхняя треугольная матрица внутренних параметров камеры размера 3 3 (конкретный вид приведен ниже), R — ортогональная матрица размера 3 3, определяющая поворот камеры относительно глобальной системы координат, I — единичная матрица размера 3 3, вектор c — координаты центра камеры, а t = Rc.
Стоит отметить, что матрица камеры определена с точностью до постоянного ненулевого множителя, который не изменит результатов проецирования точек по формуле x = P X. Однако этот постоянный множитель обычно выбирается так, что бы матрица камеры имела вышеописанный вид.
В самом простейшем случае, когда центр камеры лежит в начале координат, главная ось камеры сонаправлена оси Cz, оси координат на плоскости камеры имеют одинаковый масштаб (что эквивалентно квадратным пикселям), а центр изображения имеет нулевые координаты, матрица камеры будет равна P = K[I|0], где
У реальных CCD камер пикселы обычно незначительно отличаются от квадратных, а центр изображения имеет ненулевые координаты. В таком случае матрица внутренних параметров примет вид:
Коэффициенты f, x, y — называются фокусными расстояниями камеры (соответственно общим и вдоль осей x и y).
Помимо этого, в силу неидеальности оптики, на изображениях, полученных с камер, присутствуют искажения-дисторсии (distortion). Данные искажения имеют нелинейную математическую запись:
где k1, k2, p1, p2, k3 — коэффициенты дисторсии, являющиеся параметрами оптической системы; r2 = x'2 + y'2; (x', y') — координаты проекции точки относительно центра изображения при квадратных пикселях и отсутствии искажений; (x